matchbox2: Make it working:
authorStanislav Brabec <utx@penguin.cz>
Tue, 22 Sep 2009 23:36:32 +0000 (23:36 +0000)
committerutx@penguin.cz <utx@penguin.cz>
Tue, 22 Sep 2009 23:36:32 +0000 (23:36 +0000)
* fixed known crashers
* created usable icon theme
* provided session script

16 files changed:
conf/distro/include/sane-srcrevs.inc
recipes/matchbox2/matchbox-desktop-2_svn.bb
recipes/matchbox2/matchbox-panel-2-icon-themes/task-switcher.png [new file with mode: 0644]
recipes/matchbox2/matchbox-panel-2-icon-themes/user-desktop.png [new file with mode: 0644]
recipes/matchbox2/matchbox-panel-2-icon-themes_0.0.1.bb [new file with mode: 0644]
recipes/matchbox2/matchbox-panel-2/scaling-image-double-free.patch [new file with mode: 0644]
recipes/matchbox2/matchbox-panel-2/startup-invalid-access.patch [new file with mode: 0644]
recipes/matchbox2/matchbox-panel-2/startup-shown-uninitialized.patch [new file with mode: 0644]
recipes/matchbox2/matchbox-panel-2/themeable-icons.patch [new file with mode: 0644]
recipes/matchbox2/matchbox-panel-2_svn.bb
recipes/matchbox2/matchbox-wm-2/fix-timeout-handler-free.patch [new file with mode: 0644]
recipes/matchbox2/matchbox-wm-2/makefile-vars.patch [new file with mode: 0644]
recipes/matchbox2/matchbox-wm-2_svn.bb [new file with mode: 0644]
recipes/matchbox2/matchbox2/defaults.in [new file with mode: 0644]
recipes/matchbox2/matchbox2/matchbox-session-2.in [new file with mode: 0644]
recipes/matchbox2/matchbox2_2.0.bb [new file with mode: 0644]

index f6f3605..00273b2 100644 (file)
@@ -115,12 +115,14 @@ SRCREV_pn-madbutterfly ?= "ecd1842714b5e982f3138cbdd358517d57be6aa3"
 SRCREV_pn-maemo-mapper ?= "118"
 SRCREV_pn-mamonaim_e_applet ?= "51c747849f71981bd1dc9eb1807df4993ad97d04"
 SRCREV_pn-mamona_input_methods ?= "7e6a8cc947689a045d0fba90015da599275347d9"
-SRCREV_pn-matchbox-desktop-2 ?= "1778"
+SRCREV_pn-matchbox-desktop-2 ?= "2096"
 SRCREV_pn-matchbox-keyboard ?= "1910"
 SRCREV_pn-matchbox-keyboard-inputmethod ?= "1910"
-SRCREV_pn-matchbox-panel-2 ?= "1626"
+SRCREV_pn-matchbox-panel-2 ?= "2098"
+SRCREV_pn-matchbox-panel-2-icon-themes ?= "1907"
 SRCREV_pn-matchbox-stroke ?= "1820"
 SRCREV_pn-matchbox-terminal ?= "1612"
+SRCREV_pn-matchbox-wm-2 ?= "2087"
 SRCREV_pn-midori ?= "400139644371c0b675723f9a986ddab4445a8794"
 SRCREV_pn-moblin-proto ?= "8f2cb524fe06555182c25b4ba3202d7b368ac0ce"
 SRCREV_pn-moko-gtk-engine ?= "4734"
index 8dc74ef..21581e9 100644 (file)
@@ -2,26 +2,15 @@ DESCRIPTION = "Matchbox Window Manager Desktop"
 LICENSE = "GPL"
 SECTION = "x11/panels"
 DEPENDS = "gtk+ startup-notification"
-
-PV = "0.1+svnr${SRCREV}"
+RDEPENDS = "matchbox-common"
+PV = "2.0+svnr${SRCREV}"
 PR = "r0"
 
+inherit autotools_stage pkgconfig
+
 SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http"
 S = "${WORKDIR}/${PN}"
 
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--enable-startup-notification --disable-libnotify"
-
-PARALLEL_MAKE = ""
-
-# matchbox-<anything>-2 aims to replace their -1 counterpart, but at this point in time it's unfinished and unusable,  so make it parallel installable
-do_install_append() {
-    mv ${D}${bindir}/matchbox-desktop ${D}${bindir}/matchbox-desktop-2
-}
-
-do_stage() {
-    autotools_stage_all
-}
-
+#PARALLEL_MAKE = ""
 
