summaryrefslogtreecommitdiff
path: root/community/awn-extras-applets
diff options
context:
space:
mode:
Diffstat (limited to 'community/awn-extras-applets')
-rw-r--r--community/awn-extras-applets/PKGBUILD89
-rw-r--r--community/awn-extras-applets/add-battery-upower-support.patch200
-rw-r--r--community/awn-extras-applets/awn-extras-applets.install23
-rw-r--r--community/awn-extras-applets/awn-extras-glib2.32.patch226
-rw-r--r--community/awn-extras-applets/awn-extras-libnotify0.7.patch12
-rw-r--r--community/awn-extras-applets/cairo-menu-upower.patch51
-rw-r--r--community/awn-extras-applets/check-dependencies.patch71
-rw-r--r--community/awn-extras-applets/fix-shinyswitcher-scrolling.patch96
-rw-r--r--community/awn-extras-applets/fix-weather-applet.patch48
-rw-r--r--community/awn-extras-applets/remove-settings-menu.patch229
10 files changed, 1045 insertions, 0 deletions
diff --git a/community/awn-extras-applets/PKGBUILD b/community/awn-extras-applets/PKGBUILD
new file mode 100644
index 000000000..7ce9fca85
--- /dev/null
+++ b/community/awn-extras-applets/PKGBUILD
@@ -0,0 +1,89 @@
+# Maintainer: György Balló <ballogy@freestart.hu>
+# Contributor: Biru Ionut <ionut@archlinux.ro>
+# Contributor: Jonathan Liu <net147@hotmail.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=awn-extras-applets
+_pkgname=awn-extras
+pkgver=0.4.0
+pkgrel=15
+pkgdesc="Collection of applets for avant-window-navigator"
+arch=('i686' 'x86_64')
+url="https://launchpad.net/awn-extras"
+license=('GPL')
+depends=('avant-window-navigator' 'python2-notify' 'vte' 'gnome-menus' 'gnome-menus2' 'webkitgtk2')
+makedepends=('intltool' 'vala')
+optdepends=('python2-feedparser: comics, feeds, mail applets'
+ 'python2-rsvg: comics, cairo-clock, hardware-sensors applets'
+ 'gstreamer0.10-python: media-player, volume-control applets'
+ 'python2-dateutil: cairo-clock (optional), calendar applets'
+ 'python2-gdata: calendar applet'
+ 'python2-vobject: calendar applet'
+ 'python2-pyinotify: thinkhdaps applet (optional)'
+ 'python2-libgnome: stacks applet'
+ 'python2-gnomedesktop: stacks applet'
+ 'python2-wnck: slickswitcher applet'
+ 'fortune-mod: animal-farm applet'
+ 'upower: battery applet'
+ 'gnome-applets: cpufreq applet'
+ 'hddtemp: hardware-sensors applet (optional)'
+ 'lm_sensors: hardware-sensors applet (optional)')
+options=('!libtool')
+install=$pkgname.install
+source=(http://launchpad.net/$_pkgname/0.4/$pkgver/+download/$_pkgname-$pkgver.tar.gz
+ awn-extras-libnotify0.7.patch
+ remove-settings-menu.patch
+ add-battery-upower-support.patch
+ fix-shinyswitcher-scrolling.patch
+ fix-weather-applet.patch
+ awn-extras-glib2.32.patch
+ cairo-menu-upower.patch
+ check-dependencies.patch)
+md5sums=('b559d68cd6ad295c961c20fcc5d9f9c0'
+ '2df8dfd8f0f1d458c09b56983c7d049f'
+ '52f8ce6a4eca862b0740e29a84db8ae5'
+ '26b56106b63b14ba3c99f1a2e96da05d'
+ '755c57dfbb65a314f247277918ec95ac'
+ 'bc22bb3e81aca0f651ae8acee1ce2f00'
+ '1cfcd1e5dc92c4c7c306472d42a21c2d'
+ 'f9715f531947967d6549a358ea8d2979'
+ '8f920c7dde987d66eef7d3739df1051d')
+
+build() {
+ cd "$srcdir/$_pkgname-$pkgver"
+ patch -Np1 -i "$srcdir/awn-extras-libnotify0.7.patch"
+ patch -Np1 -i "$srcdir/remove-settings-menu.patch"
+ patch -Np0 -i "$srcdir/add-battery-upower-support.patch"
+ patch -Np0 -i "$srcdir/fix-shinyswitcher-scrolling.patch"
+ patch -Np1 -i "$srcdir/fix-weather-applet.patch"
+ patch -Np0 -i "$srcdir/awn-extras-glib2.32.patch"
+ patch -Np1 -i "$srcdir/cairo-menu-upower.patch"
+ patch -Np1 -i "$srcdir/check-dependencies.patch"
+
+ # Python2 fix
+ find . -type f -name *.py | xargs sed -i 's@^#.*python$@#!/usr/bin/python2@'
+ sed -i 's/async(\"python \"/async(\"python2 \"/' applets/maintained/shiny-switcher/shinyswitcherapplet.c
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --disable-static \
+ --disable-pymod-checks \
+ --with-webkit \
+ PYTHON=/usr/bin/python2
+ make
+}
+
+package() {
+ cd "$srcdir/$_pkgname-$pkgver"
+
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="$pkgdir" install
+
+ mkdir -p "$pkgdir/usr/share/gconf/schemas"
+ gconf-merge-schema "$pkgdir/usr/share/gconf/schemas/awn-extras.schemas" "$pkgdir"/etc/gconf/schemas/*.schemas
+ rm -r "$pkgdir"/etc
+
+ # Remove bandwidth-monitor applet, because it's not compatible with latest netstat
+ rm -R "$pkgdir"/usr/share/avant-window-navigator/applets/bandwidth-monitor*
+
+ # Remove pandora applet, because gtkmozembed is not available
+ rm -R "$pkgdir"/usr/share/avant-window-navigator/applets/pandora*
+}
diff --git a/community/awn-extras-applets/add-battery-upower-support.patch b/community/awn-extras-applets/add-battery-upower-support.patch
new file mode 100644
index 000000000..0548df758
--- /dev/null
+++ b/community/awn-extras-applets/add-battery-upower-support.patch
@@ -0,0 +1,200 @@
+=== modified file 'applets/maintained/battery/battery.py'
+--- applets/maintained/battery/battery.py 2010-08-12 19:00:37 +0000
++++ applets/maintained/battery/battery.py 2010-09-12 22:24:21 +0000
+@@ -1,6 +1,6 @@
+ #!/usr/bin/python
+ # Copyright (c) 2007 - 2008 Randal Barlow <im.tehk at gmail.com>
+-# 2008 - 2009 onox <denkpadje@gmail.com>
++# 2008 - 2010 onox <denkpadje@gmail.com>
+ #
+ # This library is free software; you can redistribute it and/or
+ # modify it under the terms of the GNU Lesser General Public
+@@ -223,11 +223,11 @@
+ return
+
+ charge_percentage = self.backend.get_capacity_percentage()
+-
+- charge_message = "Computer running on %s power" % ("AC", "battery")[self.backend.is_discharging()]
++ power_type = "AC" if self.backend.is_on_ac_power() else "battery"
++ charge_message = "Computer running on %s power" % power_type
+
+ if self.backend.is_charged():
+- charge_message += "\nBattery charged"
++ charge_message += "\n" + "Battery charged"
+ icon = os.path.join(themes_dir, self.settings["theme"], "battery-charged.svg")
+ else:
+ is_charging = self.backend.is_charging()
+@@ -343,6 +343,148 @@
+ return self.get_remaining_capacity() <= self.get_warning_capacity()
+
+
++class UPowerBackend(AbstractBackend):
++
++ """Backend that uses UPower via DBus.
++
++ Reference: http://upower.freedesktop.org/docs/Device.html
++
++ """
++
++ device_iface_name = "org.freedesktop.UPower.Device"
++
++ devices = None
++
++ def __init__(self):
++ self.__system_bus = dbus.SystemBus()
++
++ self.udi = UPowerBackend.get_batteries().keys()[0]
++ self.__set_dbus_interface(self.udi)
++
++ @staticmethod
++ def backend_useable():
++ return dbus is not None and len(UPowerBackend.get_batteries()) > 0
++
++ @staticmethod
++ def get_batteries():
++ udi_models = {}
++
++ try:
++ system_bus = dbus.SystemBus()
++
++ proxy = system_bus.get_object("org.freedesktop.UPower", "/org/freedesktop/UPower")
++ interface = dbus.Interface(proxy, "org.freedesktop.UPower")
++
++ UPowerBackend.devices = list(interface.EnumerateDevices())
++
++ for udi in UPowerBackend.devices:
++ device_iface = UPowerBackend.__get_dbus_interface(system_bus, udi)
++
++ # Type 2 is battery (1 is AC, 3 is UPS)
++ device_type = int(UPowerBackend.__get_property(device_iface, "Type"))
++ is_present = bool(UPowerBackend.__get_property(device_iface, "IsPresent"))
++
++ if device_type == 2 and is_present:
++ udi_models[str(udi)] = str(UPowerBackend.__get_property(device_iface, "Model"))
++ except dbus.DBusException, e:
++ print e.message
++ finally:
++ return udi_models
++
++ def set_active_udi(self, udi):
++ udi_models = UPowerBackend.get_batteries()
++
++ assert udi in udi_models
++
++ self.udi = udi
++ self.__set_dbus_interface(udi)
++
++ @staticmethod
++ def __get_dbus_interface(system_bus, udi):
++ proxy = system_bus.get_object("org.freedesktop.UPower", udi)
++ return dbus.Interface(proxy, "org.freedesktop.DBus.Properties")
++
++ def __set_dbus_interface(self, udi):
++ self.__battery = UPowerBackend.__get_dbus_interface(self.__system_bus, udi)
++
++ @staticmethod
++ def __get_property(interface, property_name):
++ return interface.Get(UPowerBackend.device_iface_name, property_name)
++
++ def get_active_udi(self):
++ return self.udi
++
++ def is_present(self):
++ return bool(UPowerBackend.__get_property(self.__battery, "IsPresent"))
++
++ def is_charging(self):
++ # State 1 is charging
++ return int(UPowerBackend.__get_property(self.__battery, "State")) == 1
++
++ def is_discharging(self):
++ # State 2 is discharging
++ return int(UPowerBackend.__get_property(self.__battery, "State")) == 2
++
++ def get_last_full_capacity(self):
++ # Measured in Wh
++ return int(UPowerBackend.__get_property(self.__battery, "EnergyFull"))
++
++ def get_remaining_capacity(self):
++ # Measured in Wh
++ return int(UPowerBackend.__get_property(self.__battery, "Energy"))
++
++ def get_charge_rate(self):
++ # Measured in W. Original value positive if being discharged, negative if being charged
++ return abs(int(UPowerBackend.__get_property(self.__battery, "EnergyRate")))
++
++ def get_capacity_percentage(self):
++ # Percentage in range 0 .. 100
++ return int(UPowerBackend.__get_property(self.__battery, "Percentage"))
++
++ def get_warning_capacity(self):
++ # Measured in Wh
++ return int(int(UPowerBackend.__get_property(self.__battery, "EnergyFullDesign")) * (warning_percentage / 100.))
++
++ def get_charge_time(self):
++ assert self.is_charging()
++
++ # Charge time in seconds
++ time = int(UPowerBackend.__get_property(self.__battery, "TimeToFull"))
++
++ if time == 0:
++ return super(UPowerBackend, self).get_charge_time()
++
++ hours = time / 3600
++ seconds = time % 3600
++ return (hours, int(round(seconds / 60.0)))
++
++ def get_remaining_time(self):
++ assert self.is_discharging()
++
++ # Discharge time in seconds
++ time = int(UPowerBackend.__get_property(self.__battery, "TimeToEmpty"))
++
++ if time == 0:
++ return super(UPowerBackend, self).get_discharge_time()
++
++ hours = time / 3600
++ seconds = time % 3600
++ return (hours, int(round(seconds / 60.0)))
++
++ def is_charged(self):
++ # State 4 is fully charged
++ return int(UPowerBackend.__get_property(self.__battery, "State")) == 4
++
++ def is_on_ac_power(self):
++ for udi in UPowerBackend.devices:
++ device_iface = UPowerBackend.__get_dbus_interface(self.__system_bus, udi)
++
++ # Property "Online" only has a value for AC power device
++ if bool(UPowerBackend.__get_property(device_iface, "Online")):
++ return True
++ return False
++
++
+ class HalBackend(AbstractBackend):
+
+ """Backend that uses HAL via DBus.
+@@ -372,7 +514,7 @@
+ return udi_models
+ except dbus.DBusException, e:
+ print e.message
+- return {}
++ return udi_models
+
+ def set_active_udi(self, udi):
+ udi_models = HalBackend.get_batteries()
+@@ -416,8 +558,12 @@
+ except dbus.DBusException:
+ return int(int(self.__hal_battery.GetProperty("battery.charge_level.design")) * (warning_percentage / 100.))
+
+-
+-backends = [HalBackend]
++ def is_on_ac_power(self):
++ # TODO Should check that _all_ batteries are not discharging
++ return not self.is_discharging()
++
++
++backends = [UPowerBackend, HalBackend]
+
+
+ if __name__ == "__main__":
+
diff --git a/community/awn-extras-applets/awn-extras-applets.install b/community/awn-extras-applets/awn-extras-applets.install
new file mode 100644
index 000000000..9f04bf6a2
--- /dev/null
+++ b/community/awn-extras-applets/awn-extras-applets.install
@@ -0,0 +1,23 @@
+pkgname=awn-extras
+
+post_install() {
+ gconfpkg --install $pkgname
+ xdg-icon-resource forceupdate
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+
+pre_remove() {
+ gconfpkg --uninstall $pkgname
+}
+
+post_remove() {
+ xdg-icon-resource forceupdate
+}
diff --git a/community/awn-extras-applets/awn-extras-glib2.32.patch b/community/awn-extras-applets/awn-extras-glib2.32.patch
new file mode 100644
index 000000000..563d73b56
--- /dev/null
+++ b/community/awn-extras-applets/awn-extras-glib2.32.patch
@@ -0,0 +1,226 @@
+=== modified file 'applets/maintained/awnterm/keybinder.h'
+--- applets/maintained/awnterm/keybinder.h 2009-12-04 15:32:54 +0000
++++ applets/maintained/awnterm/keybinder.h 2012-04-28 13:17:10 +0000
+@@ -24,7 +24,7 @@
+ #ifndef __AWN_KEY_BINDER_H__
+ #define __AWN_KEY_BINDER_H__
+
+-#include <glib/gtypes.h>
++#include <glib.h>
+
+ G_BEGIN_DECLS
+
+
+=== modified file 'applets/maintained/notification-daemon/daemon.h'
+--- applets/maintained/notification-daemon/daemon.h 2009-11-18 20:13:53 +0000
++++ applets/maintained/notification-daemon/daemon.h 2012-04-28 13:17:10 +0000
+@@ -31,8 +31,6 @@
+
+ #include <libawn/awn-applet.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-cairo-utils.h>
+
+=== modified file 'applets/maintained/notification-daemon/engines.c'
+--- applets/maintained/notification-daemon/engines.c 2010-04-10 17:06:17 +0000
++++ applets/maintained/notification-daemon/engines.c 2012-04-28 13:17:10 +0000
+@@ -38,8 +38,7 @@
+
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+@@ -50,7 +49,6 @@
+
+ #include <string.h>
+ #include <gtk/gtk.h>
+-#include <glib.h>
+ #ifndef HAVE_GTK_URL_LABEL
+ #include <libsexy/sexy-url-label.h>
+ #endif
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/awnsystemmonitor.h'
+--- applets/unmaintained/awnsystemmonitor/awnsystemmonitor.h 2009-04-22 03:44:36 +0000
++++ applets/unmaintained/awnsystemmonitor/awnsystemmonitor.h 2012-04-28 13:17:10 +0000
+@@ -25,7 +25,7 @@
+ //#include <libawn/awn-title.h>
+ #include <libawn/awn-tooltip.h>
+
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <glibtop/cpu.h>
+ #include <gconf/gconf-client.h>
+
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/awntop_cairo_component.c'
+--- applets/unmaintained/awnsystemmonitor/awntop_cairo_component.c 2010-04-01 14:25:40 +0000
++++ applets/unmaintained/awnsystemmonitor/awntop_cairo_component.c 2012-04-28 13:17:10 +0000
+@@ -43,13 +43,11 @@
+
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+ #include <gtk/gtk.h>
+
+
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/cpu_component.c'
+--- applets/unmaintained/awnsystemmonitor/cpu_component.c 2009-08-27 20:20:33 +0000
++++ applets/unmaintained/awnsystemmonitor/cpu_component.c 2012-04-28 13:17:10 +0000
+@@ -18,13 +18,11 @@
+ */
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+ #include <gtk/gtk.h>
+ #include <gdk/gdk.h>
+ #include <string.h>
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/cpumetergconf.c'
+--- applets/unmaintained/awnsystemmonitor/cpumetergconf.c 2009-04-22 03:44:36 +0000
++++ applets/unmaintained/awnsystemmonitor/cpumetergconf.c 2012-04-28 13:17:10 +0000
+@@ -20,13 +20,10 @@
+ * Boston, MA 02111-1307, USA.
+ */
+ #include <string.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
+ #include <gconf/gconf-value.h>
+
+ #include "cairo-utils.h"
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/dashboard.h'
+--- applets/unmaintained/awnsystemmonitor/dashboard.h 2009-04-22 03:44:36 +0000
++++ applets/unmaintained/awnsystemmonitor/dashboard.h 2012-04-28 13:17:10 +0000
+@@ -23,13 +23,11 @@
+
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+ #include <gtk/gtk.h>
+
+ #include <glibtop/mem.h>
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/date_time_component.c'
+--- applets/unmaintained/awnsystemmonitor/date_time_component.c 2009-07-07 20:10:17 +0000
++++ applets/unmaintained/awnsystemmonitor/date_time_component.c 2012-04-28 13:17:10 +0000
+@@ -19,13 +19,11 @@
+
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+ #include <gtk/gtk.h>
+ #include <gdk/gdk.h>
+ #include <string.h>
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/loadavg_component.c'
+--- applets/unmaintained/awnsystemmonitor/loadavg_component.c 2009-07-07 20:10:17 +0000
++++ applets/unmaintained/awnsystemmonitor/loadavg_component.c 2012-04-28 13:17:10 +0000
+@@ -19,13 +19,11 @@
+
+ #include <glibtop/loadavg.h>
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+ #include <gtk/gtk.h>
+ #include <gdk/gdk.h>
+ #include <string.h>
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/sysmem_component.c'
+--- applets/unmaintained/awnsystemmonitor/sysmem_component.c 2009-08-27 20:20:33 +0000
++++ applets/unmaintained/awnsystemmonitor/sysmem_component.c 2012-04-28 13:17:10 +0000
+@@ -19,13 +19,11 @@
+
+ #include <glibtop/mem.h>
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+ #include <gtk/gtk.h>
+ #include <gdk/gdk.h>
+ #include <string.h>
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/uptime_component.c'
+--- applets/unmaintained/awnsystemmonitor/uptime_component.c 2009-07-07 20:10:17 +0000
++++ applets/unmaintained/awnsystemmonitor/uptime_component.c 2012-04-28 13:17:10 +0000
+@@ -1,12 +1,10 @@
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+
+ #include <glibtop/uptime.h>
+ #include <glibtop/cpu.h>
+
+=== modified file 'applets/unmaintained/main-menu/applet.c'
+--- applets/unmaintained/main-menu/applet.c 2011-12-28 11:09:45 +0000
++++ applets/unmaintained/main-menu/applet.c 2012-04-28 13:17:10 +0000
+@@ -23,8 +23,7 @@
+
+ #include <string.h>
+
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <glib/gi18n.h>
+ #include <gtk/gtk.h>
+ #include <libdesktop-agnostic/fdo.h>
+
diff --git a/community/awn-extras-applets/awn-extras-libnotify0.7.patch b/community/awn-extras-applets/awn-extras-libnotify0.7.patch
new file mode 100644
index 000000000..c552e26f2
--- /dev/null
+++ b/community/awn-extras-applets/awn-extras-libnotify0.7.patch
@@ -0,0 +1,12 @@
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/notification-daemon/daemon.c awn-extras-0.4.0/applets/maintained/notification-daemon/daemon.c
+--- awn-extras-0.4.0.orig/applets/maintained/notification-daemon/daemon.c 2010-04-10 01:26:20.000000000 +0200
++++ awn-extras-0.4.0/applets/maintained/notification-daemon/daemon.c 2011-12-16 00:23:45.488215715 +0100
+@@ -1487,7 +1487,7 @@
+ if (fork() == 0)
+ {
+ notify_init("notify-send");
+- notify = notify_notification_new(summary, body, icon_str, NULL);
++ notify = notify_notification_new(summary, body, icon_str);
+ notify_notification_set_category(notify, type);
+ notify_notification_set_urgency(notify, urgency);
+ notify_notification_set_timeout(notify, expire_timeout);
diff --git a/community/awn-extras-applets/cairo-menu-upower.patch b/community/awn-extras-applets/cairo-menu-upower.patch
new file mode 100644
index 000000000..08e79a68d
--- /dev/null
+++ b/community/awn-extras-applets/cairo-menu-upower.patch
@@ -0,0 +1,51 @@
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/cairo-menu/gnome-menu-builder.c awn-extras-0.4.0/applets/maintained/cairo-menu/gnome-menu-builder.c
+--- awn-extras-0.4.0.orig/applets/maintained/cairo-menu/gnome-menu-builder.c 2010-04-10 01:26:19.000000000 +0200
++++ awn-extras-0.4.0/applets/maintained/cairo-menu/gnome-menu-builder.c 2012-12-29 05:46:45.971364855 +0100
+@@ -104,7 +104,7 @@
+
+ if (have_gnome_session_manager)
+ {
+- add_special_item (menu,_("Logout"),"gnome-logout","gnome-session-save","--logout-dialog --gui");
++ add_special_item (menu,_("Logout"),"gnome-logout","gnome-session-quit","--logout");
+ }
+ else if (dbus_service_exists ("org.xfce.SessionManager") )
+ {
+@@ -121,35 +121,13 @@
+ {
+ add_special_item (menu,_("Lock Screen"),"system-lock-screen","xscreensaver-command","-lock");
+ }
+- if (dbus_service_exists ("org.freedesktop.PowerManagement"))
+- {
+- if (!add_special_item (menu,_("Suspend"),"gnome-session-suspend","gnome-power-cmd","suspend"))
+- {
+- add_special_item (menu,_("Suspend"),"gnome-session-suspend","dbus-send","--session --dest=org.freedesktop.PowerManagement --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Suspend");
+- }
+-
+- if (!add_special_item (menu,_("Hibernate"),"gnome-session-hibernate","gnome-power-cmd","hibernate"))
+- {
+- add_special_item (menu,_("Hibernate"),"gnome-session-hibernate","dbus-send","--session --dest=org.freedesktop.PowerManagement --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Hibernate");
+- }
+
+- }
+- else if (dbus_service_exists ("org.gnome.PowerManagement"))
+- {
+- if (!add_special_item (menu,_("Suspend"),"gnome-session-suspend","gnome-power-cmd","suspend"))
+- {
+-
+- }
+-
+- if (!add_special_item (menu,_("Hibernate"),"gnome-session-hibernate","gnome-power-cmd","hibernate"))
+- {
++ add_special_item (menu,_("Suspend"),"gnome-session-suspend","dbus-send","--system --dest=org.freedesktop.UPower --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/UPower org.freedesktop.UPower.Suspend");
++ add_special_item (menu,_("Hibernate"),"gnome-session-hibernate","dbus-send","--system --dest=org.freedesktop.UPower --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/UPower org.freedesktop.UPower.Hibernate");
+
+- }
+- }
+-
+ if (have_gnome_session_manager)
+ {
+- add_special_item (menu,_("Shutdown"),"gnome-logout","gnome-session-save","--shutdown-dialog --gui");
++ add_special_item (menu,_("Shutdown"),"gnome-shutdown","gnome-session-quit","--power-off");
+ }
+ gtk_widget_show_all (menu);
+ return FALSE;
diff --git a/community/awn-extras-applets/check-dependencies.patch b/community/awn-extras-applets/check-dependencies.patch
new file mode 100644
index 000000000..959d3a113
--- /dev/null
+++ b/community/awn-extras-applets/check-dependencies.patch
@@ -0,0 +1,71 @@
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/comics/comics.py awn-extras-0.4.0/applets/maintained/comics/comics.py
+--- awn-extras-0.4.0.orig/applets/maintained/comics/comics.py 2010-03-26 17:14:53.000000000 +0100
++++ awn-extras-0.4.0/applets/maintained/comics/comics.py 2012-11-15 17:28:52.045595715 +0100
+@@ -30,7 +30,7 @@
+ from awn.extras import _
+
+ # Import Comics! modules, but check dependencies first
+-awn.check_dependencies(globals(), 'feedparser', 'pynotify')
++awn.check_dependencies(globals(), 'feedparser', 'pynotify', 'rsvg')
+ from pynotify import init as notify_init, Notification
+
+ import comics_manage
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/media-player/media_player.py awn-extras-0.4.0/applets/maintained/media-player/media_player.py
+--- awn-extras-0.4.0.orig/applets/maintained/media-player/media_player.py 2010-01-06 00:01:33.000000000 +0100
++++ awn-extras-0.4.0/applets/maintained/media-player/media_player.py 2012-11-15 17:28:54.925659573 +0100
+@@ -17,13 +17,15 @@
+ import os
+ import sys
+
++import awn
++awn.check_dependencies(globals(), 'pygst')
++
+ import pygst
+ pygst.require("0.10")
+ import gst
+ import gtk
+ import gobject
+
+-import awn
+ from desktopagnostic import config
+
+
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/slickswitcher/slickswitcher.py awn-extras-0.4.0/applets/maintained/slickswitcher/slickswitcher.py
+--- awn-extras-0.4.0.orig/applets/maintained/slickswitcher/slickswitcher.py 2010-04-08 14:31:25.000000000 +0200
++++ awn-extras-0.4.0/applets/maintained/slickswitcher/slickswitcher.py 2012-11-15 17:31:32.025809983 +0100
+@@ -25,6 +25,9 @@
+ import gobject
+
+ import cairo
++
++awn.check_dependencies(globals(), 'wnck')
++
+ import drawing, switch, settings
+ from os.path import exists, isdir
+ import os
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/volume-control/volume-control.py awn-extras-0.4.0/applets/maintained/volume-control/volume-control.py
+--- awn-extras-0.4.0.orig/applets/maintained/volume-control/volume-control.py 2010-01-06 00:01:34.000000000 +0100
++++ awn-extras-0.4.0/applets/maintained/volume-control/volume-control.py 2012-11-15 17:28:26.368359913 +0100
+@@ -30,6 +30,9 @@
+
+ from awn.extras import awnlib, __version__
+
++import awn
++awn.check_dependencies(globals(), 'pygst')
++
+ import pygst
+ pygst.require("0.10")
+ import gst
+diff -Naur awn-extras-0.4.0.orig/applets/unmaintained/stacks/stacks_applet.py awn-extras-0.4.0/applets/unmaintained/stacks/stacks_applet.py
+--- awn-extras-0.4.0.orig/applets/unmaintained/stacks/stacks_applet.py 2009-11-16 00:31:16.000000000 +0100
++++ awn-extras-0.4.0/applets/unmaintained/stacks/stacks_applet.py 2012-11-15 17:28:41.778701431 +0100
+@@ -25,6 +25,9 @@
+ import pango
+ import awn
+ import cairo
++
++awn.check_dependencies(globals(), 'gnome.ui', 'gnomedesktop')
++
+ import gnome.ui
+ import gnomedesktop
+ import time
diff --git a/community/awn-extras-applets/fix-shinyswitcher-scrolling.patch b/community/awn-extras-applets/fix-shinyswitcher-scrolling.patch
new file mode 100644
index 000000000..69dcae9c1
--- /dev/null
+++ b/community/awn-extras-applets/fix-shinyswitcher-scrolling.patch
@@ -0,0 +1,96 @@
+=== modified file 'applets/maintained/shiny-switcher/shinyswitcherapplet.c'
+--- applets/maintained/shiny-switcher/shinyswitcherapplet.c 2010-09-12 16:15:07 +0000
++++ applets/maintained/shiny-switcher/shinyswitcherapplet.c 2010-11-02 13:52:43 +0000
+@@ -769,7 +769,7 @@
+
+
+ static gboolean
+-_scroll_event(GtkWidget *widget, GdkEventMotion *event, AwnShinySwitcher *shinyswitcher)
++_scroll_event(GtkWidget *widget, GdkEventScroll *event, AwnShinySwitcher *shinyswitcher)
+ {
+ AwnShinySwitcherPrivate * priv = GET_PRIVATE (shinyswitcher);
+ WnckWorkspace *cur_space = wnck_screen_get_active_workspace(priv->wnck_screen);
+@@ -779,7 +779,7 @@
+ {
+ if (event->type == GDK_SCROLL)
+ {
+- WnckMotionDirection direction1, direction2;
++ WnckMotionDirection left, right, up, down;
+
+ switch (priv->mousewheel)
+ {
+@@ -787,8 +787,10 @@
+ case 1:
+
+ case 3:
+- direction1 = WNCK_MOTION_LEFT;
+- direction2 = WNCK_MOTION_RIGHT;
++ left = WNCK_MOTION_LEFT;
++ right = WNCK_MOTION_RIGHT;
++ up = WNCK_MOTION_UP;
++ down = WNCK_MOTION_DOWN;
+ break;
+
+ case 2:
+@@ -796,22 +798,52 @@
+ case 4:
+
+ default:
+- direction1 = WNCK_MOTION_RIGHT;
+- direction2 = WNCK_MOTION_LEFT;
+-
++ left = WNCK_MOTION_RIGHT;
++ right = WNCK_MOTION_LEFT;
++ up = WNCK_MOTION_DOWN;
++ down = WNCK_MOTION_UP;
+ }
+
+- if (event->state & GDK_SHIFT_MASK)
++ if ( (event->direction == GDK_SCROLL_UP) ||
++ (event->direction == GDK_SCROLL_LEFT) )
+ {
+- new_space = wnck_workspace_get_neighbor(cur_space, WNCK_MOTION_RIGHT);
++ new_space = wnck_workspace_get_neighbor(cur_space, left);
++ if (new_space == NULL)
++ {
++ new_space = wnck_workspace_get_neighbor(cur_space, up);
++ if (new_space)
++ {
++ for (cur_space = new_space; cur_space; )
++ {
++ cur_space = wnck_workspace_get_neighbor(cur_space, right);
++ if (cur_space)
++ {
++ new_space = cur_space;
++ }
++ }
++ }
++ }
+ }
+ else
+ {
+- new_space = wnck_workspace_get_neighbor(cur_space, WNCK_MOTION_LEFT);
+-
++ new_space = wnck_workspace_get_neighbor(cur_space, right);
++ if (!new_space)
++ {
++ new_space = wnck_workspace_get_neighbor(cur_space, down);
++ if (new_space)
++ {
++ for (cur_space = new_space; cur_space; )
++ {
++ cur_space = wnck_workspace_get_neighbor(cur_space, left);
++ if (cur_space)
++ {
++ new_space = cur_space;
++ }
++ }
++ }
++ }
+ }
+ }
+-
+ if (new_space)
+ {
+ wnck_workspace_activate(new_space, event->time); /* FIXME */
+
diff --git a/community/awn-extras-applets/fix-weather-applet.patch b/community/awn-extras-applets/fix-weather-applet.patch
new file mode 100644
index 000000000..889c0f641
--- /dev/null
+++ b/community/awn-extras-applets/fix-weather-applet.patch
@@ -0,0 +1,48 @@
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/weather/weather.py awn-extras-0.4.0/applets/maintained/weather/weather.py
+--- awn-extras-0.4.0.orig/applets/maintained/weather/weather.py 2012-03-07 00:20:03.094411287 +0100
++++ awn-extras-0.4.0/applets/maintained/weather/weather.py 2010-03-21 13:58:03.000000000 +0100
+@@ -570,7 +570,7 @@
+
+ class NetworkHandler(ThreadQueue):
+
+- __ws_key = "&prod=xoap&par=1048871467&key=12daac2f3a67cb39&link=xoap"
++ __ws_key = "&prod=xml&par=1287722164&key=e11ec82daa20d876"
+
+ def dict_from_xml(self, rootNode, keys, paths):
+ """Given an XML node, iterate over keys and paths, grabbing the
+@@ -590,7 +590,7 @@
+ @async_method
+ @network_exception
+ def get_locations(self, text):
+- url = "http://xoap.weather.com/search/search?where=" + urllib2.quote(text)
++ url = "http://xml.weather.com/search/search?where=" + urllib2.quote(text)
+ with closing(urllib2.urlopen(url)) as usock:
+ with unlink_xml(usock) as xmldoc:
+ locations_list = []
+@@ -604,7 +604,7 @@
+ @with_overlays
+ @network_exception
+ def get_conditions(self, location_code):
+- url = "http://xoap.weather.com/weather/local/" + location_code + "?cc=*" + self.__ws_key
++ url = "http://xml.weather.com/weather/local/" + location_code + "?cc=*" + self.__ws_key
+ with closing(urllib2.urlopen(url)) as usock:
+ with unlink_xml(usock) as xmldoc:
+ names = ['CITY', 'SUNRISE', 'SUNSET', 'DESCRIPTION', 'CODE', 'TEMP', 'FEELSLIKE', 'BAR', 'BARDESC', 'WINDSPEED', 'WINDGUST', 'WINDDIR', 'HUMIDITY', 'MOONPHASE']
+@@ -619,7 +619,7 @@
+ def get_weather_map(self, location_code):
+ map_url = "http://www.weather.com/outlook/travel/businesstraveler/map/%s" % location_code
+ with closing(urllib2.urlopen(map_url)) as usock:
+- mapExp = """<IMG NAME="mapImg" SRC="([^\"]+)" WIDTH=([0-9]+) HEIGHT=([0-9]+) BORDER"""
++ mapExp = """<img name="mapImg" src="([^\"]+)" width="([0-9]+)" height="([0-9]+)" border"""
+ result = re.findall(mapExp, usock.read())
+ if not result or len(result) != 1:
+ raise NetworkException("Couldn't parse weather map")
+@@ -635,7 +635,7 @@
+ @with_overlays
+ @network_exception
+ def get_forecast(self, location_code):
+- url = "http://xoap.weather.com/weather/local/" + location_code + "?dayf=5" + self.__ws_key
++ url = "http://xml.weather.com/weather/local/" + location_code + "?dayf=5" + self.__ws_key
+ with closing(urllib2.urlopen(url)) as usock:
+ with unlink_xml(usock) as xmldoc:
+ try:
diff --git a/community/awn-extras-applets/remove-settings-menu.patch b/community/awn-extras-applets/remove-settings-menu.patch
new file mode 100644
index 000000000..60eeda1d5
--- /dev/null
+++ b/community/awn-extras-applets/remove-settings-menu.patch
@@ -0,0 +1,229 @@
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/cairo-menu/gnome-menu-builder.c awn-extras-0.4.0/applets/maintained/cairo-menu/gnome-menu-builder.c
+--- awn-extras-0.4.0.orig/applets/maintained/cairo-menu/gnome-menu-builder.c 2010-04-10 01:26:19.000000000 +0200
++++ awn-extras-0.4.0/applets/maintained/cairo-menu/gnome-menu-builder.c 2011-12-16 20:34:22.612913317 +0100
+@@ -34,7 +34,6 @@
+ #include "cairo-menu-applet.h"
+
+ GMenuTree * main_menu_tree = NULL;
+-GMenuTree * settings_menu_tree = NULL;
+
+ GtkWidget * menu_build (MenuInstance * instance);
+ static GtkWidget * submenu_build (MenuInstance * instance);
+@@ -749,19 +748,10 @@
+ gmenu_tree_remove_monitor (main_menu_tree,(GMenuTreeChangedFunc)_submenu_modified_cb,instance);
+ }
+
+-static void
+-_remove_settings_submenu_cb(MenuInstance * instance,GObject *where_the_object_was)
+-{
+- g_debug ("%s",__func__);
+- GMenuTreeDirectory *main_root;
+- gmenu_tree_remove_monitor (settings_menu_tree,(GMenuTreeChangedFunc)_submenu_modified_cb,instance);
+-}
+-
+ static GtkWidget *
+ submenu_build (MenuInstance * instance)
+ {
+ GMenuTreeDirectory *main_root;
+- GMenuTreeDirectory *settings_root;
+ GtkWidget * menu = NULL;
+ /*
+ if the menu is set then clear any menu items (except for places or recent)
+@@ -771,10 +761,6 @@
+ {
+ main_menu_tree = gmenu_tree_lookup("applications.menu", GMENU_TREE_FLAGS_NONE);
+ }
+- if (!settings_menu_tree)
+- {
+- settings_menu_tree = gmenu_tree_lookup("settings.menu", GMENU_TREE_FLAGS_NONE);
+- }
+ g_assert (main_menu_tree);
+ /*
+ get_places_menu() and get_recent_menu() are
+@@ -808,7 +794,6 @@
+ main_root = gmenu_tree_get_root_directory(main_menu_tree);
+ g_assert (gmenu_tree_item_get_type( (GMenuTreeItem*)main_root) == GMENU_TREE_ITEM_DIRECTORY);
+ g_assert (main_root);
+- settings_root = gmenu_tree_get_root_directory(settings_menu_tree);
+ if ( menu_dir = find_menu_dir (instance,main_root) )
+ {
+ /* if instance->menu then we're refreshing in a monitor callback*/
+@@ -817,22 +802,11 @@
+ menu = fill_er_up(instance,menu_dir,instance->menu);
+ g_object_weak_ref (G_OBJECT(menu), (GWeakNotify)_remove_main_submenu_cb,instance);
+ }
+- else if ( settings_root && (menu_dir = find_menu_dir (instance,settings_root)) )
+- {
+- gmenu_tree_remove_monitor (main_menu_tree,(GMenuTreeChangedFunc)_submenu_modified_cb,instance);
+- gmenu_tree_add_monitor (main_menu_tree,(GMenuTreeChangedFunc)_submenu_modified_cb,instance);
+- menu = fill_er_up(instance,menu_dir,instance->menu);
+- g_object_weak_ref (G_OBJECT(menu), (GWeakNotify)_remove_settings_submenu_cb,instance);
+- }
+ if (menu_dir)
+ {
+ gmenu_tree_item_unref(menu_dir);
+ }
+ gmenu_tree_item_unref(main_root);
+- if (settings_root)
+- {
+- gmenu_tree_item_unref(settings_root);
+- }
+ }
+ return instance->menu = menu;
+ }
+@@ -862,10 +836,6 @@
+ {
+ main_menu_tree = gmenu_tree_lookup("applications.menu", GMENU_TREE_FLAGS_NONE);
+ }
+- if (!settings_menu_tree)
+- {
+- settings_menu_tree = gmenu_tree_lookup("settings.menu", GMENU_TREE_FLAGS_NONE);
+- }
+
+ if (main_menu_tree)
+ {
+@@ -884,44 +854,6 @@
+ menu_item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append(GTK_MENU_SHELL(instance->menu),menu_item);
+ }
+- if (settings_menu_tree)
+- {
+- root = gmenu_tree_get_root_directory(settings_menu_tree);
+- gmenu_tree_remove_monitor (settings_menu_tree,(GMenuTreeChangedFunc)_menu_modified_cb,instance);
+- gmenu_tree_add_monitor (settings_menu_tree,(GMenuTreeChangedFunc)_menu_modified_cb,instance);
+- if (!instance->menu)
+- {
+- g_debug ("%s: No applications menu????",__func__);
+- instance->menu = fill_er_up(instance,root,instance->menu);
+- }
+- else
+- {
+- sub_menu = fill_er_up (instance, root,instance->menu);
+-#if 0
+- sub_menu = fill_er_up(instance,root,NULL);
+- c = g_malloc0 (sizeof(CallbackContainer));
+- c->icon_name = g_strdup(gmenu_tree_directory_get_icon (root));
+- image = get_gtk_image (c->icon_name);
+- txt = gmenu_tree_entry_get_name((GMenuTreeEntry*)root);
+- menu_item = cairo_menu_item_new_with_label (txt?txt:"unknown");
+- gtk_menu_item_set_submenu (GTK_MENU_ITEM(menu_item),sub_menu);
+- if (image)
+- {
+- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item),image);
+- }
+- gtk_menu_shell_append(GTK_MENU_SHELL(instance->menu),menu_item);
+- c->file_path = g_strdup(gmenu_tree_directory_get_desktop_file_path (root));
+- c->display_name = g_strdup ("Settings");
+- drop_data = g_strdup_printf("cairo_menu_item_dir:///@@@%s@@@%s@@@%s\n",c->file_path,c->display_name,c->icon_name);
+- cairo_menu_item_set_source (AWN_CAIRO_MENU_ITEM(menu_item),drop_data);
+- g_free (drop_data);
+- c->instance = instance;
+- g_signal_connect (menu_item, "button-press-event",G_CALLBACK(_button_press_dir),c);
+- g_object_weak_ref (G_OBJECT(menu_item),(GWeakNotify)_free_callback_container,c);
+-#endif
+- }
+- gmenu_tree_item_unref(root);
+- }
+
+ /*TODO Check to make sure it is needed. Should not be displayed if
+ all flags are of the NO persuasion.*/
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/yama/yama.py awn-extras-0.4.0/applets/maintained/yama/yama.py
+--- awn-extras-0.4.0.orig/applets/maintained/yama/yama.py 2010-03-31 16:21:24.000000000 +0200
++++ awn-extras-0.4.0/applets/maintained/yama/yama.py 2011-12-16 20:37:48.243326388 +0100
+@@ -113,7 +113,6 @@
+
+ def build_menu(self):
+ self.applications_items = []
+- self.settings_items = []
+ self.session_items = []
+
+ """ Applications """
+@@ -126,11 +125,6 @@
+ """ Places """
+ self.create_places_submenu(self.menu)
+
+- """ System """
+- tree = gmenu.lookup_tree("settings.menu")
+- self.append_directory(tree.root, self.menu, item_list=self.settings_items)
+- tree.add_monitor(self.menu_changed_cb, self.settings_items)
+-
+ """ Session actions """
+ if dbus is not None:
+ self.append_session_actions(self.menu)
+@@ -227,7 +221,7 @@
+ for i in xrange(len(items)):
+ items.pop().destroy()
+
+- index = len(self.applications_items) + 2 if items is self.settings_items else 0 # + 2 = separator + Places
++ index = len(self.applications_items) + 0
+ self.append_directory(tree.root, self.menu, index=index, item_list=items)
+ # Refresh menu to re-initialize the widget
+ self.menu.show_all()
+diff -Naur awn-extras-0.4.0.orig/applets/unmaintained/main-menu/applet.c awn-extras-0.4.0/applets/unmaintained/main-menu/applet.c
+--- awn-extras-0.4.0.orig/applets/unmaintained/main-menu/applet.c 2009-10-27 20:45:03.000000000 +0100
++++ awn-extras-0.4.0/applets/unmaintained/main-menu/applet.c 2011-12-16 20:27:28.792248015 +0100
+@@ -43,7 +43,6 @@
+ GMenuTree *tree;
+ GMenuTreeDirectory *root;
+ GMenuTreeDirectory *apps;
+- GMenuTreeDirectory *settings;
+
+ } Menu;
+
+@@ -243,8 +242,6 @@
+ {
+ GMenuTreeDirectory *temp= menu->root;
+ menu->root = gmenu_tree_item_get_parent (GMENU_TREE_ITEM (temp));
+- if (menu->root == menu->settings)
+- menu->root = gmenu_tree_get_root_directory (menu->tree);
+ populate (menu);
+ }
+
+@@ -299,8 +296,6 @@
+ if (app->root == GMENU_TREE_DIRECTORY(gmenu_tree_get_root_directory ((GMenuTree*)app->apps)))
+ {
+ list = g_slist_copy (apps);
+- sets = g_slist_copy (gmenu_tree_directory_get_contents (app->settings));
+- list = g_slist_concat (list, sets);
+ list = g_slist_sort (list, (GCompareFunc)_compare);
+ }
+ else
+@@ -419,13 +414,6 @@
+ g_warning ("Unable to find applications.menu");
+ return FALSE;
+ }
+- app->settings = gmenu_tree_get_root_directory (
+- gmenu_tree_lookup ("settings.menu", GMENU_TREE_FLAGS_NONE));
+- if (!app->settings)
+- {
+- g_warning ("Unable to find settings.menu");
+- return FALSE;
+- }
+ app->tree = (GMenuTree*)app->apps;
+
+ app->menu = awn_applet_create_default_menu (app->applet);
+diff -Naur awn-extras-0.4.0.orig/applets/unmaintained/MiMenu/menus.py awn-extras-0.4.0/applets/unmaintained/MiMenu/menus.py
+--- awn-extras-0.4.0.orig/applets/unmaintained/MiMenu/menus.py 2009-08-14 14:29:59.000000000 +0200
++++ awn-extras-0.4.0/applets/unmaintained/MiMenu/menus.py 2011-12-16 20:30:42.060104523 +0100
+@@ -12,8 +12,6 @@
+ class MenuDateStore:
+ MENUCORE = gmenu.lookup_tree('applications.menu')
+ MENUROOT = MENUCORE.get_root_directory()
+- SYSTEMMENUCORE = gmenu.lookup_tree('settings.menu')
+- SYSTEMMENUROOT = SYSTEMMENUCORE.get_root_directory()
+ PATH = []
+
+
+diff -Naur awn-extras-0.4.0.orig/applets/unmaintained/MiMenu/mimenu.py awn-extras-0.4.0/applets/unmaintained/MiMenu/mimenu.py
+--- awn-extras-0.4.0.orig/applets/unmaintained/MiMenu/mimenu.py 2009-10-27 20:45:47.000000000 +0100
++++ awn-extras-0.4.0/applets/unmaintained/MiMenu/mimenu.py 2011-12-16 20:30:35.897158422 +0100
+@@ -69,8 +69,7 @@
+ tree1.set_headers_visible (0)
+ tree1.append_column(column1)
+ tree1.append_column(column2)
+- lst1,self.objlist1 = menus.get_menus(menus.data.MENUROOT,
+- root2=menus.data.SYSTEMMENUROOT)
++ lst1,self.objlist1 = menus.get_menus(menus.data.MENUROOT)
+ model = menus.set_model(tree1,lst1,self.theme,self.location_icon)
+ tree1.connect('cursor_changed', self.treeclick,
+ tree1,self.objlist1,False)