aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/matchbox2
diff options
context:
space:
mode:
authorStanislav Brabec <utx@penguin.cz>2009-09-22 23:36:32 +0000
committerutx@penguin.cz <utx@penguin.cz>2009-09-22 23:36:32 +0000
commit3bcf3726467d678126952436b80f4a10c2184c4d (patch)
treedec42459f0732cb88b54aac55afd7ac8431d5c4e /recipes/matchbox2
parent1e4dc820bb189c367daddd07643c0146122823c0 (diff)
downloadopenembedded-3bcf3726467d678126952436b80f4a10c2184c4d.tar.gz
matchbox2: Make it working:
* fixed known crashers * created usable icon theme * provided session script
Diffstat (limited to 'recipes/matchbox2')
-rw-r--r--recipes/matchbox2/matchbox-desktop-2_svn.bb23
-rw-r--r--recipes/matchbox2/matchbox-panel-2-icon-themes/task-switcher.pngbin0 -> 132 bytes
-rw-r--r--recipes/matchbox2/matchbox-panel-2-icon-themes/user-desktop.pngbin0 -> 403 bytes
-rw-r--r--recipes/matchbox2/matchbox-panel-2-icon-themes_0.0.1.bb51
-rw-r--r--recipes/matchbox2/matchbox-panel-2/scaling-image-double-free.patch14
-rw-r--r--recipes/matchbox2/matchbox-panel-2/startup-invalid-access.patch25
-rw-r--r--recipes/matchbox2/matchbox-panel-2/startup-shown-uninitialized.patch13
-rw-r--r--recipes/matchbox2/matchbox-panel-2/themeable-icons.patch92
-rw-r--r--recipes/matchbox2/matchbox-panel-2_svn.bb40
-rw-r--r--recipes/matchbox2/matchbox-wm-2/fix-timeout-handler-free.patch105
-rw-r--r--recipes/matchbox2/matchbox-wm-2/makefile-vars.patch234
-rw-r--r--recipes/matchbox2/matchbox-wm-2_svn.bb22
-rw-r--r--recipes/matchbox2/matchbox2/defaults.in43
-rw-r--r--recipes/matchbox2/matchbox2/matchbox-session-2.in81
-rw-r--r--recipes/matchbox2/matchbox2_2.0.bb29
15 files changed, 737 insertions, 35 deletions
diff --git a/recipes/matchbox2/matchbox-desktop-2_svn.bb b/recipes/matchbox2/matchbox-desktop-2_svn.bb
index 8dc74ef509..21581e911b 100644
--- a/recipes/matchbox2/matchbox-desktop-2_svn.bb
+++ b/recipes/matchbox2/matchbox-desktop-2_svn.bb
@@ -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
index 0000000000..d7ec9879f0
--- /dev/null
+++ b/recipes/matchbox2/matchbox-panel-2-icon-themes/task-switcher.png
Binary files 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
index 0000000000..87f7b31330
--- /dev/null
+++ b/recipes/matchbox2/matchbox-panel-2-icon-themes/user-desktop.png
Binary files 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
index 0000000000..2d14e0c65b
--- /dev/null
+++ b/recipes/matchbox2/matchbox-panel-2-icon-themes_0.0.1.bb
@@ -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
index 0000000000..ab1fca10b9
--- /dev/null
+++ b/recipes/matchbox2/matchbox-panel-2/scaling-image-double-free.patch
@@ -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
index 0000000000..66fac2a710
--- /dev/null
+++ b/recipes/matchbox2/matchbox-panel-2/startup-invalid-access.patch
@@ -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
index 0000000000..2ee3efd01e
--- /dev/null
+++ b/recipes/matchbox2/matchbox-panel-2/startup-shown-uninitialized.patch
@@ -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
index 0000000000..9b41ce81ed
--- /dev/null
+++ b/recipes/matchbox2/matchbox-panel-2/themeable-icons.patch
@@ -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);
+ }
diff --git a/recipes/matchbox2/matchbox-panel-2_svn.bb b/recipes/matchbox2/matchbox-panel-2_svn.bb
index 79fafff202..667b54967f 100644
--- a/recipes/matchbox2/matchbox-panel-2_svn.bb
+++ b/recipes/matchbox2/matchbox-panel-2_svn.bb
@@ -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
index 0000000000..1f68176845
--- /dev/null
+++ b/recipes/matchbox2/matchbox-wm-2/fix-timeout-handler-free.patch
@@ -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
index 0000000000..8014e978a4
--- /dev/null
+++ b/recipes/matchbox2/matchbox-wm-2/makefile-vars.patch
@@ -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
index 0000000000..e5aefc02ab
--- /dev/null
+++ b/recipes/matchbox2/matchbox-wm-2_svn.bb
@@ -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
index 0000000000..cc81daf0e4
--- /dev/null
+++ b/recipes/matchbox2/matchbox2/defaults.in
@@ -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
index 0000000000..6e13fe0d69
--- /dev/null
+++ b/recipes/matchbox2/matchbox2/matchbox-session-2.in
@@ -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
index 0000000000..1762ff4766
--- /dev/null
+++ b/recipes/matchbox2/matchbox2_2.0.bb
@@ -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"