+EXTRA_OECONF = "--program-transform-name='s/$/-2/'"
diff --git a/recipes/matchbox2/matchbox-panel-2-icon-themes/task-switcher.png b/recipes/matchbox2/matchbox-panel-2-icon-themes/task-switcher.png
new file mode 100644 (file)
index 0000000..d7ec987
Binary files /dev/null and b/recipes/matchbox2/matchbox-panel-2-icon-themes/task-switcher.png differ
diff --git a/recipes/matchbox2/matchbox-panel-2-icon-themes/user-desktop.png b/recipes/matchbox2/matchbox-panel-2-icon-themes/user-desktop.png
new file mode 100644 (file)
index 0000000..87f7b31
Binary files /dev/null and b/recipes/matchbox2/matchbox-panel-2-icon-themes/user-desktop.png differ
diff --git a/recipes/matchbox2/matchbox-panel-2-icon-themes_0.0.1.bb b/recipes/matchbox2/matchbox-panel-2-icon-themes_0.0.1.bb
new file mode 100644 (file)
index 0000000..2d14e0c
--- /dev/null
@@ -0,0 +1,51 @@
+DESCRIPTION = "icon theme for matchbox-panel-2"
+LICENSE = "GPLv2"
+SECTION = "x11/panels"
+DEPENDS = "imagemagick-native"
+RPROVIDES_${PN} = "matchbox-panel-2-icon-theme"
+PACKAGE_ARCH = "all"
+PV = "0.0.1+svnr${SRCREV}"
+PR = "r0"
+
+inherit gtk-icon-cache
+
+SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=matchbox-panel-2/applets/battery/data;proto=http;maxrev=1918 \
+          svn://svn.o-hand.com/repos/matchbox/trunk;module=matchbox-panel-2/applets/startup/data;proto=http \
+          svn://svn.o-hand.com/repos/matchbox/trunk;module=matchbox-panel-2/applets/brightness/data;proto=http \
+          file://user-desktop.png \
+          file://task-switcher.png \
+"
+S = "${WORKDIR}"
+
+do_install() {
+       cd ${S}
+       mkdir -p ${D}${datadir}/icons/HighContrast/48x48/status ${D}${datadir}/icons/HighContrastInverse/48x48/status
+       install -m 0644 matchbox-panel-2/applets/battery/data/*.png ${D}${datadir}/icons/HighContrastInverse/48x48/status/
+       mkdir -p ${D}${datadir}/icons/HighContrast/32x32/status ${D}${datadir}/icons/HighContrastInverse/32x32/status
+       install -m 0644 matchbox-panel-2/applets/brightness/data/*.png ${D}${datadir}/icons/HighContrastInverse/32x32/status/
+       mkdir -p ${D}${datadir}/icons/HighContrast/32x32/animations ${D}${datadir}/icons/HighContrastInverse/32x32/animations
+       install -m 0644 matchbox-panel-2/applets/startup/data/*.png ${D}${datadir}/icons/HighContrastInverse/32x32/animations/
+       cd ${D}${datadir}/icons/HighContrastInverse
+       for PNG in */*/*.png ; do
+               convert -negate $PNG ../HighContrast/$PNG
+       done
+       cd ${S}
+       mkdir -p ${D}${datadir}/icons/HighContrast/32x32/apps ${D}${datadir}/icons/HighContrastInverse/32x32/apps
+       install -m 0644 user-desktop.png task-switcher.png ${D}${datadir}/icons/HighContrast/32x32/apps/
+       cd ${D}${datadir}/icons/HighContrast
+       for PNG in 32x32/apps/*.png ; do
+               convert -negate $PNG ../HighContrastInverse/$PNG
+       done
+       cd ${S}
+
+       # FIXME: The default vendor provided theme uses "white on
+       # transparent" style and it is invisible with the default GTK+
+       # style. We need a better solution for fallback icons and dark
+       # themes. For now, define only "black on transparent" as
+       # hicolor. It is still pretty ugly: Hicolor is expected to be
+       # hicolor, makes icons invisible in dark themes.
+       rm -r ${D}${datadir}/icons/HighContrastInverse
+       mv ${D}${datadir}/icons/HighContrast ${D}${datadir}/icons/hicolor
+}
+
+FILES_${PN} += "${datadir}/icons/*"
diff --git a/recipes/matchbox2/matchbox-panel-2/scaling-image-double-free.patch b/recipes/matchbox2/matchbox-panel-2/scaling-image-double-free.patch
new file mode 100644 (file)
index 0000000..ab1fca1
--- /dev/null
@@ -0,0 +1,14 @@
+http://bugzilla.openedhand.com/show_bug.cgi?id=1794
+Index: matchbox-panel/mb-panel-scaling-image.c
+===================================================================
+--- matchbox-panel/mb-panel-scaling-image.c    (revision 2098)
++++ matchbox-panel/mb-panel-scaling-image.c    (working copy)
+@@ -284,7 +285,7 @@
+                 if (image->priv->caching) {
+                         g_hash_table_insert (image->priv->cache,
+-                                             image->priv->icon,
++                                             g_strdup(image->priv->icon),
+                                              pixbuf);
+                 } else
+                         g_object_unref (pixbuf);
diff --git a/recipes/matchbox2/matchbox-panel-2/startup-invalid-access.patch b/recipes/matchbox2/matchbox-panel-2/startup-invalid-access.patch
new file mode 100644 (file)
index 0000000..66fac2a
--- /dev/null
@@ -0,0 +1,25 @@
+http://bugzilla.openedhand.com/show_bug.cgi?id=1791
+Index: applets/startup/startup.c
+===================================================================
+--- applets/startup/startup.c  (revision 2098)
++++ applets/startup/startup.c  (working copy)
+@@ -170,16 +170,17 @@
+         /* handle launchee timeouts */
+         while (tmp != NULL) {
++                GList *tmp_next = tmp->next;
+                 LaunchItem *item = (LaunchItem *) tmp->data;
+                 if ((item->when - t) <= 0) {
+-                        applet->launch_list = g_list_remove (tmp, item);
++                        applet->launch_list = g_list_delete_link (applet->launch_list, tmp);
+                         g_source_remove (item->timeout_id);
+                         free (item->id);
+                         free (item);
+                         break;
+                 }
+-                tmp = tmp->next;
++                tmp = tmp_next;
+         }
+         if (applet->launch_list == NULL && applet->hourglass_shown) {
diff --git a/recipes/matchbox2/matchbox-panel-2/startup-shown-uninitialized.patch b/recipes/matchbox2/matchbox-panel-2/startup-shown-uninitialized.patch
new file mode 100644 (file)
index 0000000..2ee3efd
--- /dev/null
@@ -0,0 +1,13 @@
+http://bugzilla.openedhand.com/show_bug.cgi?id=1805
+Index: applets/startup/startup.c
+===================================================================
+--- applets/startup/startup.c  (revision 2098)
++++ applets/startup/startup.c  (working copy)
+@@ -228,6 +228,7 @@
+         applet = g_slice_new (StartupApplet);
+         applet->launch_list = NULL;
++        applet->hourglass_shown = FALSE;
+         /* Create image */
+         applet->image = MB_PANEL_SCALING_IMAGE
diff --git a/recipes/matchbox2/matchbox-panel-2/themeable-icons.patch b/recipes/matchbox2/matchbox-panel-2/themeable-icons.patch
new file mode 100644 (file)
index 0000000..9b41ce8
--- /dev/null
@@ -0,0 +1,92 @@
+Index: configure.ac
+===================================================================
+--- configure.ac       (revision 2098)
++++ configure.ac       (working copy)
+@@ -88,14 +88,12 @@
+ applets/launcher/Makefile
+ applets/notify/Makefile
+ applets/startup/Makefile
+-applets/startup/data/Makefile
+ applets/startup-notify/Makefile
+ applets/systray/Makefile
+ applets/showdesktop/Makefile
+ applets/windowselector/Makefile
+ applets/battery/Makefile
+ applets/brightness/Makefile
+-applets/brightness/data/Makefile
+ po/Makefile.in
+ po/Makefile
+ ])
+Index: applets/startup/startup.c
+===================================================================
+--- applets/startup/startup.c  (revision 2098)
++++ applets/startup/startup.c  (working copy)
+@@ -191,8 +191,8 @@
+         if (applet->hourglass_cur_frame_n == 8)
+                 applet->hourglass_cur_frame_n = 0;
+-        icon = malloc (sizeof(DATADIR) + 16);
+-        sprintf (icon, "%s/hourglass-%i.png", DATADIR,
++        icon = malloc (12);
++        sprintf (icon, "hourglass-%i",
+                  applet->hourglass_cur_frame_n);
+         mb_panel_scaling_image_set_icon (applet->image, icon);
+Index: applets/startup/Makefile.am
+===================================================================
+--- applets/startup/Makefile.am        (revision 2098)
++++ applets/startup/Makefile.am        (working copy)
+@@ -1,5 +1,3 @@
+-SUBDIRS = data
+-
+ AM_CPPFLAGS=-DPKGDATADIR=\"$(pkgdatadir)\" \
+             -DGETTEXT_PACKAGE=\"matchbox-panel\" \
+           -DDATADIR=\"$(pkgdatadir)/startup/\"
+Index: applets/brightness/Makefile.am
+===================================================================
+--- applets/brightness/Makefile.am     (revision 2098)
++++ applets/brightness/Makefile.am     (working copy)
+@@ -1,5 +1,3 @@
+-SUBDIRS = data
+-
+ AM_CPPFLAGS=-DPKGDATADIR=\"$(pkgdatadir)\" \
+             -DGETTEXT_PACKAGE=\"matchbox-panel\" \
+           -DDATADIR=\"$(pkgdatadir)/brightness/\"
+Index: applets/brightness/brightness.c
+===================================================================
+--- applets/brightness/brightness.c    (revision 2098)
++++ applets/brightness/brightness.c    (working copy)
+@@ -131,7 +131,6 @@
+             NULL};
+             
+         theme = gtk_icon_theme_get_default();
+-        gtk_icon_theme_append_search_path(theme, DATADIR);
+             
+         applet = g_slice_new(BrightnessApplet);
+         scale = gtk_scale_button_new(GTK_ICON_SIZE_BUTTON,
+Index: applets/windowselector/windowselector.c
+===================================================================
+--- applets/windowselector/windowselector.c    (revision 2098)
++++ applets/windowselector/windowselector.c    (working copy)
+@@ -797,7 +797,7 @@
+         switch (applet->mode) {
+         case MODE_STATIC_ICON:
+                 applet->image = mb_panel_scaling_image_new (orientation,
+-                        "panel-task-switcher");
++                        "task-switcher");
+                 gtk_container_add (GTK_CONTAINER (applet->button),
+                                 applet->image);
+                 break;
+Index: applets/showdesktop/showdesktop.c
+===================================================================
+--- applets/showdesktop/showdesktop.c  (revision 2098)
++++ applets/showdesktop/showdesktop.c  (working copy)
+@@ -50,7 +50,7 @@
+         /* TODO: remove this function and instead use a toggle button? */
+         
+-        icon = "panel-user-desktop";
++        icon = "user-desktop";
+         mb_panel_scaling_image_set_icon (applet->image, icon);
+ }
index 79fafff..667b549 100644 (file)
@@ -1,27 +1,31 @@
 DESCRIPTION = "matchbox-panel-2 is a lightweight dock (system tray) application based on Gtk+"
