summaryrefslogtreecommitdiff
path: root/mate-base/mate-session-manager
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /mate-base/mate-session-manager
reinit the tree, so we can have metadata
Diffstat (limited to 'mate-base/mate-session-manager')
-rw-r--r--mate-base/mate-session-manager/Manifest17
-rw-r--r--mate-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.12.2-save-session-ui.patch535
-rw-r--r--mate-base/mate-session-manager/mate-session-manager-1.12.2-r1.ebuild89
-rw-r--r--mate-base/mate-session-manager/mate-session-manager-1.14.1.ebuild87
-rw-r--r--mate-base/mate-session-manager/mate-session-manager-1.16.0.ebuild85
-rw-r--r--mate-base/mate-session-manager/mate-session-manager-1.18.0-r1.ebuild85
-rw-r--r--mate-base/mate-session-manager/mate-session-manager-1.18.0.ebuild85
-rw-r--r--mate-base/mate-session-manager/metadata.xml16
12 files changed, 1463 insertions, 0 deletions
diff --git a/mate-base/mate-session-manager/Manifest b/mate-base/mate-session-manager/Manifest
new file mode 100644
index 000000000000..3f639120a95a
--- /dev/null
+++ b/mate-base/mate-session-manager/Manifest
@@ -0,0 +1,17 @@
+AUX 10-user-dirs-update-mate 267 SHA256 b973a333aae367d0b9786e4b67c14f08acab7cf8959ebc747a665066ee0ad5dc SHA512 3f2803e9dfc7368ce6effdd538f67714e3ec5554b32fcc4ada4ef033e8e4dabcca17db095c49c368ab7f76a478bf536bd0ce26cceaf1b20ec5e75db470656076 WHIRLPOOL 4d08fc8df30a60627b869230c1f87617364d81d5441ba23c739ed82f5dedeb3f4bd6e6dc89f9210febc55c88f6b908a1f6ff9af744c62b5bfb7cdeda5e095dbd
+AUX 15-xdg-data-mate 224 SHA256 cb56c4b4ed8fb2c53de0c85d73e478da567ae01f3eceda8518089f1963120564 SHA512 a19acef85d510d6244fd29ba7daa6d5cc314392257b47574d8aedea235e4a5273d36bd67c138da9496663c2786ba5f7f433ff4aa6990a91a39be267026e5694d WHIRLPOOL 43470f1c5fb41e29b783bf8b550c4fcca0ae2f2a23093d673bdf4b6269dc703c24cfb11d55ef558961c1034304e99df1dcc4472988964be170def4255da1eace
+AUX MATE 2378 SHA256 dd97845a38a2ba17694c671edd9d42be3457de1f192931856ad4b729821b0932 SHA512 dbb162f694eeee806a12b46bf45d47f4887a83562b61d05037b3de5a7778a68d79de5528327588da13a5c17c283c8b7590c10877eba77cea75ebe5113ef2c920 WHIRLPOOL 06cd034b3a63a8595b48e1b3f4830b10af583963ca1ed4eeb5d84c3ffb6e6f8c5db3646ad37b808573cc7c71faef29d0e311204c3a1d93288d2e0556a5bd2c7f
+AUX defaults.list 14293 SHA256 ccb574804b6f0efd1868e4db7e1ab7810df5391e82af334969cb38fa2a319686 SHA512 d3b14a4676bbadb93bc33e94ddf74fc6a2c072c52ada51d8f658008301d795102d47b3e1b71f9884d117111329774deaab1a5c1718c3dab5bcf96df1657f3c9d WHIRLPOOL 4a343f0bca9bb25695f1235ca2c18184843104dd3688e4db2167274b5480dee442ee84f2e0a846eebaa72e1bf568a0cac4a08ca6e4617c1d97b14558b4349c84
+AUX mate-session-manager-1.12.2-save-session-ui.patch 20029 SHA256 fb8b2e660dd7d932768f111af80702bfd6e4cb31f779e1bd0e5ff1a6543453a8 SHA512 43501ff0911a3c9e6e007b7b8da771a6bfaac46b33b7b7a7be1570e77cad8222e1b3c0f4db0e23c92e5f3bde593bf52770cb56cad37d78ead028ecce8e5c619d WHIRLPOOL a58ac6d9e2b8f611fda7d4212680594881684e6ac3cf44ca7b839ecf62cb1909d753a4df5e7de13423f6daa718344a6ae091f4145ecee25f7d623c9d658b266b
+DIST mate-session-manager-1.12.2.tar.xz 538832 SHA256 bd4221e654a425f7cf05a8b5073dfa10b2f4f99b6e9c2f0b331e0f82142edf93 SHA512 4b4a3ecb0f7cbb25e17db8c5833f789858c94fb236ed60b9e98f59cffa320ec32c2b1960fdcbb9c2c9f476ed76cb1f37c3e07746c7c90e08a0dbcc62aac9793e WHIRLPOOL c7ed6044f99b639716e84135674d4c7e4b001d1284c07f2f0fda6c70e6e2aa420574020fc6f1a53d96b420d7e5ba98c82ca6aeab2168e9494c78729ab1fcbf98
+DIST mate-session-manager-1.14.1.tar.xz 574804 SHA256 26bb04472e19d637db6e9653235d5343dd7b6f2a128a4d2b19366a8bd01d4502 SHA512 993f314c887bca8d8e0b9450f0e62686e133ea16ee2b6675ff69766564d47a4e7d48581867e8d5e8395ee2e3b1735b121f16cb1be22c7da29015a58f98edd638 WHIRLPOOL 309f42c3d7b40f6074e5704783eaa83880fe2578d24b1784be992d5418149d1dfaa5f56c347557450e8281f48f990d21d624afe5493d14cba4493cb0b4c951a4
+DIST mate-session-manager-1.16.0.tar.xz 574464 SHA256 15a5b986c6ba32bab381ed68d21d50ca14fdbe1e2c28ca990a833f21539b41c6 SHA512 55eeef35c388a1f2ed1ad21002863b09d462f5549fb14edcde530715d52e012ee4ecb09c7757775011159b261db7e02be13dccad710fdcd66455383b84a26b86 WHIRLPOOL 6cef60b4d9816361f51a73dd7048c493d440322df8c4c82f33fcb10c4b73e439aabb0178876cb25dcdc69c0c012dc7d1120e4409843ab45314e61dc0b012ef3b
+DIST mate-session-manager-1.18.0.tar.xz 578256 SHA256 1c50f7866d8c75c1a918754960c6629798d6cb0f8d06aa3e48516ea672c7d419 SHA512 0b1299eed5a745112a9976a85965847fc7a579e161236f4d661cf08a1292037aa8246bd3e3efcf3d0c6ea8b005e9dfc33cec797c8dc48615f7bc88ce5d351ba8 WHIRLPOOL d94e9a2d46aefe017ba38987a61721b71b6465b002feb713694146f75dea75798ada81ffc7c1b79e8d76c7badf12b9180292eefcaa0bc97ef7d6a8ba39c71f3e
+EBUILD mate-session-manager-1.12.2-r1.ebuild 2230 SHA256 e844d05beb96e4f2081bbc1ee25171bf9e30ce9b433169618128acfdfa59e893 SHA512 55063c103ad5851136df465c4a7dc7cbc0032805da4acf4df22e0c3276dfc21b1ae41dc91d6f27cfae76983c5f36d9703e83a114023a2da67ac4b3422f4dec54 WHIRLPOOL f39890dd245a957bd8b40467a7f7fd85b69f7c247d3c9d8ade835b50ad4340cffc8faec3af33b3ac4fc68cc06984ced35b04d04602ccbcb32142b8cb0526a1d2
+EBUILD mate-session-manager-1.14.1.ebuild 2118 SHA256 20a0667eb497011265f827b0b9998366864d6463138b68459439f8ccf6ae8216 SHA512 9249fb51db47698f455dc127ad136166ab4500fd00419da86af3e6013fee9b1969376bb24675985095f74ee31f14683efb6f37508d8c4e996948d1a75ba60a14 WHIRLPOOL 616d48c3778c631ed775eb004f7c61ab134a6876d3f56ca3138a8f7d227fcafa3559173c074637c24b9cfdbb6028a03ed2ac09c4535c73d8df88cc8839c2c10c
+EBUILD mate-session-manager-1.16.0.ebuild 2033 SHA256 670de94b250332ac9403fae6d4558e5f193d5307932b19e9fae1c16507296f94 SHA512 935987758e365e1719ef0d7e29ea7a03e40e7f3a6b0b311c464663f89a7259e0e6cda994dc5705181deb43e4beb027364b0b614e03b48aa5272d9fadbd759733 WHIRLPOOL f5ad709457f744305ff0cbf3d49a7cc458f8ff83e4fe48adac878683867689e894d65977507803181ee02b3a05c121b3181de1c1686607447f2b6b51376fab39
+EBUILD mate-session-manager-1.18.0-r1.ebuild 2007 SHA256 916cc10a1e8fbe695d240dc61f18d577f7944be14e6b6e9631cf45c59e0c14bd SHA512 c371ba1c9c92b82e4e8f62f201abec2270ede3be9ed83da235ad4677a5c35cd42ec05e87fa0d2949d1a86bd060bc25c12ceb64652a18113a4c9082096ac3d75b WHIRLPOOL 01891c37e71f605afeccfb977ecec18452782729b90e1bcde2283e47f466e96fc468df59f563a48a35e4f0f27bac81e3a0861775a92172efbf3d26c5b4654251
+EBUILD mate-session-manager-1.18.0.ebuild 2006 SHA256 d6d5aa63a7e6529a7b4c0b33b9e94b834ec098df75cf89549b841a69a6b5af06 SHA512 fb1e2010ae2bec4a6e931cdbc9ac2169baaa027f3254b7ca1c9fb3a77fba19fc661ea12b76d5ad62725e4b0688aebd1cd2ace107e0ed177aa3892ae6b393be6d WHIRLPOOL 7a092c50e272f887c2047ecca5614cbcc4c1f4adac193941f3c7557fd808d867f11e7ad7146b725ade2d2ebca8820169d7af1e95d3ac8a040b88dab4a967d902
+MISC ChangeLog 5360 SHA256 6e564e3d9b860aff37ff372306eb1d0d934f0cb4230fd5942cd952c36a27ff3f SHA512 fd831ac918edc065989bd49a1f378ff1664be76e0dab63439bd14a0bd0715bdb1dcff0a4a4ca43725c7dd09f9666dcb23dc24dde899bd7677950a11846fa57c5 WHIRLPOOL a858bd29cc3fb8c50653a0fb0d892c1b40e19d5a90a5e8dca7bc446449b2c8adfb6198c0c8ee64f3023b59df359ce428c07803f1422784678de2fcbc6dc8f6fc
+MISC ChangeLog-2015 3680 SHA256 169c0feb5c363264938f5aeb73c46539707d7bfeb48354d59b8567f6dcf39082 SHA512 2325098365135e472a9a6b31f0b5ab51e4585ae3015dba62f1ee66923b4d0c4c0d90b2a6fa8c68fe0814b5b0a42682e2616abb00f6a144ee1a2694723e9d774e WHIRLPOOL 12d9b0261bf9e7ac278770a8202ed8bc5decee28220d4d8b79d18e3e791241c8457ae8deb499fca61ad5587f496164f51443187848f196dfbb942931126149ef
+MISC metadata.xml 558 SHA256 8f29486dfd5af8e63384ca966ca9be7afbff76032035248d26ec8c8ef77f57c0 SHA512 3ec5ae6695bb7477bf8384dc31143be21ff5d2f5ac0715309657b14e3b43b8013cfccf701307b2ee1a0f8e2cf0e7956d5db37739578c18006a299e428137ed14 WHIRLPOOL 2a5fbbdecc2bdca4a223ab03b7a4e028773e23ffe229e2d79c21e9bc1825c5cb992b58d251832b5972125fa69df076b275c153d6e84c90012d4ee7ac5630ce18
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 100644
index 000000000000..35973aae2447
--- /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 000000000000..df360cf85fdd
--- /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 000000000000..baa154bdbfd7
--- /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 000000000000..0d6d6bf9509a
--- /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.12.2-save-session-ui.patch b/mate-base/mate-session-manager/files/mate-session-manager-1.12.2-save-session-ui.patch
new file mode 100644
index 000000000000..e7040f47f45a
--- /dev/null
+++ b/mate-base/mate-session-manager/files/mate-session-manager-1.12.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.gnome.SessionManager"
++#define GSM_PATH_DBUS "/org.gnome.SessionManager"
++#define GSM_INTERFACE_DBUS "org.gnome.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.gnome.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.gnome.SessionManager.xml b/mate-session/org.gnome.SessionManager.xml
+--- a/mate-session/org.gnome.SessionManager.xml 2012-02-29 22:03:09.000000000 +0100
++++ b/mate-session/org.gnome.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/mate-session-manager-1.12.2-r1.ebuild b/mate-base/mate-session-manager/mate-session-manager-1.12.2-r1.ebuild
new file mode 100644
index 000000000000..02ad708b1ee7
--- /dev/null
+++ b/mate-base/mate-session-manager/mate-session-manager-1.12.2-r1.ebuild
@@ -0,0 +1,89 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit mate
+
+if [[ ${PV} != 9999 ]]; then
+ KEYWORDS="amd64 ~arm x86"
+fi
+
+DESCRIPTION="MATE session manager"
+HOMEPAGE="http://mate-desktop.org/"
+
+LICENSE="GPL-2 LGPL-2 FDL-1.1"
+SLOT="0"
+
+IUSE="debug elibc_FreeBSD gnome-keyring gtk3 ipv6 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.36:2
+ dev-libs/libxslt
+ sys-apps/dbus
+ x11-apps/xdpyinfo
+ x11-libs/gdk-pixbuf: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 )
+ !gtk3? ( >=x11-libs/gtk+-2.14:2 )
+ gtk3? ( >=x11-libs/gtk+-3.0:3 )
+ systemd? ( sys-apps/systemd )
+ upower? ( || ( >=sys-power/upower-0.9.23 >=sys-power/upower-pm-utils-0.9.23 ) )"
+
+DEPEND="${RDEPEND}
+ >=dev-util/intltool-0.40:*
+ >=dev-lang/perl-5
+ >=sys-devel/gettext-0.10.40:*
+ virtual/pkgconfig:*
+ !<gnome-base/gdm-2.20.4"
+
+# Add "session saving" button back,
+# see https://bugzilla.gnome.org/show_bug.cgi?id=575544
+PATCHES=( "${FILESDIR}"/${PN}-1.12.2-save-session-ui.patch )
+
+MATE_FORCE_AUTORECONF=true
+
+src_configure() {
+ mate_src_configure \
+ --docdir="${EPREFIX}/usr/share/doc/${PF}" \
+ --with-gtk=$(usex gtk3 3.0 2.0) \
+ $(use_with systemd) \
+ $(use_enable debug) \
+ $(use_enable ipv6) \
+ $(use_enable upower)
+}
+
+src_install() {
+ mate_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-base/mate-session-manager/mate-session-manager-1.14.1.ebuild b/mate-base/mate-session-manager/mate-session-manager-1.14.1.ebuild
new file mode 100644
index 000000000000..054ad67775f6
--- /dev/null
+++ b/mate-base/mate-session-manager/mate-session-manager-1.14.1.ebuild
@@ -0,0 +1,87 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit mate
+
+if [[ ${PV} != 9999 ]]; then
+ KEYWORDS="~amd64 ~arm ~x86"
+fi
+
+DESCRIPTION="MATE session manager"
+HOMEPAGE="http://mate-desktop.org/"
+
+LICENSE="GPL-2 LGPL-2 FDL-1.1"
+SLOT="0"
+
+IUSE="debug elibc_FreeBSD gnome-keyring gtk3 ipv6 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).
+
+COMMON_DEPEND=">=dev-libs/dbus-glib-0.76
+ >=dev-libs/glib-2.36:2
+ dev-libs/libxslt
+ sys-apps/dbus
+ x11-libs/gdk-pixbuf: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
+ virtual/libintl
+ elibc_FreeBSD? ( dev-libs/libexecinfo )
+ !gtk3? ( >=x11-libs/gtk+-2.14:2 )
+ gtk3? ( >=x11-libs/gtk+-3.0:3 )
+ systemd? ( sys-apps/systemd )
+ upower? ( || ( >=sys-power/upower-0.9.23 >=sys-power/upower-pm-utils-0.9.23 ) )"
+
+RDEPEND="${COMMON_DEPEND}
+ x11-apps/xdpyinfo
+ x11-misc/xdg-user-dirs
+ x11-misc/xdg-user-dirs-gtk
+ gnome-keyring? ( gnome-base/gnome-keyring )"
+
+DEPEND="${COMMON_DEPEND}
+ >=dev-util/intltool-0.40:*
+ >=dev-lang/perl-5
+ >=sys-devel/gettext-0.10.40:*
+ virtual/pkgconfig:*
+ !<gnome-base/gdm-2.20.4"
+
+MATE_FORCE_AUTORECONF=true
+
+src_configure() {
+ mate_src_configure \
+ --docdir="${EPREFIX}/usr/share/doc/${PF}" \
+ --with-gtk=$(usex gtk3 3.0 2.0) \
+ $(use_with systemd) \
+ $(use_enable debug) \
+ $(use_enable ipv6) \
+ $(use_enable upower)
+}
+
+src_install() {
+ mate_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-base/mate-session-manager/mate-session-manager-1.16.0.ebuild b/mate-base/mate-session-manager/mate-session-manager-1.16.0.ebuild
new file mode 100644
index 000000000000..3991dbb0bf5e
--- /dev/null
+++ b/mate-base/mate-session-manager/mate-session-manager-1.16.0.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit mate
+
+if [[ ${PV} != 9999 ]]; then
+ KEYWORDS="~amd64 ~arm ~x86"
+fi
+
+DESCRIPTION="MATE session manager"
+HOMEPAGE="http://mate-desktop.org/"
+
+LICENSE="GPL-2 LGPL-2 FDL-1.1"
+SLOT="0"
+
+IUSE="debug elibc_FreeBSD gnome-keyring ipv6 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).
+
+COMMON_DEPEND=">=dev-libs/dbus-glib-0.76
+ >=dev-libs/glib-2.36:2
+ dev-libs/libxslt
+ sys-apps/dbus
+ x11-libs/gdk-pixbuf: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
+ virtual/libintl
+ elibc_FreeBSD? ( dev-libs/libexecinfo )
+ >=x11-libs/gtk+-3.14:3
+ systemd? ( sys-apps/systemd )
+ upower? ( || ( >=sys-power/upower-0.9.23 >=sys-power/upower-pm-utils-0.9.23 ) )"
+
+RDEPEND="${COMMON_DEPEND}
+ x11-apps/xdpyinfo
+ x11-misc/xdg-user-dirs
+ x11-misc/xdg-user-dirs-gtk
+ gnome-keyring? ( gnome-base/gnome-keyring )"
+
+DEPEND="${COMMON_DEPEND}
+ >=dev-util/intltool-0.40:*
+ >=dev-lang/perl-5
+ >=sys-devel/gettext-0.10.40:*
+ virtual/pkgconfig:*
+ !<gnome-base/gdm-2.20.4"
+
+MATE_FORCE_AUTORECONF=true
+
+src_configure() {
+ mate_src_configure \
+ --docdir="${EPREFIX}/usr/share/doc/${PF}" \
+ $(use_with systemd) \
+ $(use_enable debug) \
+ $(use_enable ipv6) \
+ $(use_enable upower)
+}
+
+src_install() {
+ mate_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-base/mate-session-manager/mate-session-manager-1.18.0-r1.ebuild b/mate-base/mate-session-manager/mate-session-manager-1.18.0-r1.ebuild
new file mode 100644
index 000000000000..750c70fd689c
--- /dev/null
+++ b/mate-base/mate-session-manager/mate-session-manager-1.18.0-r1.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit mate
+
+if [[ ${PV} != 9999 ]]; then
+ KEYWORDS="~amd64 ~arm ~x86"
+fi
+
+DESCRIPTION="MATE session manager"
+HOMEPAGE="http://mate-desktop.org/"
+
+LICENSE="GPL-2 LGPL-2 FDL-1.1"
+SLOT="0"
+
+IUSE="debug elibc_FreeBSD gnome-keyring ipv6 systemd +xtrans"
+
+# 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).
+
+COMMON_DEPEND=">=dev-libs/dbus-glib-0.76
+ >=dev-libs/glib-2.36:2
+ dev-libs/libxslt
+ sys-apps/dbus
+ x11-libs/gdk-pixbuf:2
+ >=x11-libs/gtk+-3.14:3
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11
+ x11-libs/libXau
+ x11-libs/libXext
+ x11-libs/libXrender
+ x11-libs/libXtst
+ x11-libs/pango
+ virtual/libintl
+ elibc_FreeBSD? ( dev-libs/libexecinfo )
+ systemd? ( sys-apps/systemd )
+ !systemd? ( >=sys-auth/consolekit-0.9.2 )
+ xtrans? ( x11-libs/xtrans )"
+
+RDEPEND="${COMMON_DEPEND}
+ x11-apps/xdpyinfo
+ x11-misc/xdg-user-dirs
+ x11-misc/xdg-user-dirs-gtk
+ gnome-keyring? ( gnome-base/gnome-keyring )"
+
+DEPEND="${COMMON_DEPEND}
+ >=dev-util/intltool-0.40:*
+ >=dev-lang/perl-5
+ >=sys-devel/gettext-0.10.40:*
+ virtual/pkgconfig:*
+ !<gnome-base/gdm-2.20.4"
+
+MATE_FORCE_AUTORECONF=true
+
+src_configure() {
+ mate_src_configure \
+ --docdir="${EPREFIX}/usr/share/doc/${PF}" \
+ $(use_with systemd) \
+ $(use_with xtrans) \
+ $(use_enable debug) \
+ $(use_enable ipv6)
+}
+
+src_install() {
+ mate_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-base/mate-session-manager/mate-session-manager-1.18.0.ebuild b/mate-base/mate-session-manager/mate-session-manager-1.18.0.ebuild
new file mode 100644
index 000000000000..dae79928d3a0
--- /dev/null
+++ b/mate-base/mate-session-manager/mate-session-manager-1.18.0.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit mate
+
+if [[ ${PV} != 9999 ]]; then
+ KEYWORDS="~amd64 ~arm ~x86"
+fi
+
+DESCRIPTION="MATE session manager"
+HOMEPAGE="http://mate-desktop.org/"
+
+LICENSE="GPL-2 LGPL-2 FDL-1.1"
+SLOT="0"
+
+IUSE="debug elibc_FreeBSD gnome-keyring ipv6 systemd xtrans"
+
+# 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).
+
+COMMON_DEPEND=">=dev-libs/dbus-glib-0.76
+ >=dev-libs/glib-2.36:2
+ dev-libs/libxslt
+ sys-apps/dbus
+ x11-libs/gdk-pixbuf:2
+ >=x11-libs/gtk+-3.14:3
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11
+ x11-libs/libXau
+ x11-libs/libXext
+ x11-libs/libXrender
+ x11-libs/libXtst
+ x11-libs/pango
+ virtual/libintl
+ elibc_FreeBSD? ( dev-libs/libexecinfo )
+ systemd? ( sys-apps/systemd )
+ !systemd? ( >=sys-auth/consolekit-0.9.2 )
+ xtrans? ( x11-libs/xtrans )"
+
+RDEPEND="${COMMON_DEPEND}
+ x11-apps/xdpyinfo
+ x11-misc/xdg-user-dirs
+ x11-misc/xdg-user-dirs-gtk
+ gnome-keyring? ( gnome-base/gnome-keyring )"
+
+DEPEND="${COMMON_DEPEND}
+ >=dev-util/intltool-0.40:*
+ >=dev-lang/perl-5
+ >=sys-devel/gettext-0.10.40:*
+ virtual/pkgconfig:*
+ !<gnome-base/gdm-2.20.4"
+
+MATE_FORCE_AUTORECONF=true
+
+src_configure() {
+ mate_src_configure \
+ --docdir="${EPREFIX}/usr/share/doc/${PF}" \
+ $(use_with systemd) \
+ $(use_with xtrans) \
+ $(use_enable debug) \
+ $(use_enable ipv6)
+}
+
+src_install() {
+ mate_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-base/mate-session-manager/metadata.xml b/mate-base/mate-session-manager/metadata.xml
new file mode 100644
index 000000000000..f69aac22ed08
--- /dev/null
+++ b/mate-base/mate-session-manager/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>mate@gentoo.org</email>
+ <name>Gentoo MATE Desktop</name>
+ </maintainer>
+ <use>
+ <flag name="gtk3">Build with GTK+3 instead of GTK+2</flag>
+ <flag name="xtrans">Build with Xtrans support;
+ WARNING: Disabling this flag will result in ICE binding on all interfaces</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">mate-desktop/mate-session-manager</remote-id>
+ </upstream>
+</pkgmetadata>