summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorV3n3RiX <venerix@gmail.com>2015-08-19 16:33:59 +0100
committerV3n3RiX <venerix@gmail.com>2015-08-19 16:33:59 +0100
commitd69a0e6648e991514d05e8a4b5f5d205c16c6455 (patch)
tree836882f522fdcd95561e471815bca987699f925f
parent3bd4e9fe67ccf3ffade8c12513f6e5185b5cedeb (diff)
cherry pick upower 0.99 support for mate-session-manager && mate-power-manager, and force them to link only against it, dropping upower-pm-utils
-rw-r--r--mate-base/mate-session-manager/Manifest1
-rwxr-xr-xmate-base/mate-session-manager/files/10-user-dirs-update-mate10
-rw-r--r--mate-base/mate-session-manager/files/15-xdg-data-mate9
-rw-r--r--mate-base/mate-session-manager/files/MATE109
-rw-r--r--mate-base/mate-session-manager/files/defaults.list336
-rw-r--r--mate-base/mate-session-manager/files/mate-session-manager-1.2.0-idle-transition.patch10
-rw-r--r--mate-base/mate-session-manager/files/mate-session-manager-1.5.2-save-session-ui.patch535
-rw-r--r--mate-base/mate-session-manager/files/mate-session-manager-upower1.patch86
-rw-r--r--mate-base/mate-session-manager/mate-session-manager-1.8.1-r1.ebuild104
-rw-r--r--mate-extra/mate-power-manager/Manifest1
-rw-r--r--mate-extra/mate-power-manager/files/mate-power-manager-1.6-libsecret.patch144
-rw-r--r--mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-avoid-levels-is-0-warning.patch15
-rw-r--r--mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-dbus_interface_keyboard_backlight_controls.patch160
-rw-r--r--mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-improve-UPower1-support.patch102
-rw-r--r--mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-other-round-of-fixes-for-UPower-0.99-API-changes.patch217
-rw-r--r--mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-port-to-upower-0.99-API.patch390
-rw-r--r--mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-remove-battery-recall-logic.patch263
-rw-r--r--mate-extra/mate-power-manager/mate-power-manager-1.8.0-r1.ebuild104
18 files changed, 2596 insertions, 0 deletions
diff --git a/mate-base/mate-session-manager/Manifest b/mate-base/mate-session-manager/Manifest
new file mode 100644
index 00000000..6cf562c9
--- /dev/null
+++ b/mate-base/mate-session-manager/Manifest
@@ -0,0 +1 @@
+DIST mate-session-manager-1.8.1.tar.xz 524204 SHA256 2f85a714704bc475d08809be6ecf24a5d94d2e2d0ea5ac704d67557c349d7b8c SHA512 1b09a471db710193a643ec90c9b153468d9a303957b9c4da4e30cf470aa5f582b6992f5e0ed69129943aa44f7c4e372e2a8554fc6020627817a3c49d656ca5b5 WHIRLPOOL 8c771ac713da92c2ae8bccc173a9cba4fc5bb16a943e588c679624e3e945555f2c37511426e666f38440947ec37139452ee230d07bc3a414a65629c04bfd31a6
diff --git a/mate-base/mate-session-manager/files/10-user-dirs-update-mate b/mate-base/mate-session-manager/files/10-user-dirs-update-mate
new file mode 100755
index 00000000..35973aae
--- /dev/null
+++ b/mate-base/mate-session-manager/files/10-user-dirs-update-mate
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Create various XDG directories, and write ~/.config/user-dirs.dirs, etc.
+# That file is read by glib to get XDG_PICTURES_DIR, etc
+
+if [ "$DESKTOP_SESSION" = "mate" ]; then
+ if type xdg-user-dirs-update >/dev/null 2>&1; then
+ xdg-user-dirs-update
+ fi
+fi
diff --git a/mate-base/mate-session-manager/files/15-xdg-data-mate b/mate-base/mate-session-manager/files/15-xdg-data-mate
new file mode 100644
index 00000000..df360cf8
--- /dev/null
+++ b/mate-base/mate-session-manager/files/15-xdg-data-mate
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+if [ "$DESKTOP_SESSION" = "mate" ]; then
+ if [ -z "$XDG_DATA_DIRS" ]; then
+ export XDG_DATA_DIRS=/usr/share/mate:/usr/local/share/:/usr/share/
+ else
+ export XDG_DATA_DIRS=/usr/share/mate:"$XDG_DATA_DIRS"
+ fi
+fi
diff --git a/mate-base/mate-session-manager/files/MATE b/mate-base/mate-session-manager/files/MATE
new file mode 100644
index 00000000..baa154bd
--- /dev/null
+++ b/mate-base/mate-session-manager/files/MATE
@@ -0,0 +1,109 @@
+#!/bin/sh
+#
+# This file has bitrotted badly. Someone needs to clean this up.
+#
+
+if [ -f /etc/xdg/menus/mate-applications.menu ] ; then
+ export XDG_MENU_PREFIX=mate-
+fi
+
+for errfile in "$HOME/.materc-errors" "${TMPDIR-/tmp}/materc-$USER/tmp/materc-$USER"
+do
+ if ( cp /dev/null "$errfile" 2> /dev/null )
+ then
+ chmod 600 "$errfile"
+ exec > "$errfile" 2>&1
+ break
+ fi
+done
+#
+# Distributors:
+# You should modify the paths here to fit your distro
+# If you need to do so, send me (jirka@5z.com) a patch
+# and I'll try to make the script detect the distro stuff
+#
+
+userresources=$HOME/.Xresources
+usermodmap=$HOME/.Xmodmap
+userxkbmap=$HOME/.Xkbmap
+
+sysresources=/etc/X11/Xresources
+sysmodmap=/etc/X11/Xmodmap
+sysxkbmap=/etc/X11/Xkbmap
+
+rh6sysresources=/etc/X11/xinit/Xresources
+rh6sysmodmap=/etc/X11/xinit/Xmodmap
+
+if [ -x "$HOME/.materc" ]; then
+ command="$HOME/.materc"
+elif [ -x /etc/X11/gdm/materc ]; then
+ command="/etc/X11/gdm/materc"
+else
+ # as fallback in case the config is screwed
+ command=`which mate-session`
+fi
+
+# merge in defaults
+if [ -f "$rh6sysresources" ]; then
+ xrdb -merge "$rh6sysresources"
+fi
+
+if [ -f "$sysresources" ]; then
+ xrdb -merge "$sysresources"
+fi
+
+if [ -f "$userresources" ]; then
+ xrdb -merge "$userresources"
+fi
+
+# merge in keymaps
+if [ -f "$sysxkbmap" ]; then
+ setxkbmap `cat "$sysxkbmap"`
+ XKB_IN_USE=yes
+fi
+
+if [ -f "$userxkbmap" ]; then
+ setxkbmap `cat "$userxkbmap"`
+ XKB_IN_USE=yes
+fi
+
+#
+# Eeek, this seems like too much magic here
+#
+if [ -z "$XKB_IN_USE" ] && [ ! -L /etc/X11/X ]; then
+ if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 && [ -f /etc/X11/XF86Config ]; then
+ xkbsymbols=`sed -n -e 's/^[ ]*XkbSymbols[ ]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config`
+ if [ -n "$xkbsymbols" ]; then
+ setxkbmap -symbols "$xkbsymbols"
+ XKB_IN_USE=yes
+ fi
+ fi
+fi
+
+# xkb and xmodmap don't play nice together
+if [ -z "$XKB_IN_USE" ]; then
+ if [ -f "$rh6sysmodmap" ]; then
+ xmodmap "$rh6sysmodmap"
+ fi
+
+ if [ -f "$sysmodmap" ]; then
+ xmodmap "$sysmodmap"
+ fi
+
+ if [ -f "$usermodmap" ]; then
+ xmodmap "$usermodmap"
+ fi
+fi
+
+unset XKB_IN_USE
+
+# run all system xinitrc shell scripts.
+if [ -d /etc/X11/xinit/xinitrc.d ]; then
+ for i in /etc/X11/xinit/xinitrc.d/* ; do
+ if [ -x "$i" ]; then
+ . "$i"
+ fi
+ done
+fi
+
+exec $command
diff --git a/mate-base/mate-session-manager/files/defaults.list b/mate-base/mate-session-manager/files/defaults.list
new file mode 100644
index 00000000..0d6d6bf9
--- /dev/null
+++ b/mate-base/mate-session-manager/files/defaults.list
@@ -0,0 +1,336 @@
+[Default Applications]
+application/rtf=abiword.desktop
+application/x-abiword=abiword.desktop
+text/abiword=abiword.desktop
+text/richtext=abiword.desktop
+text/rtf=abiword.desktop
+text/x-abiword=abiword.desktop
+text/x-xml-abiword=abiword.desktop
+x-content/blank-bd=brasero-caja.desktop
+x-content/blank-dvd=brasero-caja.desktop
+x-content/blank-cd=brasero-caja.desktop
+x-content/blank-hddvd=brasero-caja.desktop
+application/x-dia-diagram=dia.desktop
+image/bmp=eom.desktop
+image/gif=eom.desktop
+image/jpeg=eom.desktop
+image/jpg=eom.desktop
+image/pjpeg=eom.desktop
+image/png=eom.desktop
+image/svg+xml=eom.desktop
+image/svg+xml-compressed=eom.desktop
+image/x-bmp=eom.desktop
+image/x-gray=eom.desktop
+image/x-icb=eom.desktop
+image/x-ico=eom.desktop
+image/x-pcx=eom.desktop
+image/x-png=eom.desktop
+image/x-portable-anymap=eom.desktop
+image/x-portable-bitmap=eom.desktop
+image/x-portable-graymap=eom.desktop
+image/x-portable-pixmap=eom.desktop
+image/x-xbitmap=eom.desktop
+image/x-xpixmap=eom.desktop
+image/vnd.wap.wbmp=eom.desktop
+image/g3fax=gimp.desktop
+image/x-compressed-xcf=gimp.desktop
+image/x-fits=gimp.desktop
+image/x-icon=gimp.desktop
+image/x-psd=gimp.desktop
+image/x-sgi=gimp.desktop
+image/x-sun-raster=gimp.desktop
+image/x-tga=gimp.desktop
+image/x-xcf=gimp.desktop
+image/x-xwindowdump=gimp.desktop
+application/xhtml+xml=firefox.desktop;firefox-3.6.desktop;epiphany.desktop
+text/html=firefox.desktop;firefox-3.6.desktop;epiphany.desktop
+application/pdf=atril.desktop
+application/x-bzpdf=atril.desktop
+application/x-gzpdf=atril.desktop
+application/postscript=atril.desktop
+application/x-bzpostscript=atril.desktop
+application/x-gzpostscript=atril.desktop
+image/x-eps=atril.desktop
+image/x-bzeps=atril.desktop
+image/x-gzeps=atril.desktop
+application/x-dvi=atril.desktop
+application/x-bzdvi=atril.desktop
+application/x-gzdvi=atril.desktop
+image/vnd.djvu=atril.desktop
+image/tiff=atril.desktop
+application/x-cbr=atril.desktop
+application/x-cbz=atril.desktop
+application/x-cb7=atril.desktop
+application/x-7z-compressed=engrampa.desktop
+application/x-7z-compressed-tar=engrampa.desktop
+application/x-ace=engrampa.desktop
+application/x-alz=engrampa.desktop
+application/x-ar=engrampa.desktop
+application/x-arj=engrampa.desktop
+application/x-bzip=engrampa.desktop
+application/x-bzip-compressed-tar=engrampa.desktop
+application/x-bzip1=engrampa.desktop
+application/x-bzip1-compressed-tar=engrampa.desktop
+application/x-cabinet=engrampa.desktop
+application/x-cd-image=engrampa.desktop
+application/x-compress=engrampa.desktop
+application/x-compressed-tar=engrampa.desktop
+application/x-cpio=engrampa.desktop
+application/x-deb=engrampa.desktop
+application/x-ear=engrampa.desktop
+application/x-gtar=engrampa.desktop
+application/x-gzip=engrampa.desktop
+application/x-java-archive=engrampa.desktop
+application/x-lha=engrampa.desktop
+application/x-lhz=engrampa.desktop
+application/x-lzip=engrampa.desktop
+application/x-lzip-compressed-tar=engrampa.desktop
+application/x-lzma=engrampa.desktop
+application/x-lzma-compressed-tar=engrampa.desktop
+application/x-lzop=engrampa.desktop
+application/x-lzop-compressed-tar=engrampa.desktop
+application/x-rar=engrampa.desktop
+application/x-rar-compressed=engrampa.desktop
+application/x-rpm=engrampa.desktop
+application/x-rzip=engrampa.desktop
+application/x-tar=engrampa.desktop
+application/x-tarz=engrampa.desktop
+application/x-stuffit=engrampa.desktop
+application/x-war=engrampa.desktop
+application/x-xz=engrampa.desktop
+application/x-xz-compressed-tar=engrampa.desktop
+application/x-zip=engrampa.desktop
+application/x-zip-compressed=engrampa.desktop
+application/x-zoo=engrampa.desktop
+application/zip=engrampa.desktop
+multipart/x-zip=engrampa.desktop
+text/plain=pluma.desktop
+text/css=pluma.desktop
+text/javascript=pluma.desktop
+text/mathml=pluma.desktop
+text/x-csrc=pluma.desktop
+text/x-chdr=pluma.desktop
+text/x-dtd=pluma.desktop
+text/x-java=pluma.desktop
+text/x-javascript=pluma.desktop
+text/x-patch=pluma.desktop
+text/x-perl=pluma.destkop
+text/x-php=pluma.destkop
+text/x-python=pluma.destkop
+text/x-sql=pluma.desktop
+text/xml=pluma.desktop
+application/javascript=pluma.destkop
+application/x-cgi=pluma.desktop
+application/x-javascript=pluma.desktop
+application/x-perl=pluma.desktop
+application/x-php=pluma.desktop
+application/x-python=pluma.desktop
+application/xml=pluma.desktop
+application/xml-dtd=pluma.desktop
+application/x-font-ttf=mate-font-viewer.desktop
+application/x-font-pcf=mate-font-viewer.desktop
+application/x-font-type1=mate-font-viewer.desktop
+application/x-font-otf=mate-font-viewer.desktop
+application/csv=gnumeric.desktop
+application/excel=gnumeric.desktop
+application/msexcel=gnumeric.desktop
+application/tab-separated-values=gnumeric.desktop
+application/vnd.lotus-1-2-3=gnumeric.desktop
+application/vnd.ms-excel=gnumeric.desktop
+application/x-123=gnumeric.desktop
+application/x-applix-spreadsheet=gnumeric.desktop
+application/x-dbase=gnumeric.desktop
+application/x-dbf=gnumeric.desktop
+application/x-dos_ms_excel=gnumeric.desktop
+application/x-excel=gnumeric.desktop
+application/x-gnumeric=gnumeric.desktop
+application/x-mps=gnumeric.desktop
+application/x-ms-excel=gnumeric.desktop
+application/x-msexcel=gnumeric.desktop
+application/x-oleo=gnumeric.desktop
+application/x-planperfect=gnumeric.desktop
+application/x-quattropro=gnumeric.desktop
+application/x-sc=gnumeric.desktop
+application/x-sylk=gnumeric.desktop
+application/x-xbase=gnumeric.desktop
+application/x-xls=gnumeric.desktop
+application/xls=gnumeric.desktop
+text/comma-separated-values=gnumeric.desktop
+text/csv=gnumeric.desktop
+text/spreadsheet=gnumeric.desktop
+text/tab-separated-values=gnumeric.desktop
+text/x-comma-separated-values=gnumeric.desktop
+text/x-csv=gnumeric.desktop
+zz-application/zz-winassoc-xls=gnumeric.desktop
+x-content/software=caja-autorun-software.desktop
+x-directory/gnome-default-handler=caja-folder-handler.desktop
+x-directory/normal=caja-folder-handler.desktop
+inode/directory=caja-folder-handler.desktop
+application/x-gnome-saved-search=caja-folder-handler.desktop
+application/vnd.oasis.opendocument.spreadsheet=libreoffice-calc.desktop;openoffice.org-calc.desktop
+application/vnd.oasis.opendocument.spreadsheet-template=libreoffice-calc.desktop;openoffice.org-calc.desktop
+application/vnd.sun.xml.calc=libreoffice-calc.desktop;openoffice.org-calc.desktop
+application/vnd.sun.xml.calc.template=libreoffice-calc.desktop;openoffice.org-calc.desktop
+application/vnd.stardivision.calc=libreoffice-calc.desktop;openoffice.org-calc.desktop
+application/vnd.stardivision.chart=libreoffice-calc.desktop;openoffice.org-calc.desktop
+application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=libreoffice-calc.desktop;openoffice.org-calc.desktop
+application/vnd.ms-excel.sheet.macroenabled.12=libreoffice-calc.desktop;openoffice.org-calc.desktop
+application/vnd.openxmlformats-officedocument.spreadsheetml.template=libreoffice-calc.desktop;openoffice.org-calc.desktop
+application/vnd.ms-excel.template.macroenabled.12=libreoffice-calc.desktop;openoffice.org-calc.desktop
+application/vnd.ms-excel.sheet.binary.macroenabled.12=libreoffice-calc.desktop;openoffice.org-calc.desktop
+application/vnd.oasis.opendocument.graphics=libreoffice-draw.desktop;openoffice.org-draw.desktop
+application/vnd.oasis.opendocument.graphics-template=libreoffice-draw.desktop;openoffice.org-draw.desktop
+application/vnd.sun.xml.draw=libreoffice-draw.desktop;openoffice.org-draw.desktop
+application/vnd.sun.xml.draw.template=libreoffice-draw.desktop;openoffice.org-draw.desktop
+application/vnd.stardivision.draw=libreoffice-draw.desktop;openoffice.org-draw.desktop
+application/vnd.oasis.opendocument.presentation=libreoffice-impress.desktop;openoffice.org-impress.desktop
+application/vnd.oasis.opendocument.presentation-template=libreoffice-impress.desktop;openoffice.org-impress.desktop
+application/vnd.sun.xml.impress=libreoffice-impress.desktop;openoffice.org-impress.desktop
+application/vnd.sun.xml.impress.template=libreoffice-impress.desktop;openoffice.org-impress.desktop
+application/vnd.stardivision.impress=libreoffice-impress.desktop;openoffice.org-impress.desktop
+application/mspowerpoint=libreoffice-impress.desktop;openoffice.org-impress.desktop
+application/vnd.ms-powerpoint=libreoffice-impress.desktop;openoffice.org-impress.desktop
+application/vnd.openxmlformats-officedocument.presentationml.presentation=libreoffice-impress.desktop;openoffice.org-impress.desktop
+application/vnd.ms-powerpoint.presentation.macroenabled.12=libreoffice-impress.desktop;openoffice.org-impress.desktop
+application/vnd.openxmlformats-officedocument.presentationml.template=libreoffice-impress.desktop;openoffice.org-impress.desktop
+application/vnd.ms-powerpoint.template.macroenabled.12=libreoffice-impress.desktop;openoffice.org-impress.desktop
+application/vnd.oasis.opendocument.formula=libreoffice-math.desktop;openoffice.org-math.desktop
+application/vnd.sun.xml.math=libreoffice-math.desktop;openoffice.org-math.desktop
+application/vnd.stardivision.math=libreoffice-math.desktop;openoffice.org-math.desktop
+application/vnd.oasis.opendocument.text=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.oasis.opendocument.text-template=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.oasis.opendocument.text-web=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.oasis.opendocument.text-master=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.sun.xml.writer=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.sun.xml.writer.template=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.sun.xml.writer.global=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.stardivision.writer=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/msword=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.ms-word=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/x-doc=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.wordperfect=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/wordperfect=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.ms-word.document.macroenabled.12=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.openxmlformats-officedocument.wordprocessingml.template=libreoffice-writer.desktop;openoffice.org-writer.desktop
+application/vnd.ms-word.template.macroenabled.12=libreoffice-writer.desktop;openoffice.org-writer.desktop
+x-content/audio-player=rhythmbox.desktop
+x-content/audio-cdda=sound-juicer.desktop
+application/x-shockwave-flash=swfdec-player.desktop
+application/futuresplash=swfdec-player.desktop
+application/mxf=vlc.desktop
+application/ogg=vlc.desktop
+application/ram=vlc.desktop
+application/sdp=vlc.desktop
+application/smil=vlc.desktop
+application/smil+xml=vlc.desktop
+application/vnd.ms-wpl=vlc.desktop
+application/vnd.rn-realmedia=vlc.desktop
+application/x-extension-m4a=vlc.desktop
+application/x-extension-mp4=vlc.desktop
+application/x-flac=vlc.desktop
+application/x-flash-video=vlc.desktop
+application/x-lyx=lyx.desktop
+application/x-matroska=vlc.desktop
+application/x-netshow-channel=vlc.desktop
+application/x-ogg=vlc.desktop
+application/x-quicktime-media-link=vlc.desktop
+application/x-quicktimeplayer=vlc.desktop
+application/x-shorten=vlc.desktop
+application/x-smil=vlc.desktop
+application/xspf+xml=vlc.desktop
+audio/3gpp=vlc.desktop
+audio/ac3=vlc.desktop
+audio/AMR=vlc.desktop
+audio/AMR-WB=vlc.desktop
+audio/basic=vlc.desktop
+audio/midi=vlc.desktop
+audio/mp4=vlc.desktop
+audio/mpeg=vlc.desktop
+audio/mpegurl=vlc.desktop
+audio/ogg=vlc.desktop
+audio/prs.sid=vlc.desktop
+audio/vnd.rn-realaudio=vlc.desktop
+audio/x-ape=vlc.desktop
+audio/x-flac=vlc.desktop
+audio/x-gsm=vlc.desktop
+audio/x-it=vlc.desktop
+audio/x-m4a=vlc.desktop
+audio/x-matroska=vlc.desktop
+audio/x-mod=vlc.desktop
+audio/x-mp3=vlc.desktop
+audio/x-mpeg=vlc.desktop
+audio/x-mpegurl=vlc.desktop
+audio/x-ms-asf=vlc.desktop
+audio/x-ms-asx=vlc.desktop
+audio/x-ms-wax=vlc.desktop
+audio/x-ms-wma=vlc.desktop
+audio/x-musepack=vlc.desktop
+audio/x-pn-aiff=vlc.desktop
+audio/x-pn-au=vlc.desktop
+audio/x-pn-realaudio=vlc.desktop
+audio/x-pn-realaudio-plugin=vlc.desktop
+audio/x-pn-wav=vlc.desktop
+audio/x-pn-windows-acm=vlc.desktop
+audio/x-realaudio=vlc.desktop
+audio/x-real-audio=vlc.desktop
+audio/x-sbc=vlc.desktop
+audio/x-scpls=vlc.desktop
+audio/x-speex=vlc.desktop
+audio/x-tta=vlc.desktop
+audio/x-vorbis=audacious.desktop
+audio/x-vorbis+ogg=audacious.desktop
+audio/x-wav=audacious.desktop
+audio/x-wavpack=audacious.desktop
+audio/x-xm=audacious.desktop
+image/vnd.rn-realpix=vlc.desktop
+image/x-pict=vlc.desktop
+misc/ultravox=vlc.desktop
+text/google-video-pointer=vlc.desktop
+text/x-google-video-pointer=vlc.desktop
+video/3gpp=vlc.desktop
+video/dv=vlc.desktop
+video/fli=vlc.desktop
+video/flv=vlc.desktop
+video/mp2t=vlc.desktop
+video/mp4=vlc.desktop
+video/mp4v-es=vlc.desktop
+video/mpeg=vlc.desktop
+video/msvideo=vlc.desktop
+video/ogg=vlc.desktop
+video/quicktime=vlc.desktop
+video/vivo=vlc.desktop
+video/vnd.divx=vlc.desktop
+video/vnd.rn-realvideo=vlc.desktop
+video/vnd.vivo=vlc.desktop
+video/webm=vlc.desktop
+video/x-anim=vlc.desktop
+video/x-avi=vlc.desktop
+video/x-flc=vlc.desktop
+video/x-fli=vlc.desktop
+video/x-flic=vlc.desktop
+video/x-flv=vlc.desktop
+video/x-m4v=vlc.desktop
+video/x-matroska=vlc.desktop
+video/x-mpeg=vlc.desktop
+video/x-ms-asf=vlc.desktop
+video/x-ms-asx=vlc.desktop
+video/x-msvideo=vlc.desktop
+video/x-ms-wm=vlc.desktop
+video/x-ms-wmv=vlc.desktop
+video/x-ms-wmx=vlc.desktop
+video/x-ms-wvx=vlc.desktop
+video/x-nsv=vlc.desktop
+video/x-ogm+ogg=vlc.desktop
+video/x-theora+ogg=vlc.desktop
+video/x-totem-stream=vlc.desktop
+x-content/video-dvd=vlc.desktop
+x-content/video-vcd=vlc.desktop
+x-content/video-svcd=vlc.desktop
+x-scheme-handler/ghelp=yelp.desktop;
+x-scheme-handler/help=yelp.desktop;
+x-scheme-handler/http=firefox.desktop;epiphany.desktop
+x-scheme-handler/https=firefox.desktop;epiphany.desktop
+x-scheme-handler/mailto=evolution.desktop
+application/x-bittorrent=transmission-gtk.desktop;deluge.desktop
+x-scheme-handler/magnet=transmission-gtk.desktop;deluge.desktop
diff --git a/mate-base/mate-session-manager/files/mate-session-manager-1.2.0-idle-transition.patch b/mate-base/mate-session-manager/files/mate-session-manager-1.2.0-idle-transition.patch
new file mode 100644
index 00000000..62a229e5
--- /dev/null
+++ b/mate-base/mate-session-manager/files/mate-session-manager-1.2.0-idle-transition.patch
@@ -0,0 +1,10 @@
+--- a/mate-session/gs-idle-monitor.c 2012-02-29 22:03:08.000000000 +0100
++++ b/mate-session/gs-idle-monitor.c 2012-08-08 11:49:13.308281663 +0200
+@@ -448,6 +448,7 @@
+ attr.delta = delta;
+ attr.events = TRUE;
+
++ attr.trigger.wait_value = _int64_to_xsyncvalue (_xsyncvalue_to_int64 (watch->interval) - 1);
+ attr.trigger.test_type = XSyncPositiveTransition;
+ if (watch->xalarm_positive != None) {
+ g_debug ("GSIdleMonitor: updating alarm for positive transition wait=%lld",
diff --git a/mate-base/mate-session-manager/files/mate-session-manager-1.5.2-save-session-ui.patch b/mate-base/mate-session-manager/files/mate-session-manager-1.5.2-save-session-ui.patch
new file mode 100644
index 00000000..8a57d44a
--- /dev/null
+++ b/mate-base/mate-session-manager/files/mate-session-manager-1.5.2-save-session-ui.patch
@@ -0,0 +1,535 @@
+diff -burN a/capplet/gsm-properties-dialog.c b/capplet/gsm-properties-dialog.c
+--- a/capplet/gsm-properties-dialog.c 2012-02-29 22:03:08.000000000 +0100
++++ b/capplet/gsm-properties-dialog.c 2012-08-08 12:16:37.527332034 +0200
+@@ -26,6 +26,8 @@
+ #include <glib.h>
+ #include <glib/gi18n.h>
+ #include <gtk/gtk.h>
++#include <dbus/dbus-glib.h>
++#include <dbus/dbus-glib-lowlevel.h>
+
+ #include <mateconf/mateconf-client.h>
+
+@@ -36,6 +38,11 @@
+ #include "gsp-app.h"
+ #include "gsp-app-manager.h"
+
++
++#define GSM_SERVICE_DBUS "org.mate.SessionManager"
++#define GSM_PATH_DBUS "/org/mate/SessionManager"
++#define GSM_INTERFACE_DBUS "org.mate.SessionManager"
++
+ #define GSM_PROPERTIES_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_PROPERTIES_DIALOG, GsmPropertiesDialogPrivate))
+
+ #define IS_STRING_EMPTY(x) ((x)==NULL||(x)[0]=='\0')
+@@ -50,6 +57,7 @@
+ #define CAPPLET_DELETE_WIDGET_NAME "session_properties_delete_button"
+ #define CAPPLET_EDIT_WIDGET_NAME "session_properties_edit_button"
+ #define CAPPLET_SAVE_WIDGET_NAME "session_properties_save_button"
++#define CAPPLET_SESSION_SAVED_WIDGET_NAME "session_properties_session_saved_label"
+ #define CAPPLET_REMEMBER_WIDGET_NAME "session_properties_remember_toggle"
+
+ #define STARTUP_APP_ICON "system-run"
+@@ -493,10 +501,66 @@
+ }
+
+ static void
++session_saved_message (GsmPropertiesDialog *dialog,
++ const char *msg,
++ gboolean is_error)
++{
++ GtkLabel *label;
++ gchar *markup;
++
++ label = GTK_LABEL (gtk_builder_get_object (dialog->priv->xml, CAPPLET_SESSION_SAVED_WIDGET_NAME));
++ if (is_error)
++ markup = g_markup_printf_escaped ("<span foreground=\"red\">%s</span>", msg);
++ else
++ markup = g_markup_escape_text (msg, -1);
++
++ gtk_label_set_markup (label, markup);
++ g_free (markup);
++}
++
++static void
++session_saved_cb (DBusGProxy *proxy,
++ DBusGProxyCall *call_id,
++ void *user_data)
++{
++ gboolean res;
++ GsmPropertiesDialog *dialog = user_data;
++
++ res = dbus_g_proxy_end_call (proxy, call_id, NULL, G_TYPE_INVALID);
++ if (res)
++ session_saved_message (dialog, _("Your session has been saved."), FALSE);
++ else
++ session_saved_message (dialog, _("Failed to save session"), TRUE);
++
++ g_object_unref (proxy);
++}
++
++static void
+ on_save_session_clicked (GtkWidget *widget,
+ GsmPropertiesDialog *dialog)
+ {
+- g_debug ("Session saving is not implemented yet!");
++ DBusGConnection *conn;
++ DBusGProxy *proxy;
++ DBusGProxyCall *call;
++
++ conn = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
++ if (conn == NULL) {
++ session_saved_message (dialog, _("Could not connect to the session bus"), TRUE);
++ return;
++ }
++
++ proxy = dbus_g_proxy_new_for_name (conn, GSM_SERVICE_DBUS, GSM_PATH_DBUS, GSM_INTERFACE_DBUS);
++ if (proxy == NULL) {
++ session_saved_message (dialog, _("Could not connect to the session manager"), TRUE);
++ return;
++ }
++
++ call = dbus_g_proxy_begin_call (proxy, "SaveSession", session_saved_cb, dialog, NULL, G_TYPE_INVALID);
++ if (call == NULL) {
++ session_saved_message (dialog, _("Failed to save session"), TRUE);
++ g_object_unref (proxy);
++ return;
++ }
+ }
+
+ static void
+diff -burN a/configure.ac b/configure.ac
+--- a/configure.ac 2012-02-29 22:03:09.000000000 +0100
++++ b/configure.ac 2012-08-08 12:18:58.740336360 +0200
+@@ -75,6 +75,7 @@
+ PKG_CHECK_MODULES(SESSION_PROPERTIES,
+ glib-2.0 >= $GLIB_REQUIRED
+ gtk+-$GTK_API_VERSION >= $GTK_REQUIRED
++ dbus-glib-1 >= $DBUS_GLIB_REQUIRED
+ )
+
+ PKG_CHECK_MODULES(SM, sm)
+diff -burN a/data/session-properties.ui b/data/session-properties.ui
+--- a/data/session-properties.ui 2012-02-29 22:03:08.000000000 +0100
++++ b/data/session-properties.ui 2012-08-08 12:22:36.619343035 +0200
+@@ -148,6 +148,7 @@
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkButton" id="session_properties_save_button">
++ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <child>
+@@ -191,6 +192,17 @@
+ <property name="position">1</property>
+ </packing>
+ </child>
++ <child>
++ <object class="GtkLabel" id="session_properties_session_saved_label">
++ <property name="visible">True</property>
++ <property name="wrap">True</property>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">False</property>
++ <property name="position">2</property>
++ </packing>
++ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+diff -burN a/mate-session/gsm-client.c b/mate-session/gsm-client.c
+--- a/mate-session/gsm-client.c 2012-02-29 22:03:08.000000000 +0100
++++ b/mate-session/gsm-client.c 2012-08-08 12:24:20.120346205 +0200
+@@ -510,6 +510,17 @@
+ g_signal_emit (client, signals[DISCONNECTED], 0);
+ }
+
++gboolean
++gsm_client_request_save (GsmClient *client,
++ guint flags,
++ GError **error)
++{
++ g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE);
++
++ return GSM_CLIENT_GET_CLASS (client)->impl_request_save (client, flags, error);
++}
++
++
+ GKeyFile *
+ gsm_client_save (GsmClient *client,
+ GError **error)
+diff -burN a/mate-session/gsm-client.h b/mate-session/gsm-client.h
+--- a/mate-session/gsm-client.h 2012-02-29 22:03:09.000000000 +0100
++++ b/mate-session/gsm-client.h 2012-08-08 12:26:38.848350455 +0200
+@@ -94,6 +94,9 @@
+ GError **error);
+ gboolean (*impl_stop) (GsmClient *client,
+ GError **error);
++ gboolean (*impl_request_save) (GsmClient *client,
++ guint flags,
++ GError **error);
+ GKeyFile * (*impl_save) (GsmClient *client,
+ GError **error);
+ };
+@@ -139,6 +142,10 @@
+
+ void gsm_client_disconnected (GsmClient *client);
+
++gboolean gsm_client_request_save (GsmClient *client,
++ guint flags,
++ GError **error);
++
+ GKeyFile *gsm_client_save (GsmClient *client,
+ GError **error);
+ /* exported to bus */
+diff -burN a/mate-session/gsm-dbus-client.c b/mate-session/gsm-dbus-client.c
+--- a/mate-session/gsm-dbus-client.c 2012-02-29 22:03:08.000000000 +0100
++++ b/mate-session/gsm-dbus-client.c 2012-08-08 12:38:15.393371794 +0200
+@@ -413,6 +413,19 @@
+ G_OBJECT_CLASS (gsm_dbus_client_parent_class)->finalize (object);
+ }
+
++static gboolean
++dbus_client_request_save (GsmClient *client,
++ guint flags,
++ GError **error)
++{
++ g_debug ("GsmDBusClient: sending save request to client with id %s",
++ gsm_client_peek_id (client));
++
++ /* FIXME: The protocol does not support this */
++
++ return FALSE;
++}
++
+ static GKeyFile *
+ dbus_client_save (GsmClient *client,
+ GError **error)
+@@ -665,6 +678,7 @@
+ object_class->set_property = gsm_dbus_client_set_property;
+ object_class->dispose = gsm_dbus_client_dispose;
+
++ client_class->impl_request_save = dbus_client_request_save;
+ client_class->impl_save = dbus_client_save;
+ client_class->impl_stop = dbus_client_stop;
+ client_class->impl_query_end_session = dbus_client_query_end_session;
+diff -burN a/mate-session/gsm-manager.c b/mate-session/gsm-manager.c
+--- a/mate-session/gsm-manager.c 2012-02-29 22:03:09.000000000 +0100
++++ b/mate-session/gsm-manager.c 2012-08-08 12:47:24.627388620 +0200
+@@ -68,6 +68,7 @@
+ #define GSM_MANAGER_DBUS_NAME "org.mate.SessionManager"
+
+ #define GSM_MANAGER_PHASE_TIMEOUT 30 /* seconds */
++#define GSM_MANAGER_SAVE_SESSION_TIMEOUT 2
+
+ #define MDM_FLEXISERVER_COMMAND "mdmflexiserver"
+ #define MDM_FLEXISERVER_ARGS "--startnew Standard"
+@@ -1176,6 +1177,69 @@
+
+ }
+
++static gboolean
++_client_request_save (GsmClient *client,
++ ClientEndSessionData *data)
++{
++ gboolean ret;
++ GError *error;
++
++ error = NULL;
++ ret = gsm_client_request_save (client, data->flags, &error);
++ if (ret) {
++ g_debug ("GsmManager: adding client to query clients: %s", gsm_client_peek_id (client));
++ data->manager->priv->query_clients = g_slist_prepend (data->manager->priv->query_clients,
++ client);
++ } else if (error) {
++ g_debug ("GsmManager: unable to query client: %s", error->message);
++ g_error_free (error);
++ }
++
++ return FALSE;
++}
++
++static gboolean
++_client_request_save_helper (const char *id,
++ GsmClient *client,
++ ClientEndSessionData *data)
++{
++ return _client_request_save (client, data);
++}
++
++static void
++query_save_session_complete (GsmManager *manager)
++{
++ GError *error = NULL;
++
++ if (g_slist_length (manager->priv->next_query_clients) > 0) {
++ ClientEndSessionData data;
++
++ data.manager = manager;
++ data.flags = GSM_CLIENT_END_SESSION_FLAG_LAST;
++
++ g_slist_foreach (manager->priv->next_query_clients,
++ (GFunc)_client_request_save,
++ &data);
++
++ g_slist_free (manager->priv->next_query_clients);
++ manager->priv->next_query_clients = NULL;
++
++ return;
++ }
++
++ if (manager->priv->query_timeout_id > 0) {
++ g_source_remove (manager->priv->query_timeout_id);
++ manager->priv->query_timeout_id = 0;
++ }
++
++ gsm_session_save (manager->priv->clients, &error);
++
++ if (error) {
++ g_warning ("Error saving session: %s", error->message);
++ g_error_free (error);
++ }
++}
++
+ static guint32
+ generate_cookie (void)
+ {
+@@ -1250,6 +1314,21 @@
+ return FALSE;
+ }
+
++static gboolean
++_on_query_save_session_timeout (GsmManager *manager)
++{
++ manager->priv->query_timeout_id = 0;
++
++ g_debug ("GsmManager: query to save session timed out");
++
++ g_slist_free (manager->priv->query_clients);
++ manager->priv->query_clients = NULL;
++
++ query_save_session_complete (manager);
++
++ return FALSE;
++}
++
+ static void
+ do_phase_query_end_session (GsmManager *manager)
+ {
+@@ -1886,13 +1965,32 @@
+ const char *reason,
+ GsmManager *manager)
+ {
+- /* just ignore if received outside of shutdown */
+- if (manager->priv->phase < GSM_MANAGER_PHASE_QUERY_END_SESSION) {
++ /* just ignore if we are not yet running */
++ if (manager->priv->phase < GSM_MANAGER_PHASE_RUNNING) {
+ return;
+ }
+
+ g_debug ("GsmManager: Response from end session request: is-ok=%d do-last=%d cancel=%d reason=%s", is_ok, do_last, cancel, reason ? reason :"");
+
++ if (manager->priv->phase == GSM_MANAGER_PHASE_RUNNING) {
++ /* Ignore responses when no requests were sent */
++ if (manager->priv->query_clients == NULL) {
++ return;
++ }
++
++ manager->priv->query_clients = g_slist_remove (manager->priv->query_clients, client);
++
++ if (do_last) {
++ manager->priv->next_query_clients = g_slist_prepend (manager->priv->next_query_clients,
++ client);
++ }
++
++ if (manager->priv->query_clients == NULL) {
++ query_save_session_complete (manager);
++ }
++ return;
++ }
++
+ if (cancel) {
+ cancel_end_session (manager);
+ return;
+@@ -1991,6 +2089,15 @@
+ }
+
+ static void
++on_xsmp_client_save_request (GsmXSMPClient *client,
++ gboolean show_dialog,
++ GsmManager *manager)
++{
++ g_debug ("GsmManager: save_request");
++ gsm_manager_save_session (manager, NULL);
++}
++
++static void
+ on_store_client_added (GsmStore *store,
+ const char *id,
+ GsmManager *manager)
+@@ -2011,6 +2118,10 @@
+ "logout-request",
+ G_CALLBACK (on_xsmp_client_logout_request),
+ manager);
++ g_signal_connect (client,
++ "save-request",
++ G_CALLBACK (on_xsmp_client_save_request),
++ manager);
+ }
+
+ g_signal_connect (client,
+@@ -2968,6 +3079,41 @@
+ }
+
+ gboolean
++gsm_manager_save_session (GsmManager *manager,
++ GError **error)
++{
++ ClientEndSessionData data;
++
++ g_debug ("GsmManager: SaveSession called");
++
++ g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);
++
++ if (manager->priv->phase != GSM_MANAGER_PHASE_RUNNING) {
++ g_set_error (error,
++ GSM_MANAGER_ERROR,
++ GSM_MANAGER_ERROR_NOT_IN_RUNNING,
++ "SaveSession interface is only available during the Running phase");
++ return FALSE;
++ }
++
++ data.manager = manager;
++ data.flags = 0;
++ gsm_store_foreach (manager->priv->clients,
++ (GsmStoreFunc)_client_request_save_helper,
++ &data);
++
++ if (manager->priv->query_clients) {
++ manager->priv->query_timeout_id = g_timeout_add_seconds (GSM_MANAGER_SAVE_SESSION_TIMEOUT,
++ (GSourceFunc)_on_query_save_session_timeout,
++ manager);
++ return TRUE;
++ } else {
++ g_debug ("GsmManager: Nothing to save");
++ return FALSE;
++ }
++}
++
++gboolean
+ gsm_manager_can_shutdown (GsmManager *manager,
+ gboolean *shutdown_available,
+ GError **error)
+diff -burN a/mate-session/gsm-manager.h b/mate-session/gsm-manager.h
+--- a/mate-session/gsm-manager.h 2012-02-29 22:03:09.000000000 +0100
++++ b/mate-session/gsm-manager.h 2012-08-08 12:49:14.262391979 +0200
+@@ -154,6 +154,9 @@
+ gboolean gsm_manager_shutdown (GsmManager *manager,
+ GError **error);
+
++gboolean gsm_manager_save_session (GsmManager *manager,
++ GError **error);
++
+ gboolean gsm_manager_can_shutdown (GsmManager *manager,
+ gboolean *shutdown_available,
+ GError **error);
+diff -burN a/mate-session/gsm-xsmp-client.c b/mate-session/gsm-xsmp-client.c
+--- a/mate-session/gsm-xsmp-client.c 2012-02-29 22:03:08.000000000 +0100
++++ b/mate-session/gsm-xsmp-client.c 2012-08-08 12:52:27.719397905 +0200
+@@ -69,6 +69,7 @@
+ enum {
+ REGISTER_REQUEST,
+ LOGOUT_REQUEST,
++ SAVE_REQUEST,
+ LAST_SIGNAL
+ };
+
+@@ -502,6 +503,31 @@
+ return TRUE;
+ }
+
++static gboolean
++xsmp_request_save (GsmClient *client,
++ guint flags,
++ GError **error)
++{
++ GsmXSMPClient *xsmp = (GsmXSMPClient *) client;
++
++ g_debug ("GsmXSMPClient: xsmp_request_save ('%s')", xsmp->priv->description);
++
++ if (xsmp->priv->conn == NULL) {
++ g_set_error (error,
++ GSM_CLIENT_ERROR,
++ GSM_CLIENT_ERROR_NOT_REGISTERED,
++ "Client is not registered");
++ return FALSE;
++ }
++
++ if (flags & GSM_CLIENT_END_SESSION_FLAG_LAST)
++ xsmp_save_yourself_phase2 (client);
++ else
++ do_save_yourself (xsmp, SmSaveLocal, FALSE);
++
++ return TRUE;
++}
++
+ static char *
+ get_desktop_file_path (GsmXSMPClient *client)
+ {
+@@ -976,6 +1002,8 @@
+ object_class->get_property = gsm_xsmp_client_get_property;
+ object_class->set_property = gsm_xsmp_client_set_property;
+
++
++ client_class->impl_request_save = xsmp_request_save;
+ client_class->impl_save = xsmp_save;
+ client_class->impl_stop = xsmp_stop;
+ client_class->impl_query_end_session = xsmp_query_end_session;
+@@ -1003,6 +1031,16 @@
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__BOOLEAN,
++ G_TYPE_NONE,
++ 1, G_TYPE_BOOLEAN);
++ signals[SAVE_REQUEST] =
++ g_signal_new ("save-request",
++ G_OBJECT_CLASS_TYPE (object_class),
++ G_SIGNAL_RUN_LAST,
++ G_STRUCT_OFFSET (GsmXSMPClientClass, save_request),
++ NULL,
++ NULL,
++ g_cclosure_marshal_VOID__BOOLEAN,
+ G_TYPE_NONE,
+ 1, G_TYPE_BOOLEAN);
+
+diff -burN a/mate-session/gsm-xsmp-client.h b/mate-session/gsm-xsmp-client.h
+--- a/mate-session/gsm-xsmp-client.h 2012-02-29 22:03:09.000000000 +0100
++++ b/mate-session/gsm-xsmp-client.h 2012-08-08 12:53:39.629400108 +0200
+@@ -57,6 +57,8 @@
+ gboolean (*logout_request) (GsmXSMPClient *client,
+ gboolean prompt);
+
++ gboolean (*save_request) (GsmXSMPClient *client,
++ gboolean prompt);
+
+ void (*saved_state) (GsmXSMPClient *client);
+
+diff -burN a/mate-session/org.mate.SessionManager.xml b/mate-session/org.mate.SessionManager.xml
+--- a/mate-session/org.mate.SessionManager.xml 2012-02-29 22:03:09.000000000 +0100
++++ b/mate-session/org.mate.SessionManager.xml 2012-08-08 12:57:41.216407509 +0200
+@@ -256,6 +256,14 @@
+ </doc:doc>
+ </method>
+
++ <method name="SaveSession">
++ <doc:doc>
++ <doc:description>
++ <doc:para>Request to save session</doc:para>
++ </doc:description>
++ </doc:doc>
++ </method>
++
+ <method name="CanShutdown">
+ <arg name="is_available" direction="out" type="b">
+ <doc:doc>
diff --git a/mate-base/mate-session-manager/files/mate-session-manager-upower1.patch b/mate-base/mate-session-manager/files/mate-session-manager-upower1.patch
new file mode 100644
index 00000000..8c86a1c6
--- /dev/null
+++ b/mate-base/mate-session-manager/files/mate-session-manager-upower1.patch
@@ -0,0 +1,86 @@
+From 80be90bb422ef8cb5a28c7ff3fe2a337dce8c368 Mon Sep 17 00:00:00 2001
+From: Stefano Karapetsas <stefano@karapetsas.com>
+Date: Tue, 22 Apr 2014 16:44:37 +0000
+Subject: Allow to build with upower 0.99
+
+---
+diff --git a/mate-session/gsm-logout-dialog.c b/mate-session/gsm-logout-dialog.c
+index da3d651..697b70d 100644
+--- a/mate-session/gsm-logout-dialog.c
++++ b/mate-session/gsm-logout-dialog.c
+@@ -211,10 +211,10 @@ gsm_logout_supports_system_suspend (GsmLogoutDialog *logout_dialog)
+ if (LOGIND_RUNNING())
+ ret = gsm_systemd_can_suspend (logout_dialog->priv->systemd);
+ #endif
+-#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER)
++#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0)
+ else
+ #endif
+-#ifdef HAVE_UPOWER
++#if defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0)
+ ret = up_client_get_can_suspend (logout_dialog->priv->up_client);
+ #endif
+ return ret;
+@@ -229,10 +229,10 @@ gsm_logout_supports_system_hibernate (GsmLogoutDialog *logout_dialog)
+ if (LOGIND_RUNNING())
+ ret = gsm_systemd_can_hibernate (logout_dialog->priv->systemd);
+ #endif
+-#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER)
++#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0)
+ else
+ #endif
+-#ifdef HAVE_UPOWER
++#if defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0)
+ ret = up_client_get_can_hibernate (logout_dialog->priv->up_client);
+ #endif
+ return ret;
+diff --git a/mate-session/gsm-manager.c b/mate-session/gsm-manager.c
+index eda565b..638ef10 100644
+--- a/mate-session/gsm-manager.c
++++ b/mate-session/gsm-manager.c
+@@ -1163,10 +1163,10 @@ manager_attempt_hibernate (GsmManager *manager)
+ gsm_systemd_attempt_hibernate (systemd);
+ }
+ #endif
+-#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER)
++#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0)
+ else {
+ #endif
+-#ifdef HAVE_UPOWER
++#if defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0)
+ can_hibernate = up_client_get_can_hibernate (manager->priv->up_client);
+ if (can_hibernate) {
+
+@@ -1182,7 +1182,7 @@ manager_attempt_hibernate (GsmManager *manager)
+ }
+ }
+ #endif
+-#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER)
++#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0)
+ }
+ #endif
+ }
+@@ -1208,10 +1208,10 @@ manager_attempt_suspend (GsmManager *manager)
+ gsm_systemd_attempt_suspend (systemd);
+ }
+ #endif
+-#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER)
++#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0)
+ else {
+ #endif
+-#ifdef HAVE_UPOWER
++#if defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0)
+ can_suspend = up_client_get_can_suspend (manager->priv->up_client);
+ if (can_suspend) {
+
+@@ -1227,7 +1227,7 @@ manager_attempt_suspend (GsmManager *manager)
+ }
+ }
+ #endif
+-#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER)
++#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0)
+ }
+ #endif
+ }
+--
+cgit
diff --git a/mate-base/mate-session-manager/mate-session-manager-1.8.1-r1.ebuild b/mate-base/mate-session-manager/mate-session-manager-1.8.1-r1.ebuild
new file mode 100644
index 00000000..9d848576
--- /dev/null
+++ b/mate-base/mate-session-manager/mate-session-manager-1.8.1-r1.ebuild
@@ -0,0 +1,104 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/mate-base/mate-session-manager/mate-session-manager-1.8.1-r1.ebuild,v 1.6 2014/09/19 17:25:19 ssuominen Exp $
+
+EAPI="5"
+
+GCONF_DEBUG="yes"
+
+inherit autotools gnome2 versionator
+
+MATE_BRANCH="$(get_version_component_range 1-2)"
+
+SRC_URI="http://pub.mate-desktop.org/releases/${MATE_BRANCH}/${P}.tar.xz"
+DESCRIPTION="MATE session manager"
+HOMEPAGE="http://mate-desktop.org/"
+
+LICENSE="GPL-2 LGPL-2 FDL-1.1"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+IUSE="ipv6 elibc_FreeBSD gnome-keyring systemd upower"
+
+# x11-misc/xdg-user-dirs{,-gtk} are needed to create the various XDG_*_DIRs, and
+# create .config/user-dirs.dirs which is read by glib to get G_USER_DIRECTORY_*
+# xdg-user-dirs-update is run during login (see 10-user-dirs-update-gnome below).
+
+RDEPEND=">=dev-libs/dbus-glib-0.76
+ >=dev-libs/glib-2.25:2
+ dev-libs/libxslt
+ sys-apps/dbus
+ x11-apps/xdpyinfo
+ x11-libs/gdk-pixbuf:2
+ >=x11-libs/gtk+-2.14:2
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11
+ x11-libs/libXau
+ x11-libs/libXext
+ x11-libs/libXrender
+ x11-libs/libXtst
+ x11-libs/pango
+ x11-libs/xtrans
+ x11-misc/xdg-user-dirs
+ x11-misc/xdg-user-dirs-gtk
+ virtual/libintl
+ elibc_FreeBSD? ( dev-libs/libexecinfo )
+ gnome-keyring? ( gnome-base/gnome-keyring )
+ systemd? ( sys-apps/systemd )
+ upower? ( >=sys-power/upower-0.9.23 )"
+
+DEPEND="${RDEPEND}
+ >=dev-util/intltool-0.40:*
+ >=dev-lang/perl-5
+ >=mate-base/mate-common-1.6
+ >=sys-devel/gettext-0.10.40:*
+ virtual/pkgconfig:*
+ !<gnome-base/gdm-2.20.4"
+
+src_prepare() {
+ # Add "session saving" button back,
+ # see https://bugzilla.gnome.org/show_bug.cgi?id=575544
+ epatch "${FILESDIR}"/${PN}-1.5.2-save-session-ui.patch
+
+ # Fix race condition in idle monitor, GNOME bug applies to MATE too,
+ # see https://bugzilla.gnome.org/show_bug.cgi?id=627903
+ epatch "${FILESDIR}"/${PN}-1.2.0-idle-transition.patch
+ # allow to build with upower1
+ # cherry picked from http://git.mate-desktop.org/mate-session-manager/commit/?id=80be90bb422ef8cb5a28c7ff3fe2a337dce8c368
+ epatch "${FILESDIR}"/${PN}-upower1.patch
+
+ eautoreconf
+ gnome2_src_prepare
+}
+
+src_configure() {
+ gnome2_src_configure \
+ --docdir="${EPREFIX}/usr/share/doc/${PF}" \
+ --with-default-wm=mate-wm \
+ --with-gtk=2.0 \
+ $(use_enable ipv6) \
+ $(use_with systemd) \
+ $(use_enable upower)
+}
+
+DOCS="AUTHORS ChangeLog NEWS README"
+
+src_install() {
+ gnome2_src_install
+
+ dodir /etc/X11/Sessions/
+ exeinto /etc/X11/Sessions/
+ doexe "${FILESDIR}"/MATE
+
+ dodir /usr/share/mate/applications/
+ insinto /usr/share/mate/applications/
+ doins "${FILESDIR}"/defaults.list
+
+ dodir /etc/X11/xinit/xinitrc.d/
+ exeinto /etc/X11/xinit/xinitrc.d/
+ doexe "${FILESDIR}"/15-xdg-data-mate
+
+ # This should be done in MATE too, see Gentoo bug #270852
+ doexe "${FILESDIR}"/10-user-dirs-update-mate
+}
diff --git a/mate-extra/mate-power-manager/Manifest b/mate-extra/mate-power-manager/Manifest
new file mode 100644
index 00000000..f7b22cfa
--- /dev/null
+++ b/mate-extra/mate-power-manager/Manifest
@@ -0,0 +1 @@
+DIST mate-power-manager-1.8.0.tar.xz 3339588 SHA256 3d83b7736b0b6256242db3b9efaa18530b4ba6d80b146eafaf511230ae926d9f SHA512 f91b195e384138ce0881f53f4d3e8924d422445ac258de2138da16ab29999cd367b2e37c226e5d56e698bc54b82c8996b3263a638702f45b2f96ffabbceca479 WHIRLPOOL 31a423d25abd488bceb13354cabc3f80844f791060339ea38d4fa12f8ac80d1d4a4c94c8e07af7ba489fd5da98f7bbdfbf4edebe339926e91e0d39747ddb3a34
diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.6-libsecret.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.6-libsecret.patch
new file mode 100644
index 00000000..b36ce4e6
--- /dev/null
+++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.6-libsecret.patch
@@ -0,0 +1,144 @@
+diff --git a/README b/README
+index 77e1213..3f6a122 100644
+--- a/README
++++ b/README
+@@ -15,7 +15,7 @@ To build, MATE Power Manager requires
+
+ - Glib (2.13.0 or later)
+ - Gtk2+ (2.11.0 or later)
+- - MATE Keyring (1.1.0 or later)
++ - GNOME Keyring (3.0.0 or later)
+ - DBus (0.70 or later)
+ - libnotify (0.7.0 or later)
+ - Cairo (1.0.0 or later)
+diff --git a/configure.ac b/configure.ac
+index 89309ff..912c362 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -102,7 +102,7 @@ GLIB_REQUIRED=2.13.0
+ GIO_REQUIRED=2.25.0
+ GTK_REQUIRED=2.17.7
+ GDK_REQUIRED=2.11.0
+-MATE_KEYRING_REQUIRED=1.1.0
++GNOME_KEYRING_REQUIRED=3.0.0
+ DBUS_REQUIRED=1.0
+ DBUS_GLIB_REQUIRED=0.70
+ LIBNOTIFY_REQUIRED=0.7.0
+@@ -249,18 +249,18 @@ fi
+ AM_CONDITIONAL([HAVE_TESTS], [test $have_tests = yes])
+
+ dnl ---------------------------------------------------------------------------
+-dnl - Build mate-keyring support
++dnl - Build gnome-keyring support
+ dnl ---------------------------------------------------------------------------
+ AC_ARG_WITH(keyring,
+ [AS_HELP_STRING([--without-keyring],
+- [Disable the use of mate-keyring])],
++ [Disable the use of gnome-keyring])],
+ [],
+ [with_keyring=yes])
+
+ AM_CONDITIONAL([WITH_KEYRING],[test "$with_keyring" = "yes"])
+
+ if test "$with_keyring" = "yes"; then
+- PKG_CHECK_MODULES(KEYRING, mate-keyring-1 >= $MATE_KEYRING_REQUIRED)
++ PKG_CHECK_MODULES(KEYRING, gnome-keyring-1 >= $GNOME_KEYRING_REQUIRED)
+ AC_DEFINE([WITH_KEYRING],[1],[Define if KEYRING support is enabled])
+ fi
+
+@@ -393,7 +393,7 @@ echo "
+ datadir: ${datadir}
+ compiler: ${CC}
+ cflags: ${CFLAGS}
+- mate-keyring support: ${with_keyring}
++ gnome-keyring support: ${with_keyring}
+ Building extra applets: ${enable_applets}
+ Self test support: ${have_tests}
+ Use libunique: ${enable_libunique}
+diff --git a/data/org.mate.power-manager.gschema.xml.in b/data/org.mate.power-manager.gschema.xml.in
+index dcd2cd4..adecce0 100644
+--- a/data/org.mate.power-manager.gschema.xml.in
++++ b/data/org.mate.power-manager.gschema.xml.in
+@@ -183,13 +183,13 @@
+ </key>
+ <key name="lock-keyring-suspend" type="b">
+ <default>false</default>
+- <_summary>Lock MATE keyring on sleep</_summary>
+- <_description>Whether the MATE keyring is locked before the computer enters suspend. This means the keyring will have to be unlocked on resume.</_description>
++ <_summary>Lock GNOME keyring on sleep</_summary>
++ <_description>Whether the GNOME keyring is locked before the computer enters suspend. This means the keyring will have to be unlocked on resume.</_description>
+ </key>
+ <key name="lock-keyring-hibernate" type="b">
+ <default>true</default>
+- <_summary>Lock MATE keyring on sleep</_summary>
+- <_description>Whether the MATE keyring is locked before the computer enters hibernate. This means the keyring will have to be unlocked on resume.</_description>
++ <_summary>Lock GNOME keyring on sleep</_summary>
++ <_description>Whether the GNOME keyring is locked before the computer enters hibernate. This means the keyring will have to be unlocked on resume.</_description>
+ </key>
+ <key name="spindown-enable-ac" type="b">
+ <default>false</default>
+diff --git a/src/gpm-control.c b/src/gpm-control.c
+index cb84814..8253336 100644
+--- a/src/gpm-control.c
++++ b/src/gpm-control.c
+@@ -42,7 +42,7 @@
+ #include <libupower-glib/upower.h>
+
+ #ifdef WITH_KEYRING
+-#include <mate-keyring.h>
++#include <gnome-keyring.h>
+ #endif /* WITH_KEYRING */
+
+ #include "egg-debug.h"
+@@ -212,8 +212,8 @@ enum {
+ GpmScreensaver *screensaver;
+ guint32 throttle_cookie = 0;
+ #ifdef WITH_KEYRING
+- gboolean lock_mate_keyring;
+- MateKeyringResult keyres;
++ gboolean lock_gnome_keyring;
++ GnomeKeyringResult keyres;
+ #endif /* WITH_KEYRING */
+
+ GError *dbus_error = NULL;
+@@ -234,10 +234,10 @@ enum {
+
+ #ifdef WITH_KEYRING
+ /* we should perhaps lock keyrings when sleeping #375681 */
+- lock_mate_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_SUSPEND);
+- if (lock_mate_keyring) {
+- keyres = mate_keyring_lock_all_sync ();
+- if (keyres != MATE_KEYRING_RESULT_OK)
++ lock_gnome_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_SUSPEND);
++ if (lock_gnome_keyring) {
++ keyres = gnome_keyring_lock_all_sync ();
++ if (keyres != GNOME_KEYRING_RESULT_OK)
+ egg_warning ("could not lock keyring");
+ }
+ #endif /* WITH_KEYRING */
+@@ -323,8 +323,8 @@ enum {
+ GpmScreensaver *screensaver;
+ guint32 throttle_cookie = 0;
+ #ifdef WITH_KEYRING
+- gboolean lock_mate_keyring;
+- MateKeyringResult keyres;
++ gboolean lock_gnome_keyring;
++ GnomeKeyringResult keyres;
+ #endif /* WITH_KEYRING */
+
+ GError *dbus_error = NULL;
+@@ -345,10 +345,10 @@ enum {
+
+ #ifdef WITH_KEYRING
+ /* we should perhaps lock keyrings when sleeping #375681 */
+- lock_mate_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_HIBERNATE);
+- if (lock_mate_keyring) {
+- keyres = mate_keyring_lock_all_sync ();
+- if (keyres != MATE_KEYRING_RESULT_OK) {
++ lock_gnome_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_HIBERNATE);
++ if (lock_gnome_keyring) {
++ keyres = gnome_keyring_lock_all_sync ();
++ if (keyres != GNOME_KEYRING_RESULT_OK) {
+ egg_warning ("could not lock keyring");
+ }
+ }
diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-avoid-levels-is-0-warning.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-avoid-levels-is-0-warning.patch
new file mode 100644
index 00000000..9bccb5c9
--- /dev/null
+++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-avoid-levels-is-0-warning.patch
@@ -0,0 +1,15 @@
+diff --git a/src/gpm-kbd-backlight.c b/src/gpm-kbd-backlight.c
+index 0ac6801..a439e94 100644
+--- a/src/gpm-kbd-backlight.c
++++ b/src/gpm-kbd-backlight.c
+@@ -113,6 +113,9 @@ gpm_kbd_backlight_set (GpmKbdBacklight *backlight,
+ guint goal;
+
+ g_return_val_if_fail (GPM_IS_KBD_BACKLIGHT (backlight), FALSE);
++ /* avoid warnings if no keyboard brightness is available */
++ if (backlight->priv->max_brightness < 1)
++ return FALSE;
+ /* if we're setting the same we are, don't bother */
+ //g_return_val_if_fail (backlight->priv->brightness_percent != percentage, FALSE);
+
+
diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-dbus_interface_keyboard_backlight_controls.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-dbus_interface_keyboard_backlight_controls.patch
new file mode 100644
index 00000000..689192ff
--- /dev/null
+++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-dbus_interface_keyboard_backlight_controls.patch
@@ -0,0 +1,160 @@
+diff -uprN mate-power-manager-orig/src/gpm-common.h mate-power-manager/src/gpm-common.h
+--- mate-power-manager-orig/src/gpm-common.h 2013-10-03 13:56:55.000000000 +0200
++++ mate-power-manager/src/gpm-common.h 2013-10-13 19:54:10.649901214 +0200
+@@ -33,6 +33,7 @@ G_BEGIN_DECLS
+ #define GPM_DBUS_SERVICE "org.mate.PowerManager"
+ #define GPM_DBUS_INTERFACE "org.mate.PowerManager"
+ #define GPM_DBUS_INTERFACE_BACKLIGHT "org.mate.PowerManager.Backlight"
++#define GPM_DBUS_INTERFACE_KBD_BACKLIGHT "org.mate.PowerManager.KbdBacklight"
+ #define GPM_DBUS_PATH "/org/mate/PowerManager"
+ #define GPM_DBUS_PATH_BACKLIGHT "/org/mate/PowerManager/Backlight"
+ #define GPM_DBUS_PATH_KBD_BACKLIGHT "/org/mate/PowerManager/KbdBacklight"
+diff -uprN mate-power-manager-orig/src/gpm-kbd-backlight.c mate-power-manager/src/gpm-kbd-backlight.c
+--- mate-power-manager-orig/src/gpm-kbd-backlight.c 2013-10-03 13:56:55.000000000 +0200
++++ mate-power-manager/src/gpm-kbd-backlight.c 2013-10-13 19:58:07.154258855 +0200
+@@ -31,21 +31,6 @@
+ #include "gpm-kbd-backlight.h"
+ #include "gsd-media-keys-window.h"
+
+-static const gchar *kbd_backlight_introspection = ""
+-"<?xml version=\"1.0\" encoding=\"UTF-8\"?>""<node name=\"/\">"
+- "<interface name=\"org.mate.PowerManager.Backlight\">"
+- "<method name=\"GetBrightness\">"
+- "<arg type=\"u\" name=\"percentage_brightness\" direction=\"out\"/>"
+- "</method>"
+- "<method name=\"SetBrightness\">"
+- "<arg type=\"u\" name=\"percentage_brightness\" direction=\"in\"/>"
+- "</method>"
+- "<signal name=\"BrightnessChanged\">"
+- "<arg type=\"u\" name=\"percentage_brightness\" direction=\"out\"/>"
+- "</signal>"
+- "</interface>"
+-"</node>";
+-
+ #define GPM_KBD_BACKLIGHT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPM_TYPE_KBD_BACKLIGHT, GpmKbdBacklightPrivate))
+
+ struct GpmKbdBacklightPrivate
+@@ -430,40 +415,6 @@ gpm_kbd_backlight_dbus_property_set (GDB
+ return FALSE;
+ }
+
+-/**
+- * gpm_kbd_backlight_register_dbus:
+- * @backlight:
+- * @connection:
+- * @error:
+- **/
+-void
+-gpm_kbd_backlight_register_dbus (GpmKbdBacklight *backlight,
+- GDBusConnection *connection,
+- GError **error)
+-{
+- GDBusNodeInfo *node_info;
+- GDBusInterfaceInfo *interface_info;
+- GDBusInterfaceVTable interface_vtable = {
+- gpm_kbd_backlight_dbus_method_call,
+- gpm_kbd_backlight_dbus_property_get,
+- gpm_kbd_backlight_dbus_property_set
+- };
+-
+- node_info = g_dbus_node_info_new_for_xml (kbd_backlight_introspection, NULL);
+- interface_info = g_dbus_node_info_lookup_interface (node_info, GPM_DBUS_INTERFACE_BACKLIGHT);
+-
+- backlight->priv->bus_connection = g_object_ref (connection);
+- backlight->priv->bus_object_id =
+- g_dbus_connection_register_object (connection,
+- GPM_DBUS_PATH_KBD_BACKLIGHT,
+- interface_info,
+- &interface_vtable,
+- backlight,
+- NULL,
+- error);
+- g_dbus_node_info_unref (node_info);
+-}
+-
+ static gboolean
+ gpm_kbd_backlight_evaluate_power_source_and_set (GpmKbdBacklight *backlight)
+ {
+diff -uprN mate-power-manager-orig/src/gpm-manager.c mate-power-manager/src/gpm-manager.c
+--- mate-power-manager-orig/src/gpm-manager.c 2013-10-03 13:56:55.000000000 +0200
++++ mate-power-manager/src/gpm-manager.c 2013-10-13 20:05:11.449488592 +0200
+@@ -63,6 +63,7 @@
+ #include "gpm-disks.h"
+
+ #include "org.mate.PowerManager.Backlight.h"
++#include "org.mate.PowerManager.KbdBacklight.h"
+
+ static void gpm_manager_finalize (GObject *object);
+
+@@ -1986,12 +1987,13 @@ gpm_manager_init (GpmManager *manager)
+ G_OBJECT (manager->priv->backlight));
+ }
+
+- manager->priv->kbd_backlight = gpm_kbd_backlight_new ();
+- if (manager->priv->kbd_backlight != NULL) {
+- gpm_kbd_backlight_register_dbus (manager->priv->kbd_backlight,
+- g_connection,
+- NULL);
+- }
++ manager->priv->kbd_backlight = gpm_kbd_backlight_new ();
++ if (manager->priv->kbd_backlight != NULL) {
++ dbus_g_object_type_install_info (GPM_TYPE_KBD_BACKLIGHT,
++ &dbus_glib_gpm_kbd_backlight_object_info);
++ dbus_g_connection_register_g_object (connection, GPM_DBUS_PATH_KBD_BACKLIGHT,
++ G_OBJECT (manager->priv->kbd_backlight));
++ }
+
+ manager->priv->idle = gpm_idle_new ();
+ g_signal_connect (manager->priv->idle, "idle-changed",
+diff -uprN mate-power-manager-orig/src/Makefile.am mate-power-manager/src/Makefile.am
+--- mate-power-manager-orig/src/Makefile.am 2013-10-03 13:56:55.000000000 +0200
++++ mate-power-manager/src/Makefile.am 2013-10-13 20:10:17.374533688 +0200
+@@ -6,6 +6,7 @@ NULL =
+ EXTRA_DIST = \
+ org.mate.PowerManager.xml \
+ org.mate.PowerManager.Backlight.xml \
++ org.mate.PowerManager.KbdBacklight.xml \
+ gpm-marshal.list \
+ $(NULL)
+
+@@ -270,6 +271,7 @@ endif
+ BUILT_SOURCES = \
+ org.mate.PowerManager.h \
+ org.mate.PowerManager.Backlight.h \
++ org.mate.PowerManager.KbdBacklight.h \
+ gpm-marshal.c \
+ gpm-marshal.h \
+ $(NULL)
+@@ -295,6 +297,13 @@ org.mate.PowerManager.Backlight.h: org.m
+ --output=org.mate.PowerManager.Backlight.h \
+ $(srcdir)/org.mate.PowerManager.Backlight.xml
+
++org.mate.PowerManager.KbdBacklight.h: org.mate.PowerManager.KbdBacklight.xml
++ libtool --mode=execute dbus-binding-tool \
++ --prefix=gpm_kbd_backlight \
++ --mode=glib-server \
++ --output=org.mate.PowerManager.KbdBacklight.h \
++ $(srcdir)/org.mate.PowerManager.KbdBacklight.xml
++
+ clean-local:
+ rm -f *~
+ rm -f gpm-marshal.c gpm-marshal.h
+diff -uprN mate-power-manager-orig/src/org.mate.PowerManager.KbdBacklight.xml mate-power-manager/src/org.mate.PowerManager.KbdBacklight.xml
+--- mate-power-manager-orig/src/org.mate.PowerManager.KbdBacklight.xml 2013-10-13 20:12:11.556667787 +0200
++++ mate-power-manager/src/org.mate.PowerManager.KbdBacklight.xml 2013-10-13 20:11:45.972413654 +0200
+@@ -0,0 +1,15 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<node name="/">
++ <interface name="org.mate.PowerManager.KbdBacklight">
++ <method name="GetBrightness">
++ <arg type="u" name="percentage_brightness" direction="out"/>
++ </method>
++ <method name="SetBrightness">
++ <arg type="u" name="percentage_brightness" direction="in"/>
++ </method>
++ <signal name="BrightnessChanged">
++ <arg type="u" name="percentage_brightness" direction="out"/>
++ </signal>
++ </interface>
++</node>
++
diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-improve-UPower1-support.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-improve-UPower1-support.patch
new file mode 100644
index 00000000..d3e9d855
--- /dev/null
+++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-improve-UPower1-support.patch
@@ -0,0 +1,102 @@
+diff --git a/src/gpm-engine.c b/src/gpm-engine.c
+index e6c6bf2..fe458e3 100644
+--- a/src/gpm-engine.c
++++ b/src/gpm-engine.c
+@@ -82,6 +82,9 @@ G_DEFINE_TYPE (GpmEngine, gpm_engine, G_TYPE_OBJECT)
+
+ static UpDevice *gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *original_device);
+ static UpDevice *gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device);
++#if UP_CHECK_VERSION (0, 99, 0)
++static void gpm_engine_device_changed_cb (UpDevice *device, GParamSpec *pspec, GpmEngine *engine);
++#endif
+
+ typedef enum {
+ GPM_ENGINE_WARNING_NONE = 0,
+@@ -757,6 +760,13 @@ gpm_engine_device_add (GpmEngine *engine, UpDevice *device)
+ g_object_get (composite, "state", &state, NULL);
+ g_object_set_data (G_OBJECT(composite), "engine-state-old", GUINT_TO_POINTER(state));
+ }
++
++#if UP_CHECK_VERSION (0, 99, 0)
++ if (kind == UP_DEVICE_KIND_BATTERY || kind == UP_DEVICE_KIND_UPS || kind == UP_DEVICE_KIND_LINE_POWER)
++ return;
++ g_signal_connect (device, "notify", G_CALLBACK (gpm_engine_device_changed_cb), engine);
++#endif
++
+ }
+
+ /**
+@@ -851,19 +861,20 @@ gpm_engine_device_removed_cb (UpClient *client, UpDevice *device, GpmEngine *eng
+ **/
+ static void
+ #if UP_CHECK_VERSION(0, 99, 0)
+-gpm_engine_device_changed_cb (UpClient *client, GParamSpec *pspec, GpmEngine *engine)
+-{
+- gpm_engine_recalculate_state (engine);
+-}
++gpm_engine_device_changed_cb (UpDevice *device, GParamSpec *pspec, GpmEngine *engine)
+ #else
+ gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *engine)
++#endif
+ {
++#if !UP_CHECK_VERSION(0, 99, 0)
+ UpDeviceKind kind;
++#endif
+ UpDeviceState state;
+ UpDeviceState state_old;
+ GpmEngineWarning warning_old;
+ GpmEngineWarning warning;
+
++#if !UP_CHECK_VERSION(0, 99, 0)
+ /* get device properties */
+ g_object_get (device,
+ "kind", &kind,
+@@ -874,6 +885,7 @@ gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *eng
+ egg_debug ("updating because %s changed", up_device_get_object_path (device));
+ device = gpm_engine_update_composite_device (engine, device);
+ }
++#endif
+
+ /* get device properties (may be composite) */
+ g_object_get (device,
+@@ -917,7 +929,6 @@ gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *eng
+
+ gpm_engine_recalculate_state (engine);
+ }
+-#endif
+
+ /**
+ * gpm_engine_get_devices:
+@@ -1042,10 +1053,7 @@ gpm_engine_init (GpmEngine *engine)
+ G_CALLBACK (gpm_engine_device_added_cb), engine);
+ g_signal_connect (engine->priv->client, "device-removed",
+ G_CALLBACK (gpm_engine_device_removed_cb), engine);
+-#if UP_CHECK_VERSION(0, 99, 0)
+- g_signal_connect (engine->priv->client, "notify",
+- G_CALLBACK (gpm_engine_device_changed_cb), engine);
+-#else
++#if !UP_CHECK_VERSION(0, 99, 0)
+ g_signal_connect (engine->priv->client, "device-changed",
+ G_CALLBACK (gpm_engine_device_changed_cb), engine);
+ #endif
+@@ -1075,6 +1083,11 @@ gpm_engine_init (GpmEngine *engine)
+ #endif
+
+ /* create a fake virtual composite battery */
++#if UP_CHECK_VERSION(0, 99, 0)
++ engine->priv->battery_composite = up_client_get_display_device (engine->priv->client);
++ g_signal_connect (engine->priv->client, "notify",
++ G_CALLBACK (gpm_engine_device_changed_cb), engine);
++#else
+ engine->priv->battery_composite = up_device_new ();
+ g_object_set (engine->priv->battery_composite,
+ "kind", UP_DEVICE_KIND_BATTERY,
+@@ -1083,6 +1096,7 @@ gpm_engine_init (GpmEngine *engine)
+ "power-supply", TRUE,
+ "is-present", TRUE,
+ NULL);
++#endif
+
+ engine->priv->previous_icon = NULL;
+ engine->priv->previous_summary = NULL;
+
diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-other-round-of-fixes-for-UPower-0.99-API-changes.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-other-round-of-fixes-for-UPower-0.99-API-changes.patch
new file mode 100644
index 00000000..83447294
--- /dev/null
+++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-other-round-of-fixes-for-UPower-0.99-API-changes.patch
@@ -0,0 +1,217 @@
+diff --git a/src/gpm-engine.c b/src/gpm-engine.c
+index fe458e3..56d19e2 100644
+--- a/src/gpm-engine.c
++++ b/src/gpm-engine.c
+@@ -84,7 +84,29 @@ static UpDevice *gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *o
+ static UpDevice *gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device);
+ #if UP_CHECK_VERSION (0, 99, 0)
+ static void gpm_engine_device_changed_cb (UpDevice *device, GParamSpec *pspec, GpmEngine *engine);
+-#endif
++
++#define GPM_ENGINE_WARNING_NONE UP_DEVICE_LEVEL_NONE
++#define GPM_ENGINE_WARNING_DISCHARGING UP_DEVICE_LEVEL_DISCHARGING
++#define GPM_ENGINE_WARNING_LOW UP_DEVICE_LEVEL_LOW
++#define GPM_ENGINE_WARNING_CRITICAL UP_DEVICE_LEVEL_CRITICAL
++#define GPM_ENGINE_WARNING_ACTION UP_DEVICE_LEVEL_ACTION
++
++/**
++ * gpm_engine_get_warning:
++ *
++ * This gets the possible engine state for the device according to the
++ * policy, which could be per-percent, or per-time.
++ *
++ * Return value: A GpmEngine state, e.g. GPM_ENGINE_WARNING_DISCHARGING
++ **/
++static UpDeviceLevel
++gpm_engine_get_warning (GpmEngine *engine, UpDevice *device)
++{
++ UpDeviceLevel warning;
++ g_object_get (device, "warning-level", &warning, NULL);
++ return warning;
++}
++#else
+
+ typedef enum {
+ GPM_ENGINE_WARNING_NONE = 0,
+@@ -226,6 +248,7 @@ gpm_engine_get_warning (GpmEngine *engine, UpDevice *device)
+ out:
+ return warning_type;
+ }
++#endif
+
+ /**
+ * gpm_engine_get_summary:
+@@ -282,12 +305,20 @@ gpm_engine_get_summary (GpmEngine *engine)
+ * Returns the icon
+ **/
+ static gchar *
++#if UP_CHECK_VERSION (0, 99, 0)
++gpm_engine_get_icon_priv (GpmEngine *engine, UpDeviceKind device_kind, UpDeviceLevel warning, gboolean use_state)
++#else
+ gpm_engine_get_icon_priv (GpmEngine *engine, UpDeviceKind device_kind, GpmEngineWarning warning, gboolean use_state)
++#endif
+ {
+ guint i;
+ GPtrArray *array;
+ UpDevice *device;
++#if UP_CHECK_VERSION (0, 99, 0)
++ UpDeviceLevel warning_temp;
++#else
+ GpmEngineWarning warning_temp;
++#endif
+ UpDeviceKind kind;
+ UpDeviceState state;
+ gboolean is_present;
+@@ -572,6 +603,9 @@ gpm_engine_device_check_capacity (GpmEngine *engine, UpDevice *device)
+ static UpDevice *
+ gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *original_device)
+ {
++#if UP_CHECK_VERSION (0, 99, 0)
++ return engine->priv->battery_composite;
++#else
+ guint battery_devices = 0;
+ GPtrArray *array;
+ UpDevice *device;
+@@ -601,6 +635,7 @@ gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *original_device)
+ out:
+ /* return composite device or original device */
+ return device;
++#endif
+ }
+
+ /**
+@@ -609,6 +644,18 @@ gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *original_device)
+ static UpDevice *
+ gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device)
+ {
++#if UP_CHECK_VERSION (0, 99, 0)
++ gchar *text;
++
++ text = up_device_to_text (engine->priv->battery_composite);
++ egg_debug ("composite:\n%s", text);
++ g_free (text);
++
++ /* force update of icon */
++ gpm_engine_recalculate_state_icon (engine);
++
++ return engine->priv->battery_composite;
++#else
+ guint i;
+ gdouble percentage = 0.0;
+ gdouble energy = 0.0;
+@@ -720,6 +767,7 @@ gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device
+ out:
+ /* return composite device or original device */
+ return device;
++#endif
+ }
+
+ /**
+@@ -728,7 +776,11 @@ gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device
+ static void
+ gpm_engine_device_add (GpmEngine *engine, UpDevice *device)
+ {
++#if UP_CHECK_VERSION (0, 99, 0)
++ UpDeviceLevel warning;
++#else
+ GpmEngineWarning warning;
++#endif
+ UpDeviceState state;
+ UpDeviceKind kind;
+ UpDevice *composite;
+@@ -762,9 +814,9 @@ gpm_engine_device_add (GpmEngine *engine, UpDevice *device)
+ }
+
+ #if UP_CHECK_VERSION (0, 99, 0)
+- if (kind == UP_DEVICE_KIND_BATTERY || kind == UP_DEVICE_KIND_UPS || kind == UP_DEVICE_KIND_LINE_POWER)
+- return;
+ g_signal_connect (device, "notify", G_CALLBACK (gpm_engine_device_changed_cb), engine);
++ g_ptr_array_add (engine->priv->array, g_object_ref (device));
++ gpm_engine_recalculate_state (engine);
+ #endif
+
+ }
+@@ -820,10 +872,14 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine)
+ static void
+ gpm_engine_device_added_cb (UpClient *client, UpDevice *device, GpmEngine *engine)
+ {
++#if UP_CHECK_VERSION (0, 99, 0)
++ gpm_engine_device_add (engine, device);
++#else
+ /* add to list */
+ g_ptr_array_add (engine->priv->array, g_object_ref (device));
+
+ gpm_engine_recalculate_state (engine);
++#endif
+ }
+
+ /**
+@@ -866,15 +922,17 @@ gpm_engine_device_changed_cb (UpDevice *device, GParamSpec *pspec, GpmEngine *en
+ gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *engine)
+ #endif
+ {
+-#if !UP_CHECK_VERSION(0, 99, 0)
+ UpDeviceKind kind;
+-#endif
+ UpDeviceState state;
+ UpDeviceState state_old;
++#if UP_CHECK_VERSION(0, 99, 0)
++ UpDeviceLevel warning_old;
++ UpDeviceLevel warning;
++#else
+ GpmEngineWarning warning_old;
+ GpmEngineWarning warning;
++#endif
+
+-#if !UP_CHECK_VERSION(0, 99, 0)
+ /* get device properties */
+ g_object_get (device,
+ "kind", &kind,
+@@ -885,7 +943,6 @@ gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *eng
+ egg_debug ("updating because %s changed", up_device_get_object_path (device));
+ device = gpm_engine_update_composite_device (engine, device);
+ }
+-#endif
+
+ /* get device properties (may be composite) */
+ g_object_get (device,
+@@ -1070,22 +1127,10 @@ gpm_engine_init (GpmEngine *engine)
+ g_signal_connect (engine->priv->phone, "device-refresh",
+ G_CALLBACK (phone_device_refresh_cb), engine);
+
+-#if UP_CHECK_VERSION(0, 99, 0)
+- /* coldplug */
+- array = up_client_get_devices(engine->priv->client);
+- if (array) {
+- for (i = 0; i < array->len; i++) {
+- UpDevice *device = g_ptr_array_index (array, i);
+- gpm_engine_device_added_cb(engine->priv->client, device, engine);
+- }
+- g_ptr_array_free (array, TRUE);
+- }
+-#endif
+-
+ /* create a fake virtual composite battery */
+ #if UP_CHECK_VERSION(0, 99, 0)
+ engine->priv->battery_composite = up_client_get_display_device (engine->priv->client);
+- g_signal_connect (engine->priv->client, "notify",
++ g_signal_connect (engine->priv->battery_composite, "notify",
+ G_CALLBACK (gpm_engine_device_changed_cb), engine);
+ #else
+ engine->priv->battery_composite = up_device_new ();
+diff --git a/src/gpm-manager.c b/src/gpm-manager.c
+index df84cac..09bd0c0 100644
+--- a/src/gpm-manager.c
++++ b/src/gpm-manager.c
+@@ -1858,7 +1858,9 @@ gpm_manager_init (GpmManager *manager)
+ G_CALLBACK (gpm_manager_settings_changed_cb), manager);
+ manager->priv->client = up_client_new ();
+ #if UP_CHECK_VERSION(0, 99, 0)
+- g_signal_connect (manager->priv->client, "notify",
++ g_signal_connect (manager->priv->client, "notify::lid-is-closed",
++ G_CALLBACK (gpm_manager_client_changed_cb), manager);
++ g_signal_connect (manager->priv->client, "notify::on-battery",
+ G_CALLBACK (gpm_manager_client_changed_cb), manager);
+ #else
+ g_signal_connect (manager->priv->client, "changed",
+
diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-port-to-upower-0.99-API.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-port-to-upower-0.99-API.patch
new file mode 100644
index 00000000..72025758
--- /dev/null
+++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-port-to-upower-0.99-API.patch
@@ -0,0 +1,390 @@
+diff --git a/src/gpm-backlight.c b/src/gpm-backlight.c
+index 1f1d834..d2938a4 100644
+--- a/src/gpm-backlight.c
++++ b/src/gpm-backlight.c
+@@ -410,7 +410,11 @@ gpm_settings_key_changed_cb (GSettings *settings, const gchar *key, GpmBacklight
+ * Does the actions when the ac power source is inserted/removed.
+ **/
+ static void
++#if UP_CHECK_VERSION(0, 99, 0)
++gpm_backlight_client_changed_cb (UpClient *client, GParamSpec *pspec, GpmBacklight *backlight)
++#else
+ gpm_backlight_client_changed_cb (UpClient *client, GpmBacklight *backlight)
++#endif
+ {
+ gpm_backlight_brightness_evaluate_and_set (backlight, FALSE, TRUE);
+ }
+@@ -727,8 +731,13 @@ gpm_backlight_init (GpmBacklight *backlight)
+
+ /* we use up_client for the ac-adapter-changed signal */
+ backlight->priv->client = up_client_new ();
++#if UP_CHECK_VERSION(0, 99, 0)
++ g_signal_connect (backlight->priv->client, "notify",
++ G_CALLBACK (gpm_backlight_client_changed_cb), backlight);
++#else
+ g_signal_connect (backlight->priv->client, "changed",
+ G_CALLBACK (gpm_backlight_client_changed_cb), backlight);
++#endif
+
+ /* gets caps */
+ backlight->priv->can_dim = gpm_brightness_has_hw (backlight->priv->brightness);
+diff --git a/src/gpm-button.c b/src/gpm-button.c
+index 1e38173..b331cf6 100644
+--- a/src/gpm-button.c
++++ b/src/gpm-button.c
+@@ -324,7 +324,11 @@ gpm_button_reset_time (GpmButton *button)
+ * gpm_button_client_changed_cb
+ **/
+ static void
++#if UP_CHECK_VERSION(0, 99, 0)
++gpm_button_client_changed_cb (UpClient *client, GParamSpec *pspec, GpmButton *button)
++#else
+ gpm_button_client_changed_cb (UpClient *client, GpmButton *button)
++#endif
+ {
+ gboolean lid_is_closed;
+
+@@ -363,9 +367,13 @@ gpm_button_init (GpmButton *button)
+
+ button->priv->client = up_client_new ();
+ button->priv->lid_is_closed = up_client_get_lid_is_closed (button->priv->client);
++#if UP_CHECK_VERSION(0, 99, 0)
++ g_signal_connect (button->priv->client, "notify",
++ G_CALLBACK (gpm_button_client_changed_cb), button);
++#else
+ g_signal_connect (button->priv->client, "changed",
+ G_CALLBACK (gpm_button_client_changed_cb), button);
+-
++#endif
+ /* register the brightness keys */
+ gpm_button_xevent_key (button, XF86XK_PowerOff, GPM_BUTTON_POWER);
+ #ifdef HAVE_XF86XK_SUSPEND
+diff --git a/src/gpm-control.c b/src/gpm-control.c
+index ec50136..0562d38 100644
+--- a/src/gpm-control.c
++++ b/src/gpm-control.c
+@@ -289,10 +289,11 @@ gpm_control_suspend (GpmControl *control, GError **error)
+ }
+ g_object_unref(proxy);
+ }
++#if !UP_CHECK_VERSION(0, 99, 0)
+ else {
+ ret = up_client_suspend_sync (control->priv->client, NULL, error);
+ }
+-
++#endif
+ egg_debug ("emitting resume");
+ g_signal_emit (control, signals [RESUME], 0, GPM_CONTROL_ACTION_SUSPEND);
+
+@@ -399,10 +400,11 @@ gpm_control_hibernate (GpmControl *control, GError **error)
+ ret = TRUE;
+ }
+ }
++#if !UP_CHECK_VERSION(0, 99, 0)
+ else {
+ ret = up_client_hibernate_sync (control->priv->client, NULL, error);
+ }
+-
++#endif
+ egg_debug ("emitting resume");
+ g_signal_emit (control, signals [RESUME], 0, GPM_CONTROL_ACTION_HIBERNATE);
+
+diff --git a/src/gpm-engine.c b/src/gpm-engine.c
+index 96a043e..e6c6bf2 100644
+--- a/src/gpm-engine.c
++++ b/src/gpm-engine.c
+@@ -768,12 +768,14 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine)
+ guint i;
+ GPtrArray *array = NULL;
+ UpDevice *device;
++#if !UP_CHECK_VERSION(0, 99, 0)
+ gboolean ret;
+ GError *error = NULL;
++#endif
+
+ g_return_val_if_fail (engine != NULL, FALSE);
+ g_return_val_if_fail (GPM_IS_ENGINE (engine), FALSE);
+-
++#if !UP_CHECK_VERSION(0, 99, 0)
+ /* get devices from UPower */
+ ret = up_client_enumerate_devices_sync (engine->priv->client, NULL, &error);
+ if (!ret) {
+@@ -781,7 +783,7 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine)
+ g_error_free (error);
+ goto out;
+ }
+-
++#endif
+ /* connected mobile phones */
+ gpm_phone_coldplug (engine->priv->phone);
+
+@@ -793,7 +795,9 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine)
+ device = g_ptr_array_index (array, i);
+ gpm_engine_device_add (engine, device);
+ }
++#if !UP_CHECK_VERSION(0, 99, 0)
+ out:
++#endif
+ if (array != NULL)
+ g_ptr_array_unref (array);
+ /* never repeat */
+@@ -816,6 +820,22 @@ gpm_engine_device_added_cb (UpClient *client, UpDevice *device, GpmEngine *engin
+ * gpm_engine_device_removed_cb:
+ **/
+ static void
++#if UP_CHECK_VERSION(0, 99, 0)
++gpm_engine_device_removed_cb (UpClient *client, const char *object_path, GpmEngine *engine)
++{
++ guint i;
++
++ for (i = 0; i < engine->priv->array->len; i++) {
++ UpDevice *device = g_ptr_array_index (engine->priv->array, i);
++
++ if (g_strcmp0 (object_path, up_device_get_object_path (device)) == 0) {
++ g_ptr_array_remove_index (engine->priv->array, i);
++ break;
++ }
++ }
++ gpm_engine_recalculate_state (engine);
++}
++#else
+ gpm_engine_device_removed_cb (UpClient *client, UpDevice *device, GpmEngine *engine)
+ {
+ gboolean ret;
+@@ -824,12 +844,18 @@ gpm_engine_device_removed_cb (UpClient *client, UpDevice *device, GpmEngine *eng
+ return;
+ gpm_engine_recalculate_state (engine);
+ }
+-
++#endif
+
+ /**
+ * gpm_engine_device_changed_cb:
+ **/
+ static void
++#if UP_CHECK_VERSION(0, 99, 0)
++gpm_engine_device_changed_cb (UpClient *client, GParamSpec *pspec, GpmEngine *engine)
++{
++ gpm_engine_recalculate_state (engine);
++}
++#else
+ gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *engine)
+ {
+ UpDeviceKind kind;
+@@ -891,6 +917,7 @@ gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *eng
+
+ gpm_engine_recalculate_state (engine);
+ }
++#endif
+
+ /**
+ * gpm_engine_get_devices:
+@@ -1003,7 +1030,10 @@ phone_device_refresh_cb (GpmPhone *phone, guint idx, GpmEngine *engine)
+ static void
+ gpm_engine_init (GpmEngine *engine)
+ {
+-
++#if UP_CHECK_VERSION(0, 99, 0)
++ GPtrArray *array = NULL;
++ guint i;
++#endif
+ engine->priv = GPM_ENGINE_GET_PRIVATE (engine);
+
+ engine->priv->array = g_ptr_array_new_with_free_func (g_object_unref);
+@@ -1012,8 +1042,13 @@ gpm_engine_init (GpmEngine *engine)
+ G_CALLBACK (gpm_engine_device_added_cb), engine);
+ g_signal_connect (engine->priv->client, "device-removed",
+ G_CALLBACK (gpm_engine_device_removed_cb), engine);
++#if UP_CHECK_VERSION(0, 99, 0)
++ g_signal_connect (engine->priv->client, "notify",
++ G_CALLBACK (gpm_engine_device_changed_cb), engine);
++#else
+ g_signal_connect (engine->priv->client, "device-changed",
+ G_CALLBACK (gpm_engine_device_changed_cb), engine);
++#endif
+
+ engine->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA);
+ g_signal_connect (engine->priv->settings, "changed",
+@@ -1027,6 +1062,18 @@ gpm_engine_init (GpmEngine *engine)
+ g_signal_connect (engine->priv->phone, "device-refresh",
+ G_CALLBACK (phone_device_refresh_cb), engine);
+
++#if UP_CHECK_VERSION(0, 99, 0)
++ /* coldplug */
++ array = up_client_get_devices(engine->priv->client);
++ if (array) {
++ for (i = 0; i < array->len; i++) {
++ UpDevice *device = g_ptr_array_index (array, i);
++ gpm_engine_device_added_cb(engine->priv->client, device, engine);
++ }
++ g_ptr_array_free (array, TRUE);
++ }
++#endif
++
+ /* create a fake virtual composite battery */
+ engine->priv->battery_composite = up_device_new ();
+ g_object_set (engine->priv->battery_composite,
+diff --git a/src/gpm-kbd-backlight.c b/src/gpm-kbd-backlight.c
+index a439e94..3a0f6e6 100644
+--- a/src/gpm-kbd-backlight.c
++++ b/src/gpm-kbd-backlight.c
+@@ -486,6 +486,9 @@ gpm_kbd_backlight_control_resume_cb (GpmControl *control,
+ **/
+ static void
+ gpm_kbd_backlight_client_changed_cb (UpClient *client,
++#if UP_CHECK_VERSION(0, 99, 0)
++ GParamSpec *pspec,
++#endif
+ GpmKbdBacklight *backlight)
+ {
+ gpm_kbd_backlight_evaluate_power_source_and_set (backlight);
+@@ -755,8 +758,13 @@ gpm_kbd_backlight_init (GpmKbdBacklight *backlight)
+
+ /* Use upower for ac changed signal */
+ backlight->priv->client = up_client_new ();
++#if UP_CHECK_VERSION(0, 99, 0)
++ g_signal_connect (backlight->priv->client, "notify",
++ G_CALLBACK (gpm_kbd_backlight_client_changed_cb), backlight);
++#else
+ g_signal_connect (backlight->priv->client, "changed",
+ G_CALLBACK (gpm_kbd_backlight_client_changed_cb), backlight);
++#endif
+
+ backlight->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA);
+ //g_signal_connect (backlight->priv->settings, "changed", G_CALLBACK (gpm_settings_key_changed_cb), backlight);
+diff --git a/src/gpm-manager.c b/src/gpm-manager.c
+index c4d0530..df84cac 100644
+--- a/src/gpm-manager.c
++++ b/src/gpm-manager.c
+@@ -971,7 +971,11 @@ gpm_manager_get_spindown_timeout (GpmManager *manager)
+ * gpm_manager_client_changed_cb:
+ **/
+ static void
++#if UP_CHECK_VERSION(0, 99, 0)
++gpm_manager_client_changed_cb (UpClient *client, GParamSpec *pspec, GpmManager *manager)
++#else
+ gpm_manager_client_changed_cb (UpClient *client, GpmManager *manager)
++#endif
+ {
+ gboolean event_when_closed;
+ gint timeout;
+@@ -1853,8 +1857,13 @@ gpm_manager_init (GpmManager *manager)
+ g_signal_connect (manager->priv->settings, "changed",
+ G_CALLBACK (gpm_manager_settings_changed_cb), manager);
+ manager->priv->client = up_client_new ();
++#if UP_CHECK_VERSION(0, 99, 0)
++ g_signal_connect (manager->priv->client, "notify",
++ G_CALLBACK (gpm_manager_client_changed_cb), manager);
++#else
+ g_signal_connect (manager->priv->client, "changed",
+ G_CALLBACK (gpm_manager_client_changed_cb), manager);
++#endif
+
+ /* use libmatenotify */
+ notify_init (GPM_NAME);
+diff --git a/src/gpm-prefs-core.c b/src/gpm-prefs-core.c
+index 7a2662d..6abb792 100644
+--- a/src/gpm-prefs-core.c
++++ b/src/gpm-prefs-core.c
+@@ -811,7 +811,9 @@ gpm_prefs_init (GpmPrefs *prefs)
+ UpDevice *device;
+ UpDeviceKind kind;
+ GpmBrightness *brightness;
++#if !UP_CHECK_VERSION(0, 99, 0)
+ gboolean ret;
++#endif
+ guint i;
+
+ GDBusProxy *proxy;
+@@ -897,9 +899,11 @@ gpm_prefs_init (GpmPrefs *prefs)
+ else {
+ /* are we allowed to shutdown? */
+ egg_console_kit_can_stop (prefs->priv->console, &prefs->priv->can_shutdown, NULL);
++#if !UP_CHECK_VERSION(0, 99, 0)
+ /* get values from UpClient */
+ prefs->priv->can_suspend = up_client_get_can_suspend (prefs->priv->client);
+ prefs->priv->can_hibernate = up_client_get_can_hibernate (prefs->priv->client);
++#endif
+ }
+
+ if (LOGIND_RUNNING()) {
+@@ -953,14 +957,14 @@ gpm_prefs_init (GpmPrefs *prefs)
+ brightness = gpm_brightness_new ();
+ prefs->priv->has_lcd = gpm_brightness_has_hw (brightness);
+ g_object_unref (brightness);
+-
++#if !UP_CHECK_VERSION(0, 99, 0)
+ /* get device list */
+ ret = up_client_enumerate_devices_sync (prefs->priv->client, NULL, &error);
+ if (!ret) {
+ egg_warning ("failed to get device list: %s", error->message);
+ g_error_free (error);
+ }
+-
++#endif
+ devices = up_client_get_devices (prefs->priv->client);
+ for (i=0; i<devices->len; i++) {
+ device = g_ptr_array_index (devices, i);
+diff --git a/src/gpm-statistics.c b/src/gpm-statistics.c
+index 98b5632..13489dc 100644
+--- a/src/gpm-statistics.c
++++ b/src/gpm-statistics.c
+@@ -1236,6 +1236,12 @@ gpm_stats_device_added_cb (UpClient *client, UpDevice *device, gpointer user_dat
+ * gpm_stats_device_changed_cb:
+ **/
+ static void
++#if UP_CHECK_VERSION(0, 99, 0)
++gpm_stats_device_changed_cb (UpClient *client, GParamSpec *pspec, gpointer user_data)
++{
++ gpm_stats_button_update_ui();
++}
++#else
+ gpm_stats_device_changed_cb (UpClient *client, UpDevice *device, gpointer user_data)
+ {
+ const gchar *object_path;
+@@ -1246,6 +1252,7 @@ gpm_stats_device_changed_cb (UpClient *client, UpDevice *device, gpointer user_d
+ if (g_strcmp0 (current_device, object_path) == 0)
+ gpm_stats_update_info_data (device);
+ }
++#endif
+
+ /**
+ * gpm_stats_device_removed_cb:
+@@ -1794,11 +1801,12 @@ main (int argc, char *argv[])
+
+ wakeups = up_wakeups_new ();
+ g_signal_connect (wakeups, "data-changed", G_CALLBACK (gpm_stats_data_changed_cb), NULL);
+-
++#if !UP_CHECK_VERSION(0, 99, 0)
+ /* coldplug */
+ ret = up_client_enumerate_devices_sync (client, NULL, NULL);
+ if (!ret)
+ goto out;
++#endif
+ devices = up_client_get_devices (client);
+
+ /* add devices in visually pleasing order */
+@@ -1814,7 +1822,11 @@ main (int argc, char *argv[])
+ /* connect now the coldplug is done */
+ g_signal_connect (client, "device-added", G_CALLBACK (gpm_stats_device_added_cb), NULL);
+ g_signal_connect (client, "device-removed", G_CALLBACK (gpm_stats_device_removed_cb), NULL);
++#if UP_CHECK_VERSION(0, 99, 0)
++ g_signal_connect (client, "notify", G_CALLBACK (gpm_stats_device_changed_cb), NULL);
++#else
+ g_signal_connect (client, "device-changed", G_CALLBACK (gpm_stats_device_changed_cb), NULL);
++#endif
+
+ /* set current device */
+ if (devices->len > 0) {
+@@ -1854,8 +1866,9 @@ main (int argc, char *argv[])
+ gtk_widget_show (widget);
+
+ gtk_main ();
+-
++#if !UP_CHECK_VERSION(0, 99, 0)
+ out:
++#endif
+ g_object_unref (settings);
+ g_object_unref (client);
+ g_object_unref (wakeups);
+
diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-remove-battery-recall-logic.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-remove-battery-recall-logic.patch
new file mode 100644
index 00000000..6d462b93
--- /dev/null
+++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-remove-battery-recall-logic.patch
@@ -0,0 +1,263 @@
+diff --git a/data/org.mate.power-manager.gschema.xml.in b/data/org.mate.power-manager.gschema.xml.in
+index adecce0..ca009b5 100644
+--- a/data/org.mate.power-manager.gschema.xml.in
++++ b/data/org.mate.power-manager.gschema.xml.in
+@@ -211,11 +211,6 @@
+ <_summary>Seconds of inactivity to spin down when on battery</_summary>
+ <_description>The number of seconds of inactivity to spin down the disks when on battery power.</_description>
+ </key>
+- <key name="notify-perhaps-recall" type="b">
+- <default>true</default>
+- <_summary>If we should show the recalled battery warning for a broken battery</_summary>
+- <_description>If we should show the recalled battery warning for a broken battery. Set this to false only if you know your battery is okay.</_description>
+- </key>
+ <key name="notify-low-capacity" type="b">
+ <default>true</default>
+ <_summary>If we should show the low capacity warning for a broken battery</_summary>
+diff --git a/src/gpm-common.h b/src/gpm-common.h
+index ef20f88..303bdd1 100644
+--- a/src/gpm-common.h
++++ b/src/gpm-common.h
+@@ -98,7 +98,6 @@ G_BEGIN_DECLS
+ #define GPM_SETTINGS_SPINDOWN_TIMEOUT_BATT "spindown-timeout-battery"
+
+ /* notify */
+-#define GPM_SETTINGS_NOTIFY_PERHAPS_RECALL "notify-perhaps-recall"
+ #define GPM_SETTINGS_NOTIFY_LOW_CAPACITY "notify-low-capacity"
+ #define GPM_SETTINGS_NOTIFY_DISCHARGING "notify-discharging"
+ #define GPM_SETTINGS_NOTIFY_FULLY_CHARGED "notify-fully-charged"
+diff --git a/src/gpm-engine.c b/src/gpm-engine.c
+index 0f9d0c1..96a043e 100644
+--- a/src/gpm-engine.c
++++ b/src/gpm-engine.c
+@@ -72,7 +72,6 @@ enum {
+ CHARGE_ACTION,
+ DISCHARGING,
+ LOW_CAPACITY,
+- PERHAPS_RECALL,
+ LAST_SIGNAL
+ };
+
+@@ -761,42 +760,6 @@ gpm_engine_device_add (GpmEngine *engine, UpDevice *device)
+ }
+
+ /**
+- * gpm_engine_check_recall:
+- **/
+-static gboolean
+-gpm_engine_check_recall (GpmEngine *engine, UpDevice *device)
+-{
+- UpDeviceKind kind;
+- gboolean recall_notice = FALSE;
+- gchar *recall_vendor = NULL;
+- gchar *recall_url = NULL;
+-
+- /* get device properties */
+- g_object_get (device,
+- "kind", &kind,
+- "recall-notice", &recall_notice,
+- "recall-vendor", &recall_vendor,
+- "recall-url", &recall_url,
+- NULL);
+-
+- /* not battery */
+- if (kind != UP_DEVICE_KIND_BATTERY)
+- goto out;
+-
+- /* no recall data */
+- if (!recall_notice)
+- goto out;
+-
+- /* emit signal for manager */
+- egg_debug ("** EMIT: perhaps-recall");
+- g_signal_emit (engine, signals [PERHAPS_RECALL], 0, device, recall_vendor, recall_url);
+-out:
+- g_free (recall_vendor);
+- g_free (recall_url);
+- return recall_notice;
+-}
+-
+-/**
+ * gpm_engine_coldplug_idle_cb:
+ **/
+ static gboolean
+@@ -829,7 +792,6 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine)
+ for (i=0;i<array->len;i++) {
+ device = g_ptr_array_index (array, i);
+ gpm_engine_device_add (engine, device);
+- gpm_engine_check_recall (engine, device);
+ }
+ out:
+ if (array != NULL)
+@@ -846,7 +808,6 @@ gpm_engine_device_added_cb (UpClient *client, UpDevice *device, GpmEngine *engin
+ {
+ /* add to list */
+ g_ptr_array_add (engine->priv->array, g_object_ref (device));
+- gpm_engine_check_recall (engine, device);
+
+ gpm_engine_recalculate_state (engine);
+ }
+@@ -1134,14 +1095,6 @@ gpm_engine_class_init (GpmEngineClass *klass)
+ G_STRUCT_OFFSET (GpmEngineClass, low_capacity),
+ NULL, NULL, g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+- signals [PERHAPS_RECALL] =
+- g_signal_new ("perhaps-recall",
+- G_TYPE_FROM_CLASS (object_class),
+- G_SIGNAL_RUN_LAST,
+- G_STRUCT_OFFSET (GpmEngineClass, perhaps_recall),
+- NULL, NULL, gpm_marshal_VOID__POINTER_STRING_STRING,
+- G_TYPE_NONE,
+- 3, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_STRING);
+ signals [FULLY_CHARGED] =
+ g_signal_new ("fully-charged",
+ G_TYPE_FROM_CLASS (object_class),
+diff --git a/src/gpm-engine.h b/src/gpm-engine.h
+index be1ccd6..43f8956 100644
+--- a/src/gpm-engine.h
++++ b/src/gpm-engine.h
+@@ -49,10 +49,6 @@ typedef struct
+ gchar *icon);
+ void (* summary_changed) (GpmEngine *engine,
+ gchar *status);
+- void (* perhaps_recall) (GpmEngine *engine,
+- UpDevice *device,
+- const gchar *oem_vendor,
+- const gchar *website);
+ void (* low_capacity) (GpmEngine *engine,
+ UpDevice *device);
+ void (* charge_low) (GpmEngine *engine,
+diff --git a/src/gpm-manager.c b/src/gpm-manager.c
+index 6ca9dea..c4d0530 100644
+--- a/src/gpm-manager.c
++++ b/src/gpm-manager.c
+@@ -68,7 +68,6 @@
+ static void gpm_manager_finalize (GObject *object);
+
+ #define GPM_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPM_TYPE_MANAGER, GpmManagerPrivate))
+-#define GPM_MANAGER_RECALL_DELAY 30 /* seconds */
+ #define GPM_MANAGER_NOTIFY_TIMEOUT_NEVER 0 /* ms */
+ #define GPM_MANAGER_NOTIFY_TIMEOUT_SHORT 10 * 1000 /* ms */
+ #define GPM_MANAGER_NOTIFY_TIMEOUT_LONG 30 * 1000 /* ms */
+@@ -1092,111 +1091,6 @@ gpm_manager_settings_changed_cb (GSettings *settings, const gchar *key, GpmManag
+ }
+
+ /**
+- * gpm_manager_perhaps_recall_response_cb:
+- */
+-static void
+-gpm_manager_perhaps_recall_response_cb (GtkDialog *dialog, gint response_id, GpmManager *manager)
+-{
+- GdkScreen *screen;
+- GtkWidget *dialog_error;
+- GError *error = NULL;
+- gboolean ret;
+- const gchar *website;
+-
+- /* don't show this again */
+- if (response_id == GTK_RESPONSE_CANCEL) {
+- g_settings_set_boolean (manager->priv->settings, GPM_SETTINGS_NOTIFY_PERHAPS_RECALL, FALSE);
+- goto out;
+- }
+-
+- /* visit recall website */
+- if (response_id == GTK_RESPONSE_OK) {
+- screen = gdk_screen_get_default();
+- website = (const gchar *) g_object_get_data (G_OBJECT (manager), "recall-oem-website");
+- ret = gtk_show_uri (screen, website, gtk_get_current_event_time (), &error);
+- if (!ret) {
+- dialog_error = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK,
+- "Failed to show url %s", error->message);
+- gtk_dialog_run (GTK_DIALOG (dialog_error));
+- g_error_free (error);
+- }
+- goto out;
+- }
+-out:
+- gtk_widget_destroy (GTK_WIDGET (dialog));
+- return;
+-}
+-
+-/**
+- * gpm_manager_perhaps_recall_delay_cb:
+- */
+-static gboolean
+-gpm_manager_perhaps_recall_delay_cb (GpmManager *manager)
+-{
+- const gchar *oem_vendor;
+- gchar *title = NULL;
+- gchar *message = NULL;
+- GtkWidget *dialog;
+-
+- oem_vendor = (const gchar *) g_object_get_data (G_OBJECT (manager), "recall-oem-vendor");
+-
+- /* TRANSLATORS: the battery may be recalled by it's vendor */
+- title = g_strdup_printf ("%s: %s", GPM_NAME, _("Battery may be recalled"));
+- message = g_strdup_printf (_("A battery in your computer may have been "
+- "recalled by %s and you may be at risk.\n\n"
+- "For more information visit the battery recall website."), oem_vendor);
+- dialog = gtk_message_dialog_new_with_markup (NULL, GTK_DIALOG_DESTROY_WITH_PARENT,
+- GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE,
+- "<span size='larger'><b>%s</b></span>", title);
+-
+- gtk_message_dialog_format_secondary_markup (GTK_MESSAGE_DIALOG (dialog), "%s", message);
+-
+- /* TRANSLATORS: button text, visit the manufacturers recall website */
+- gtk_dialog_add_button (GTK_DIALOG (dialog), _("Visit recall website"), GTK_RESPONSE_OK);
+-
+- /* TRANSLATORS: button text, do not show this bubble again */
+- gtk_dialog_add_button (GTK_DIALOG (dialog), _("Do not show me this again"), GTK_RESPONSE_CANCEL);
+-
+- /* wait async for response */
+- gtk_widget_show (dialog);
+- g_signal_connect (dialog, "response", G_CALLBACK (gpm_manager_perhaps_recall_response_cb), manager);
+-
+- g_free (title);
+- g_free (message);
+-
+- /* never repeat */
+- return FALSE;
+-}
+-
+-/**
+- * gpm_manager_engine_perhaps_recall_cb:
+- */
+-static void
+-gpm_manager_engine_perhaps_recall_cb (GpmEngine *engine, UpDevice *device, gchar *oem_vendor, gchar *website, GpmManager *manager)
+-{
+- gboolean ret;
+-
+- /* don't show when running under GDM */
+- if (g_getenv ("RUNNING_UNDER_GDM") != NULL) {
+- egg_debug ("running under gdm, so no notification");
+- return;
+- }
+-
+- /* already shown, and dismissed */
+- ret = g_settings_get_boolean (manager->priv->settings, GPM_SETTINGS_NOTIFY_PERHAPS_RECALL);
+- if (!ret) {
+- egg_debug ("Gsettings prevents notification: %s", GPM_SETTINGS_NOTIFY_PERHAPS_RECALL);
+- return;
+- }
+-
+- g_object_set_data_full (G_OBJECT (manager), "recall-oem-vendor", (gpointer) g_strdup (oem_vendor), (GDestroyNotify) g_free);
+- g_object_set_data_full (G_OBJECT (manager), "recall-oem-website", (gpointer) g_strdup (website), (GDestroyNotify) g_free);
+-
+- /* delay by a few seconds so the panel can load */
+- g_timeout_add_seconds (GPM_MANAGER_RECALL_DELAY, (GSourceFunc) gpm_manager_perhaps_recall_delay_cb, manager);
+-}
+-
+-/**
+ * gpm_manager_engine_icon_changed_cb:
+ */
+ static void
+@@ -2023,8 +1917,6 @@ gpm_manager_init (GpmManager *manager)
+ gpm_manager_sync_policy_sleep (manager);
+
+ manager->priv->engine = gpm_engine_new ();
+- g_signal_connect (manager->priv->engine, "perhaps-recall",
+- G_CALLBACK (gpm_manager_engine_perhaps_recall_cb), manager);
+ g_signal_connect (manager->priv->engine, "low-capacity",
+ G_CALLBACK (gpm_manager_engine_low_capacity_cb), manager);
+ g_signal_connect (manager->priv->engine, "icon-changed",
+
diff --git a/mate-extra/mate-power-manager/mate-power-manager-1.8.0-r1.ebuild b/mate-extra/mate-power-manager/mate-power-manager-1.8.0-r1.ebuild
new file mode 100644
index 00000000..b7eacc84
--- /dev/null
+++ b/mate-extra/mate-power-manager/mate-power-manager-1.8.0-r1.ebuild
@@ -0,0 +1,104 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/mate-extra/mate-power-manager/mate-power-manager-1.8.0-r1.ebuild,v 1.7 2014/09/19 17:04:21 ssuominen Exp $
+
+EAPI="5"
+
+GCONF_DEBUG="no"
+
+inherit autotools gnome2 versionator
+
+MATE_BRANCH="$(get_version_component_range 1-2)"
+
+SRC_URI="http://pub.mate-desktop.org/releases/${MATE_BRANCH}/${P}.tar.xz"
+DESCRIPTION="A session daemon for MATE that makes it easy to manage your laptop or desktop system"
+HOMEPAGE="http://mate-desktop.org"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+IUSE="+applet gnome-keyring man policykit test unique"
+
+# Interactive testsuite.
+RESTRICT="test"
+
+COMMON_DEPEND="app-text/rarian:0
+ >=dev-libs/dbus-glib-0.70:0
+ >=dev-libs/glib-2.13:2
+ >=media-libs/libcanberra-0.10:0[gtk]
+ >=sys-apps/dbus-1:0
+ >=sys-power/upower-0.9.23
+ >=x11-apps/xrandr-1.2:0
+ >=x11-libs/cairo-1:0
+ >=x11-libs/gdk-pixbuf-2.11:2
+ >=x11-libs/gtk+-2.17.7:2
+ x11-libs/libX11:0
+ x11-libs/libXext:0
+ x11-libs/libXrandr:0
+ >=x11-libs/libnotify-0.7:0
+ x11-libs/pango:0
+ applet? ( >=mate-base/mate-panel-1.6:0 )
+ gnome-keyring? ( >=gnome-base/gnome-keyring-3:0 )
+ unique? ( >=dev-libs/libunique-0.9.4:1 )"
+
+RDEPEND="${COMMON_DEPEND}
+ policykit? ( >=mate-extra/mate-polkit-1.6:0 )"
+
+DEPEND="${COMMON_DEPEND}
+ app-text/docbook-xml-dtd:4.3
+ >=app-text/scrollkeeper-dtd-1:1.0
+ app-text/yelp-tools:0
+ >=dev-util/intltool-0.35:*
+ x11-proto/randrproto:0
+ >=x11-proto/xproto-7.0.15:0
+ sys-devel/gettext:*
+ virtual/pkgconfig:*
+ man? ( app-text/docbook-sgml-utils:0
+ >=app-text/docbook-sgml-dtd-4.3 )"
+
+src_prepare() {
+ # Upstreamed patches
+ epatch "${FILESDIR}"/${PF}-dbus_interface_keyboard_backlight_controls.patch
+ epatch "${FILESDIR}"/${PF}-avoid-levels-is-0-warning.patch
+
+ # Upower 1.0 fixes
+ # https://github.com/mate-desktop/mate-power-manager/commit/220a4e0
+ epatch "${FILESDIR}"/${PF}-remove-battery-recall-logic.patch
+ # https://github.com/mate-desktop/mate-power-manager/commit/d59f4b8
+ epatch "${FILESDIR}"/${PF}-port-to-upower-0.99-API.patch
+ # https://github.com/mate-desktop/mate-power-manager/commit/1fb2870
+ epatch "${FILESDIR}"/${PF}-improve-UPower1-support.patch
+ # https://github.com/mate-desktop/mate-power-manager/commit/8f734c6
+ epatch "${FILESDIR}"/${PF}-other-round-of-fixes-for-UPower-0.99-API-changes.patch
+
+ eautoreconf
+ gnome2_src_prepare
+
+ # This needs to be after eautoreconf to prevent problems like bug #356277
+ # Remove the docbook2man rules here since it's not handled by a proper
+ # parameter in configure.in.
+ if ! use man; then
+ sed -e 's:@HAVE_DOCBOOK2MAN_TRUE@.*::' -i man/Makefile.in \
+ || die "docbook sed failed"
+ fi
+}
+
+src_configure() {
+ gnome2_src_configure \
+ $(use_enable applet applets) \
+ $(use_enable test tests) \
+ $(use_enable unique) \
+ $(use_with gnome-keyring keyring) \
+ --enable-compile-warnings=minimum \
+ --enable-unique \
+ --with-gtk=2.0
+}
+
+DOCS="AUTHORS HACKING NEWS README TODO"
+
+src_test() {
+ unset DBUS_SESSION_BUS_ADDRESS
+
+ dbus-launch Xemake check || die "Test phase failed"
+}