-LICENSE = "GPL"
+LICENSE = "GPLv2"
 SECTION = "x11/panels"
-DEPENDS = "gtk+ apmd startup-notification"
-PV = "0.1+svnr${SRCREV}"
-PR = "r8"
+DEPENDS = "gtk+ startup-notification dbus dbus-glib matchbox-panel-2-icon-themes"
+DEPENDS += " ${@base_contains("MACHINE_FEATURES", "acpi", "libacpi", "",d)}"
+DEPENDS += " ${@base_contains("MACHINE_FEATURES", "apm", "apmd", "",d)}"
+RDEPENDS_${PN} = "matchbox-panel-2-icon-theme"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+PV = "2.0+svnr${SRCREV}"
+PR = "r0"
 
-SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http"
-S = "${WORKDIR}/${PN}"
+inherit autotools_stage pkgconfig
 
-inherit autotools pkgconfig
+SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
+          file://scaling-image-double-free.patch;patch=1;pnum=0 \
+          file://startup-invalid-access.patch;patch=1;pnum=0 \
+          file://startup-shown-uninitialized.patch;patch=1;pnum=0 \
+          file://themeable-icons.patch;patch=1;pnum=0 \
+"
+S = "${WORKDIR}/${PN}"
 
-EXTRA_OECONF = "--enable-startup-notification --disable-libnotify"
+EXTRA_OECONF = "--disable-static --program-transform-name='s/$/-2/'"
+EXTRA_OECONF += " ${@base_contains("MACHINE_FEATURES", "acpi", "--with-battery=acpi", "",d)}"
+EXTRA_OECONF += " ${@base_contains("MACHINE_FEATURES", "apm", "--with-battery=apm", "",d)}"
 
-# matchbox-<anything>-2 aims to replace their -1 counterpart, but at this point in time it's unfinished and unusable,  so make it parallel installable
 do_install_append() {
-    mv ${D}${bindir}/matchbox-panel ${D}${bindir}/matchbox-panel-2
+       rm ${D}${libdir}/matchbox-panel/lib*.*a
 }
 
-do_stage() {
-    autotools_stage_all
-}
-
-PACKAGES += "${PN}-applets"
-FILES_${PN}-applets = "${libdir}/matchbox-panel/lib*.so* ${datadir}/*"
-FILES_${PN}-dev += "${libdir}/matchbox-panel/lib*.a ${libdir}/matchbox-panel/lib*.la"
-
+FILES_${PN} += "${libdir}/matchbox-panel/*.so"
+FILES_${PN}-dbg += "${libdir}/matchbox-panel/.debug"
diff --git a/recipes/matchbox2/matchbox-wm-2/fix-timeout-handler-free.patch b/recipes/matchbox2/matchbox-wm-2/fix-timeout-handler-free.patch
new file mode 100644 (file)
index 0000000..1f68176
--- /dev/null
@@ -0,0 +1,105 @@
+http://bugzilla.openedhand.com/show_bug.cgi?id=1432
+diff --git a/matchbox/core/mb-wm-client.c b/matchbox/core/mb-wm-client.c
+index 0791060..f6d949d 100644
+--- a/matchbox/core/mb-wm-client.c
++++ b/matchbox/core/mb-wm-client.c
+@@ -55,9 +58,11 @@ mb_wm_client_destroy (MBWMObject *obj)
+   client->sig_prop_change_id = 0;
+-  if (client->ping_cb_id)
+-    mb_wm_main_context_timeout_handler_remove (wm->main_ctx,
+-                                             client->ping_cb_id);
++  /* Must call mb_wm_client_ping_stop rather than
++   * mb_wm_main_context_timeout_handler_remove() to prevent a race condition
++   * segfault in the timeout list manipulation
++   */
++  mb_wm_client_ping_stop (client);
+ #if ENABLE_COMPOSITE
+   if (mb_wm_compositing_enabled (wm))
+diff --git a/matchbox/core/mb-wm-main-context.c b/matchbox/core/mb-wm-main-context.c
+index f74d249..a206a2e 100644
+--- a/matchbox/core/mb-wm-main-context.c
++++ b/matchbox/core/mb-wm-main-context.c
+@@ -822,7 +822,7 @@ mb_wm_main_context_handle_timeout (MBWMTimeOutEventInfo *tinfo,
+ static Bool
+ mb_wm_main_context_check_timeouts (MBWMMainContext *ctx)
+ {
+-  MBWMList * l = ctx->event_funcs.timeout;
++  MBWMList * l = mb_wm_util_list_get_first(ctx->event_funcs.timeout);
+   struct timeval current_time;
+   if (!l)
+@@ -833,29 +833,18 @@ mb_wm_main_context_check_timeouts (MBWMMainContext *ctx)
+   while (l)
+     {
+       MBWMTimeOutEventInfo * tinfo = l->data;
++      unsigned long tid = tinfo->id;
+       if (!mb_wm_main_context_handle_timeout (tinfo, &current_time))
+-      {
+-        MBWMList * prev = l->prev;
+-        MBWMList * next = l->next;
+-
+-        if (prev)
+-          prev->next = next;
+-        else
+-          ctx->event_funcs.timeout = next;
+-
+-        if (next)
+-          next->prev = prev;
+-
+-        free (tinfo);
+-        free (l);
+-
+-        l = next;
+-      }
++       {
++         /* Timeout handler notified it can be removed, do so now */
++         mb_wm_main_context_timeout_handler_remove (ctx,tid);
++         /* To avoid race condition, restart at front of list */
++         l = mb_wm_util_list_get_first(ctx->event_funcs.timeout);
++       }
+       else
+-      l = l->next;
++       l = mb_wm_util_list_next(l);
+     }
+-
+   return True;
+ }
+ #endif /* !USE_GLIB_MAINLOOP */
+@@ -904,25 +893,14 @@ mb_wm_main_context_timeout_handler_remove (MBWMMainContext *ctx,
+         MBWMTimeOutEventInfo * info = l->data;
+       if (info->id == id)
+-      {
+-        MBWMList * prev = l->prev;
+-        MBWMList * next = l->next;
+-
+-        if (prev)
+-          prev->next = next;
+-        else
+-          ctx->event_funcs.timeout = next;
+-
+-        if (next)
+-          next->prev = prev;
+-
+-        free (info);
+-        free (l);
+-
+-        return;
+-      }
+-
+-      l = l->next;
++       {
++         /* Reset list head after entry removal */
++         ctx->event_funcs.timeout =
++            mb_wm_util_list_remove(ctx->event_funcs.timeout, l->data);
++         return;
++         }
++
++      l = mb_wm_util_list_next(l);
+     }
+ #else
+   g_source_remove (id);
diff --git a/recipes/matchbox2/matchbox-wm-2/makefile-vars.patch b/recipes/matchbox2/matchbox-wm-2/makefile-vars.patch
new file mode 100644 (file)
index 0000000..8014e97
--- /dev/null
@@ -0,0 +1,234 @@
+sed -i 's/@\([A-Z0-9_]*\)@/\$(\1)/g;s/\$(MBWM2_API_VERSION)/@MBWM2_API_VERSION@/g;s/_LIBRARIES/_LTLIBRARIES/g;s/_a_/_la_/g;s/\.a/.la/g' $(find -name Makefile.am)
+Index: matchbox/client-types/Makefile.am
+===================================================================
+--- matchbox/client-types/Makefile.am  (revision 2087)
++++ matchbox/client-types/Makefile.am  (working copy)
+@@ -1,15 +1,15 @@
+ if ENABLE_COMPOSITE
+-compmgr_libs = libmb-wm-client-override.a
++compmgr_libs = libmb-wm-client-override.la
+ compmgr_ltlibs = libmb-wm-client-override.la
+ endif
+-THEME_LIBS = @MBWM_THEME_LIBS@/libmb-theme.a
++THEME_LIBS = $(MBWM_THEME_LIBS)/libmb-theme.la
+-INCLUDES     = @MBWM_INCS@ @MBWM_CFLAGS@
++INCLUDES     = $(MBWM_INCS) $(MBWM_CFLAGS)
+ LDADD        =$(THEME_LIBS)
+ DEPENDENCIES = $(THEME_LIBS)
+-pkgincludedir = $(includedir)/@MBWM2_INCDIR@/client-types
++pkgincludedir = $(includedir)/$(MBWM2_INCDIR)/client-types
+ if ENABLE_LIBMATCHBOX
+ pkginclude_HEADERS = mb-wm-client-app.h \
+Index: matchbox/comp-mgr/Makefile.am
+===================================================================
+--- matchbox/comp-mgr/Makefile.am      (revision 2087)
++++ matchbox/comp-mgr/Makefile.am      (working copy)
+@@ -12,7 +12,7 @@
+ endif
+ endif
+-pkgincludedir = $(includedir)/@MBWM2_INCDIR@/comp-mgr
++pkgincludedir = $(includedir)/$(MBWM2_INCDIR)/comp-mgr
+ if ENABLE_LIBMATCHBOX
+ pkginclude_HEADERS = mb-wm-comp-mgr-clutter.h  mb-wm-comp-mgr.h  mb-wm-comp-mgr-xrender.h
+@@ -21,7 +21,7 @@
+ libmatchbox_window_manager_2_compmgr_la_SOURCES = $(core_h) $(core_c) \
+                                                 $(xrender_h) $(xrender_c) \
+                                                 $(clutter_h) $(clutter_c)
+-libmatchbox_window_manager_2_compmgr_la_CFLAGS = @MBWM_INCS@ @MBWM_CFLAGS@
++libmatchbox_window_manager_2_compmgr_la_CFLAGS = $(MBWM_INCS) $(MBWM_CFLAGS)
+ MAINTAINERCLEANFILES = Makefile.in
+Index: matchbox/core/Makefile.am
+===================================================================
+--- matchbox/core/Makefile.am  (revision 2087)
++++ matchbox/core/Makefile.am  (working copy)
+@@ -37,13 +37,13 @@
+         mb-wm-main-context.c  \
+           xas.c
+-pkgincludedir = $(includedir)/@MBWM2_INCDIR@/core
++pkgincludedir = $(includedir)/$(MBWM2_INCDIR)/core
+ if ENABLE_LIBMATCHBOX
+ pkginclude_HEADERS = $(core_h)
+ endif
+ noinst_LTLIBRARIES =  libmatchbox-window-manager-2-core.la
+ libmatchbox_window_manager_2_core_la_SOURCES = $(core_h) $(core_c)
+-libmatchbox_window_manager_2_core_la_CFLAGS =  @MBWM_INCS@ @MBWM_CFLAGS@
++libmatchbox_window_manager_2_core_la_CFLAGS =  $(MBWM_INCS) $(MBWM_CFLAGS)
+ MAINTAINERCLEANFILES = Makefile.in
+Index: matchbox/theme-engines/Makefile.am
+===================================================================
+--- matchbox/theme-engines/Makefile.am (revision 2087)
++++ matchbox/theme-engines/Makefile.am (working copy)
+@@ -5,7 +5,7 @@
+ COMMON_SRC = mb-wm-theme.h mb-wm-theme.c mb-wm-theme-xml.h mb-wm-theme-xml.c
+-pkgincludedir = $(includedir)/@MBWM2_INCDIR@/theme-engines
++pkgincludedir = $(includedir)/$(MBWM2_INCDIR)/theme-engines
+ if ENABLE_LIBMATCHBOX
+ pkginclude_HEADERS = mb-wm-theme.h  mb-wm-theme-png.h  mb-wm-theme-xml.h
+@@ -14,6 +14,6 @@
+ libmb_theme_la_SOURCES = $(COMMON_SRC) $(PNG_SRC)
+ libmb_theme_la_CFLAGS =
+-INCLUDES = @MBWM_INCS@ @MBWM_CFLAGS@ -DDATADIR=\"$(datadir)\"
++INCLUDES = $(MBWM_INCS) $(MBWM_CFLAGS) -DDATADIR=\"$(datadir)\"
+ MAINTAINERCLEANFILES = config.h.in Makefile.in
+Index: matchbox/Makefile.am
+===================================================================
+--- matchbox/Makefile.am       (revision 2087)
++++ matchbox/Makefile.am       (working copy)
+@@ -7,7 +7,7 @@
+ MAINTAINERCLEANFILES = Makefile.in
+-pkgincludedir = $(includedir)/@MBWM2_INCDIR@
++pkgincludedir = $(includedir)/$(MBWM2_INCDIR)
+ SUBDIRS = core client-types theme-engines $(comp) managers
+Index: matchbox/managers/simple/Makefile.am
+===================================================================
+--- matchbox/managers/simple/Makefile.am       (revision 2087)
++++ matchbox/managers/simple/Makefile.am       (working copy)
+@@ -1,22 +1,22 @@
+ INCLUDES =                                           \
+-      @MBWM_INCS@                                    \
+-      @MBWM_CFLAGS@
++      $(MBWM_INCS)                                   \
++      $(MBWM_CFLAGS)
+ CLIENT_LIBS = \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-panel.la       \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-dialog.la \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-note.la \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-app.la \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-input.la       \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-desktop.la \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-menu.la
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-panel.la      \
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-dialog.la \
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-note.la \
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-app.la \
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-input.la      \
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-desktop.la \
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-menu.la
+ if ENABLE_COMPOSITE
+-COMPMGR_LIBS=@MBWM_COMPMGR_BUILDDIR@/libmatchbox-window-manager-2-compmgr.la \
+-             @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-override.la
++COMPMGR_LIBS=$(MBWM_COMPMGR_BUILDDIR)/libmatchbox-window-manager-2-compmgr.la \
++             $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-override.la
+ endif
+-THEME_LIBS = @MBWM_THEME_BUILDDIR@/libmb-theme.la
++THEME_LIBS = $(MBWM_THEME_BUILDDIR)/libmb-theme.la
+ bin_PROGRAMS = matchbox-window-manager-2-simple
+@@ -28,15 +28,15 @@
+       $(LDFLAGS)
+ matchbox_window_manager_2_simple_LDADD =              \
+-        @MBWM_CORE_LIB@                                       \
++        $(MBWM_CORE_LIB)                                      \
+       $(THEME_LIBS)                                   \
+       $(CLIENT_LIBS)                                  \
+       $(COMPMGR_LIBS)                                 \
+-      @MBWM_LIBS@
++      $(MBWM_LIBS)
+ matchbox_window_manager_2_simple_DEPENDENCIES =               \
+-        @MBWM_CORE_LIB@                                       \
++        $(MBWM_CORE_LIB)                                      \
+       $(THEME_LIBS)                                   \
+         $(CLIENT_LIBS)                                        \
+       $(COMPMGR_LIBS)
+Index: matchbox/managers/maemo/Makefile.am
+===================================================================
+--- matchbox/managers/maemo/Makefile.am        (revision 2087)
++++ matchbox/managers/maemo/Makefile.am        (working copy)
+@@ -1,23 +1,23 @@
+ SUBDIRS = theme
+ INCLUDES =                                           \
+-      @MBWM_INCS@                                    \
+-      @MBWM_CFLAGS@
++      $(MBWM_INCS)                                   \
++      $(MBWM_CFLAGS)
+ CLIENT_LIBS =                                         \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-panel.a        \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-dialog.a       \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-note.a \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-app.a  \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-input.a        \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-desktop.a      \
+-        @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-menu.a
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-panel.la      \
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-dialog.la     \
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-note.la       \
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-app.la        \
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-input.la      \
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-desktop.la    \
++        $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-menu.la
+-THEME_LIBS = @MBWM_THEME_BUILDDIR@/libmb-theme.a
++THEME_LIBS = $(MBWM_THEME_BUILDDIR)/libmb-theme.la
+ if ENABLE_COMPOSITE
+-COMPMGR_LIBS=@MBWM_COMPMGR_BUILDDIR@/libmatchbox-window-manager-2-compmgr.a \
+-           @MBWM_CLIENT_BUILDDIR@/libmb-wm-client-override.a
++COMPMGR_LIBS=$(MBWM_COMPMGR_BUILDDIR)/libmatchbox-window-manager-2-compmgr.la \
++           $(MBWM_CLIENT_BUILDDIR)/libmb-wm-client-override.la
+ endif
+ bin_PROGRAMS = matchbox-window-manager-2-maemo
+@@ -33,14 +33,14 @@
+       $(LDFLAGS)
+ matchbox_window_manager_2_maemo_LDADD =                       \
+-        @MBWM_CORE_LIB@                                       \
++        $(MBWM_CORE_LIB)                                      \
+       $(THEME_LIBS)                                   \
+       $(CLIENT_LIBS)                                  \
+       $(COMPMGR_LIBS)                                 \
+-      @MBWM_LIBS@
++      $(MBWM_LIBS)
+ matchbox_window_manager_2_maemo_DEPENDENCIES =                \
+-        @MBWM_CORE_LIB@                                       \
++        $(MBWM_CORE_LIB)                                      \
+       $(THEME_LIBS)                                   \
+         $(CLIENT_LIBS)                                        \
+       $(COMPMGR_LIBS)
+Index: data/Makefile.am
+===================================================================
+--- data/Makefile.am   (revision 2087)
++++ data/Makefile.am   (working copy)
+@@ -1,10 +1,10 @@
+ SUBDIRS=themes
+-pcfiles = libmatchbox2-$(MBWM2_API_VERSION).pc \
++pcfiles = libmatchbox2-@MBWM2_API_VERSION@.pc \
+         libmatchbox2.pc
+ # clutter-<major>.<minor>.pc - for generic dependencies
+-libmatchbox2-$(MBWM2_API_VERSION).pc: libmatchbox2.pc
++libmatchbox2-@MBWM2_API_VERSION@.pc: libmatchbox2.pc
+       @cp $< $@
+ if ENABLE_LIBMATCHBOX
diff --git a/recipes/matchbox2/matchbox-wm-2_svn.bb b/recipes/matchbox2/matchbox-wm-2_svn.bb
new file mode 100644 (file)
index 0000000..e5aefc0
--- /dev/null
@@ -0,0 +1,22 @@
+DEPENDS = "gtk+ startup-notification dbus dbus-glib"
+PV = "0.1.0+svnr${SRCREV}"
+PR = "r0"
+
+SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=matchbox-window-manager-2;proto=http \
+          file://fix-timeout-handler-free.patch;patch=1 \
+          file://makefile-vars.patch;patch=1;pnum=0 \
+"
+S = "${WORKDIR}/matchbox-window-manager-2"
+
+inherit autotools pkgconfig
+
+# FIXME: --enable-glib-main-loop causes hard grab-freeze
+EXTRA_OECONF = "--with-gtk --with-pango --enable-matchbox-remote --enable-png-theme --enable-maemo-manager"
+
+do_install_append() {
+       mv ${D}${bindir}/matchbox-remote ${D}${bindir}/matchbox-remote-2
+       # Without libmatchbox there are no includes and no libraries, just empty directories:
+       rm -r ${D}${includedir} ${D}${libdir}
+}
+
+FILES_${PN} += "${datadir}/themes/*"
diff --git a/recipes/matchbox2/matchbox2/defaults.in b/recipes/matchbox2/matchbox2/defaults.in
new file mode 100644 (file)
index 0000000..cc81daf
--- /dev/null
@@ -0,0 +1,43 @@
+# Defaults for matchbox2: @sysconfdir@/matchbox2/defaults or ~/.matchbox2/defaults
+# It is read only if nor /etc/matchbox2/session nor ~/.matchbox2/session exists
+
+# Which launchers should be added to autolauncher:
+LAUNCHERS="BROWSER MAILER VIEWER NAVIGATION TERMINAL"
+
+# Menus for particular autolaunchers (name of variable with trailing "S", first available wins)
+BROWSERS="midori fennec kazehakase minimo gpe-mini-browser links firefox"
+MAILERS="balsa claws-mail"
+VIEWERS="gqview gpe-gallery"
+NAVIGATIONS="tangogps navit gpsdrive viking"
+TERMINALS="vte rxvt xterm"
+
+# Available applets:
+# autolauncher (virtual launcher applet set defined above)
+# battery (battery status, if APM or ACPI is available)
+# brightness (brigthess display and setup, if available)
+# clock (clock)
+# launcher:desktop (laucher of .desktop files)
+# notify (notification box)
+# showdesktop (show launchers on matchbox desktop)
+# startup (hourglass startup notification)
+# startup-notify (notification message on startup)
+# systray (system tray)
+# windowselector[:[static-icon|dynamic-icon|icon-name|name]] (selector of existing windows)
+#
+# Applets on the left/top side:
+START_APPLETS="showdesktop autolauncher startup"
+# Applets on the right/bottom side:
+END_APPLETS="windowselector clock battery systray"
+# Use autolauncher for set of launchers defined above.
+
+# Available matchbox window managers:
+# (simple|maemo)
+MATCHBOX_WM="simple"
+
+# generic options for particular components:
+# (see respective --help)
+WM_OPTIONS=""
+DESKTOP_OPTIONS=""
+PANEL_OPTIONS="--titlebar"
+
+# and here you can run anything you want
diff --git a/recipes/matchbox2/matchbox2/matchbox-session-2.in b/recipes/matchbox2/matchbox2/matchbox-session-2.in
new file mode 100644 (file)
index 0000000..6e13fe0
--- /dev/null
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+# running desktop-specific daemons in system-wide init is a mis-conception:
+killall mb-applet-startup-monitor 2>/dev/null
+
+# This should be resourced elsewhere:
+if [ -e /etc/profile ]
+then
+. /etc/profile
+fi
+if [ -e $HOME/profile ]
+then
+. $HOME/.profile
+fi
+
+if [ -e $HOME/.matchbox2/session ]
+then
+       exec $HOME/.matchbox2/session
+fi
+if [ -e @sysconfdir@/matchbox2/session ]
+then
+       exec @sysconfdir@/matchbox2/session
+fi
+
+if [ -e @sysconfdir@/matchbox2/defaults ]
+then
+       . @sysconfdir@/matchbox2/defaults
+fi
+if [ -e $HOME/.matchbox2/defaults ]
+then
+       . $HOME/.matchbox2/defaults
+fi
+
+for LAUNCHER in $LAUNCHERS ; do
+       eval MENU\=\""\$${LAUNCHER}S"\"
+       for APP in $MENU ; do
+               if test -f @datadir@/applications/$APP.desktop ; then
+                       AUTOLAUNCHER_APPLETS="$AUTOLAUNCHER_APPLETS launcher:$APP"
+                       break
+               fi
+       done
+done
+
+AUTOLAUNCHER_CMD=""
+for APPLET in $AUTOLAUNCHER_APPLETS ; do
+       if test -z "$AUTOLAUNCHER_CMD" ; then
+               AUTOLAUNCHER_CMD="$APPLET"
+       else
+               AUTOLAUNCHER_CMD="$AUTOLAUNCHER_CMD,$APPLET"
+       fi
+done
+START_CMD=""
+for APPLET in $START_APPLETS ; do
+       if test "$APPLET" = "autolauncher" ; then
+               APPLET="$AUTOLAUNCHER_CMD"
+       fi
+       if test -z "$START_CMD" ; then
+               START_CMD=" --start-applets=$APPLET"
+       else
+               START_CMD="$START_CMD,$APPLET"
+       fi
+done
+END_CMD=""
+for APPLET in $END_APPLETS ; do
+       if test "$APPLET" = "autolauncher" ; then
+               APPLET="$AUTOLAUNCHER_CMD"
+       fi
+       if test -z "$END_CMD" ; then
+               END_CMD=" --end-applets=$APPLET"
+       else
+               END_CMD="$END_CMD,$APPLET"
+       fi
+done
+
+PANEL_OPTIONS="$PANEL_OPTIONS$START_CMD$END_CMD"
+
+matchbox-panel-2 $PANEL_OPTIONS &
+sleep 2
+# matchbox-desktop-2 does not resize. Run it last.
+( sleep 5 ; matchbox-desktop-2 $DESKTOP_OPTIONS )&
+exec matchbox-window-manager-2-$MATCHBOX_WM $WM_OPTIONS $@
diff --git a/recipes/matchbox2/matchbox2_2.0.bb b/recipes/matchbox2/matchbox2_2.0.bb
new file mode 100644 (file)
index 0000000..1762ff4
--- /dev/null
@@ -0,0 +1,29 @@
+DESCRIPTION = "Metapackage for Matchbox2 suite"
+LICENSE = "GPL"
+DEPENDS = "matchbox-wm-2 matchbox-panel-2 matchbox-desktop-2"
+RDEPENDS = "matchbox-wm-2 matchbox-panel-2 matchbox-desktop-2"
+SECTION = "x11/wm"
+PR = "r0"
+
+SRC_URI = "file://matchbox-session-2.in \
+          file://defaults.in \
+"
+inherit update-alternatives
+
+ALTERNATIVE_NAME = "x-window-manager"
+ALTERNATIVE_LINK = "${bindir}/x-window-manager"
+ALTERNATIVE_PATH = "${bindir}/matchbox-session-2"
+ALTERNATIVE_PRIORITY = "20"
+
+do_compile() {
+       sed "s:@datadir@:${datadir}:g;s:@sysconfdir@:${sysconfdir}:g" <${WORKDIR}/matchbox-session-2.in >matchbox-session-2
+       sed "s:@datadir@:${datadir}:g;s:@sysconfdir@:${sysconfdir}:g" <${WORKDIR}/defaults.in >defaults
+}
+
+do_install() {
+       mkdir -p ${D}${bindir} ${D}${sysconfdir}/matchbox2
+       install -m 0755 matchbox-session-2 ${D}${bindir}
+       install -m 0644 defaults ${D}${sysconfdir}/matchbox2
+}
+
+FILES_${PN} += "${sysconfdir}/matchbox2"