summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnome-base/gdm/Manifest3
-rw-r--r--gnome-base/gdm/files/49-keychain-r19
-rw-r--r--gnome-base/gdm/files/50-ssh-agent-r110
-rw-r--r--gnome-base/gdm/files/gdm-2.32.0-xinitrc-ssh-agent.patch32
-rw-r--r--gnome-base/gdm/files/gdm-3.10.0.1-fix-systemd-unit-if-plymouth-disabled.patch12
-rw-r--r--gnome-base/gdm/files/gdm-3.2.1.1-custom-session.patch51
-rw-r--r--gnome-base/gdm/files/gdm-3.6.0-fix-daemonize-regression.patch192
-rw-r--r--gnome-base/gdm/files/gdm-3.6.0-selinux-automagic.patch31
-rwxr-xr-xgnome-base/gdm/files/gdm-3.7.3.1-disable-accessibility.patch34
-rwxr-xr-xgnome-base/gdm/files/gdm-3.7.90-fix-daemonize-regression.patch134
-rw-r--r--gnome-base/gdm/files/gdm-3.8.4-fingerprint-auth.patch29
-rwxr-xr-xgnome-base/gdm/files/gdm-set-session52
-rw-r--r--gnome-base/gdm/gdm-3.10.0.1.ebuild241
-rw-r--r--gnome-base/gdm/gdm-3.8.4.ebuild264
-rw-r--r--gnome-base/libgnome/Manifest3
-rw-r--r--gnome-base/libgnome/files/libgnome-2.26.0-branding.patch12
-rw-r--r--gnome-base/libgnome/files/libgnome-2.28.0-menus-have-icons.patch15
-rw-r--r--gnome-base/libgnome/files/libgnome-2.32-sabayon-background.patch11
-rw-r--r--gnome-base/libgnome/libgnome-2.32.0.ebuild55
-rw-r--r--gnome-base/libgnome/libgnome-2.32.1-r1.ebuild75
-rw-r--r--gnome-base/libgnome/libgnome-2.32.1.ebuild64
-rw-r--r--gnome-base/libgnome/metadata.xml5
-rw-r--r--gnome-base/nautilus/Manifest3
-rw-r--r--gnome-base/nautilus/files/nautilus-3.0.2-fix-autostart-live-boot.patch8
-rw-r--r--gnome-base/nautilus/files/nautilus-3.2.1-startup-notify.patch12
-rw-r--r--gnome-base/nautilus/files/nautilus-3.5.91-delete.patch44
-rw-r--r--gnome-base/nautilus/metadata.xml11
-rw-r--r--gnome-base/nautilus/nautilus-3.10.1.ebuild133
-rw-r--r--gnome-base/nautilus/nautilus-3.6.3.ebuild117
-rw-r--r--gnome-base/nautilus/nautilus-3.8.2.ebuild131
-rw-r--r--gnome-extra/cinnamon/Manifest2
-rw-r--r--gnome-extra/cinnamon/cinnamon-2.0.12.ebuild213
-rw-r--r--gnome-extra/cinnamon/files/background.patch16
-rw-r--r--gnome-extra/cinnamon/files/bluetooth_obex_transfer.patch25
-rw-r--r--gnome-extra/cinnamon/files/cinnamon-1.6.1-automagic-gnome-bluetooth.patch44
-rw-r--r--gnome-extra/cinnamon/files/cinnamon-1.7.8-settings-lspci.patch21
-rw-r--r--gnome-extra/cinnamon/files/cinnamon-1.8.8.1-optional-networkmanager.patch145
-rw-r--r--gnome-extra/cinnamon/files/cinnamon-screensaver.desktop15
-rw-r--r--gnome-extra/cinnamon/files/cinnamon2d-screensaver.desktop15
-rw-r--r--gnome-extra/cinnamon/files/fix-control-center-check.patch12
-rw-r--r--gnome-extra/cinnamon/files/idle-dim.patch35
-rw-r--r--gnome-extra/cinnamon/files/input_keybindings.patch11
-rw-r--r--gnome-extra/cinnamon/files/keyboard_applet-2.patch133
-rw-r--r--gnome-extra/cinnamon/files/keyboard_applet.patch142
-rw-r--r--gnome-extra/cinnamon/files/lspci.patch17
-rw-r--r--gnome-extra/cinnamon/files/menu_editor.patch815
-rw-r--r--gnome-extra/cinnamon/files/remove_GC.patch124
-rw-r--r--gnome-extra/cinnamon/files/screensaver.patch36
-rw-r--r--gnome-extra/cinnamon/files/start-here.pngbin0 -> 12493 bytes
-rw-r--r--gnome-extra/gnome-shell-windowlist/gnome-shell-windowlist-20120121.ebuild35
-rw-r--r--gnome-extra/nautilus-file-roller/Manifest2
-rw-r--r--gnome-extra/nautilus-file-roller/metadata.xml7
-rw-r--r--gnome-extra/nautilus-file-roller/nautilus-file-roller-3.10.2.1.ebuild53
-rw-r--r--gnome-extra/nautilus-file-roller/nautilus-file-roller-3.8.4.ebuild53
54 files changed, 3764 insertions, 0 deletions
diff --git a/gnome-base/gdm/Manifest b/gnome-base/gdm/Manifest
new file mode 100644
index 00000000..37239df5
--- /dev/null
+++ b/gnome-base/gdm/Manifest
@@ -0,0 +1,3 @@
+DIST gdm-3.10.0.1.tar.xz 1552460 SHA256 549a42009af9c79a4e07632e405dcb71ba2e876e766cff02471511ad641b6ae7 SHA512 9c108fd70324c17bd93c1f9ad74a87404350041c4d0c45f72c233a1414202b107502f0154486d8c8cceb9f0826275608045539c8bc96cbc6ef5350fc55d5462a WHIRLPOOL 34dd4595ad94822703b4c9d49ce413b64a93e0ccd50bd757dbdf79b592fb714b24d9c9b87d852d04d62750bec3daa3039e5d0d70ff03611c698f63b3b91c9404
+DIST gdm-3.8.4.tar.xz 1677040 SHA256 db40fb66bf476721b6d333abe0bfed7feacdca7d492f971c86a3f1e5cccdb447 SHA512 a64df8a4b7e1000aadfe1433b1d0f5d9bd16eeca45f1fdf36adc207a9f1dd410cf8e888553205135952a6da30b8c9efd4a240fc3f454636e0c9e4f86414a3283 WHIRLPOOL 4d3fe4cbd084a169bce29481271c99a8e9523cd6b1d163e4e1dc5cd829097daf9339de538d43998109596b41bde34ff798d2eaf607f38c5c859ee3b526f7e04e
+DIST gdm-gentoo-2012.09.25.tar.xz 1448 SHA256 f5978e4309e5486be41fec437a6e538dbfca3451757f3282a557941c4e70700d SHA512 c9d1a4699c34ce8708a4e7eed1b38d66ead507a4a2a6b45f2ef6254d54b46c755c9195db0593d6aa6785a8986e2ef5235592071c0cae8c1c8963951ecdb7c079 WHIRLPOOL c0efd131977b0036431b9edd6932025247323f198dc1bd7195efb55d31fd6b106ebdf391944b0009cf7a3261e99160fa6041a26348fe020badf26d0785f5dcc8
diff --git a/gnome-base/gdm/files/49-keychain-r1 b/gnome-base/gdm/files/49-keychain-r1
new file mode 100644
index 00000000..51a1ca87
--- /dev/null
+++ b/gnome-base/gdm/files/49-keychain-r1
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# source keychain variables
+
+keychain="`which keychain 2>/dev/null`"
+if [ -n "$keychain" ] && [ -x "$keychain" ] && [ -f "$HOME/.bash_profile" ]
+then
+ . "${HOME}/.bash_profile"
+fi
diff --git a/gnome-base/gdm/files/50-ssh-agent-r1 b/gnome-base/gdm/files/50-ssh-agent-r1
new file mode 100644
index 00000000..4d94fb04
--- /dev/null
+++ b/gnome-base/gdm/files/50-ssh-agent-r1
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# add ssh-agent if found
+
+sshagent="`which ssh-agent 2>/dev/null`"
+if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
+ command="$sshagent -- $command"
+elif [ -z "$sshagent" ] ; then
+ echo "$0: ssh-agent not found!"
+fi
diff --git a/gnome-base/gdm/files/gdm-2.32.0-xinitrc-ssh-agent.patch b/gnome-base/gdm/files/gdm-2.32.0-xinitrc-ssh-agent.patch
new file mode 100644
index 00000000..b1cddf17
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-2.32.0-xinitrc-ssh-agent.patch
@@ -0,0 +1,32 @@
+From 1cb1841da3a8fedc1671637e2828d5e361af21fa Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Tue, 2 Nov 2010 23:19:31 +0100
+Subject: [PATCH 5/6] ssh-agent handling must be done at xinitrc.d
+
+Gentoo bug: #220603
+---
+ data/Xsession.in | 8 --------
+ 1 files changed, 0 insertions(+), 8 deletions(-)
+
+diff --git a/data/Xsession.in b/data/Xsession.in
+index 0da187d..aa49b90 100755
+--- a/data/Xsession.in
++++ b/data/Xsession.in
+@@ -189,14 +189,6 @@ if [ -d /etc/X11/xinit/xinitrc.d ]; then
+ done
+ fi
+
+-# add ssh-agent if found
+-sshagent="`gdmwhich ssh-agent`"
+-if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
+- command="$sshagent -- $command"
+-elif [ -z "$sshagent" ] ; then
+- echo "$0: ssh-agent not found!"
+-fi
+-
+ echo "$0: Setup done, will execute: $command"
+
+ eval exec $command
+--
+1.7.3.1
+
diff --git a/gnome-base/gdm/files/gdm-3.10.0.1-fix-systemd-unit-if-plymouth-disabled.patch b/gnome-base/gdm/files/gdm-3.10.0.1-fix-systemd-unit-if-plymouth-disabled.patch
new file mode 100644
index 00000000..3fea17be
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.10.0.1-fix-systemd-unit-if-plymouth-disabled.patch
@@ -0,0 +1,12 @@
+--- a/data/gdm.service.in
++++ b/data/gdm.service.in
+@@ -1,7 +1,7 @@
+ [Unit]
+ Description=GNOME Display Manager
+-Conflicts=getty@tty@GDM_INITIAL_VT@.service plymouth-quit.service
+-After=systemd-user-sessions.service getty@tty@GDM_INITIAL_VT@.service plymouth-quit.service
++Conflicts=getty@tty@GDM_INITIAL_VT@.service
++After=systemd-user-sessions.service getty@tty@GDM_INITIAL_VT@.service plymouth-quit.service plymouth-quit-wait.service
+
+ [Service]
+ ExecStart=@sbindir@/gdm
diff --git a/gnome-base/gdm/files/gdm-3.2.1.1-custom-session.patch b/gnome-base/gdm/files/gdm-3.2.1.1-custom-session.patch
new file mode 100644
index 00000000..0642f7c0
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.2.1.1-custom-session.patch
@@ -0,0 +1,51 @@
+From b96c19976b6876648fd91949f78f06cf5d269b18 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Tue, 2 Nov 2010 23:19:07 +0100
+Subject: [PATCH] make custom session work
+
+Gentoo bug: #216984
+
+fix custom sessions not doing sourcing in the proper order.
+---
+ data/Xsession.in | 18 +++++++++---------
+ 1 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/data/Xsession.in b/data/Xsession.in
+index 118518c..201be92 100755
+--- a/data/Xsession.in
++++ b/data/Xsession.in
+@@ -155,15 +155,6 @@ fi
+
+ xhost +si:localuser:`id -un` || :
+
+-# 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" -a ! -d "$i" ]; then
+- . "$i"
+- fi
+- done
+-fi
+-
+ if [ "x$command" = "xcustom" ] ; then
+ if [ -x "$HOME/.xsession" ]; then
+ command="$HOME/.xsession"
+@@ -191,6 +182,15 @@ if [ "x$command" = "xdefault" ] ; then
+ fi
+ fi
+
++# 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" -a ! -d "$i" ]; then
++ . "$i"
++ fi
++ done
++fi
++
+ # add ssh-agent if found
+ sshagent="`gdmwhich ssh-agent`"
+ if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
+--
+1.7.7
+
diff --git a/gnome-base/gdm/files/gdm-3.6.0-fix-daemonize-regression.patch b/gnome-base/gdm/files/gdm-3.6.0-fix-daemonize-regression.patch
new file mode 100644
index 00000000..27f20797
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.6.0-fix-daemonize-regression.patch
@@ -0,0 +1,192 @@
+From 722d31dc8823090b651b103f0194b6380f2d458e Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Tue, 25 Sep 2012 22:30:29 -0400
+Subject: [PATCH] daemonize so that the boot process can continue
+
+Gentoo bug: #236701
+
+Based on original patch by Dan Nicholson <dbn.lists@gmail.com> and
+Gilles Dartiguelongue <eva@gentoo.org>.
+
+Fork gdm-binary, except when -nodaemon is used
+
+Makes the gdm main binary fork and daemonize unless the -nodaemon or
+--nodaemon options are used. Provides compatibility with xdm. Fixes
+bug #550170.
+
+In daemonized mode, start a new process group, and kill it in our signal
+handlers, so that killing gdm kills its spawned processes, and so that
+"/etc/init.d/xdm stop" actually works.
+---
+ configure.ac | 4 ++++
+ daemon/Makefile.am | 1 +
+ daemon/main.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 65 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 61a43d6..a851ba5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -99,6 +99,10 @@ PKG_CHECK_MODULES(DAEMON,
+ AC_SUBST(DAEMON_CFLAGS)
+ AC_SUBST(DAEMON_LIBS)
+
++PKG_CHECK_MODULES(LIBDAEMON, libdaemon)
++AC_SUBST(LIBDAEMON_CFLAGS)
++AC_SUBST(LIBDAEMON_LIBS)
++
+ GLIB_GSETTINGS
+
+ PKG_CHECK_MODULES(NSS,
+diff --git a/daemon/Makefile.am b/daemon/Makefile.am
+index bb84765..cf89b47 100644
+--- a/daemon/Makefile.am
++++ b/daemon/Makefile.am
+@@ -380,6 +380,7 @@ gdm_binary_LDADD = \
+ $(top_builddir)/common/libgdmcommon.la \
+ $(XLIB_LIBS) \
+ $(DAEMON_LIBS) \
++ $(LIBDAEMON_LIBS) \
+ $(XDMCP_LIBS) \
+ $(LIBWRAP_LIBS) \
+ $(SYSTEMD_LIBS) \
+diff --git a/daemon/main.c b/daemon/main.c
+index 3b8572c..c2fe4fe 100644
+--- a/daemon/main.c
++++ b/daemon/main.c
+@@ -34,6 +34,8 @@
+ #include <locale.h>
+ #include <signal.h>
+
++#include <libdaemon/dfork.h>
++
+ #include <glib.h>
+ #include <glib/gi18n.h>
+ #include <glib/gstdio.h>
+@@ -336,16 +338,26 @@ signal_cb (int signo,
+ gpointer data)
+ {
+ int ret;
++ static gboolean ignore_signals = FALSE;
+
+ g_debug ("Got callback for signal %d", signo);
+
+ ret = TRUE;
+
++ /* don't commit suicide before killing everyone in our process group */
++ if (ignore_signals)
++ return ret;
++
+ switch (signo) {
+ case SIGFPE:
+ case SIGPIPE:
+ /* let the fatal signals interrupt us */
+ g_debug ("Caught signal %d, shutting down abnormally.", signo);
++ /* if we daemonized, kill all the processes we spawned */
++ ignore_signals = TRUE;
++ kill (-getpid (), signo);
++ ignore_signals = FALSE;
++
+ ret = FALSE;
+
+ break;
+@@ -354,6 +366,11 @@ signal_cb (int signo,
+ case SIGTERM:
+ /* let the fatal signals interrupt us */
+ g_debug ("Caught signal %d, shutting down normally.", signo);
++ /* if we daemonized, kill all the processes we spawned */
++ ignore_signals = TRUE;
++ kill (-getpid (), signo);
++ ignore_signals = FALSE;
++
+ ret = FALSE;
+
+ break;
+@@ -418,13 +435,16 @@ main (int argc,
+ GOptionContext *context;
+ GError *error;
+ int ret;
++ int i;
+ gboolean res;
+ GdmSignalHandler *signal_handler;
+ static gboolean do_timed_exit = FALSE;
+ static gboolean print_version = FALSE;
+ static gboolean fatal_warnings = FALSE;
++ static gboolean no_daemon = FALSE;
+ static GOptionEntry entries [] = {
+ { "fatal-warnings", 0, 0, G_OPTION_ARG_NONE, &fatal_warnings, N_("Make all warnings fatal"), NULL },
++ { "nodaemon", 0, 0, G_OPTION_ARG_NONE, &no_daemon, N_("Do not fork into the background"), NULL },
+ { "timed-exit", 0, 0, G_OPTION_ARG_NONE, &do_timed_exit, N_("Exit after a time (for debugging)"), NULL },
+ { "version", 0, 0, G_OPTION_ARG_NONE, &print_version, N_("Print GDM version"), NULL },
+
+@@ -439,6 +459,14 @@ main (int argc,
+
+ g_type_init ();
+
++ /* preprocess the arguments to support the xdm style
++ * -nodaemon option
++ */
++ for (i = 0; i < argc; i++) {
++ if (strcmp (argv[i], "-nodaemon") == 0)
++ argv[i] = "--nodaemon";
++ }
++
+ context = g_option_context_new (_("GNOME Display Manager"));
+ g_option_context_add_main_entries (context, entries, NULL);
+ g_option_context_set_ignore_unknown_options (context, TRUE);
+@@ -465,6 +493,33 @@ main (int argc,
+ g_log_set_always_fatal (fatal_mask);
+ }
+
++ if (!no_daemon) {
++ pid_t pid;
++ if (daemon_retval_init () < 0) {
++ g_warning ("Failed to create pipe");
++ exit (-1);
++ }
++ if ((pid = daemon_fork ()) < 0) {
++ /* Fork failed */
++ daemon_retval_done ();
++ exit (1);
++ } else if (pid) {
++ /* Parent process: wait 20s for daemon_retval_send() in the daemon process */
++ if ((ret = daemon_retval_wait (20)) < 0) {
++ g_warning ("Timed out waiting for daemon process: %s", strerror(errno));
++ exit (255);
++ } else if (ret > 0) {
++ g_warning ("Daemon process returned error code %d", ret);
++ exit (ret);
++ }
++ exit (0);
++ }
++ /* Daemon process */
++ daemon_close_all (-1);
++ /* Start a new process group so that killing the daemon will kill the processes that it spawned */
++ setsid ();
++ }
++
+ gdm_log_init ();
+
+ settings = gdm_settings_new ();
+@@ -519,6 +574,9 @@ main (int argc,
+ g_timeout_add_seconds (30, (GSourceFunc) timed_exit_cb, main_loop);
+ }
+
++ if (!no_daemon)
++ daemon_retval_send (0);
++
+ g_main_loop_run (main_loop);
+
+ g_debug ("GDM finished, cleaning up...");
+@@ -535,6 +593,8 @@ main (int argc,
+ ret = 0;
+
+ out:
++ if (!no_daemon)
++ daemon_retval_send (ret);
+
+ return ret;
+ }
+--
+1.7.12
+
diff --git a/gnome-base/gdm/files/gdm-3.6.0-selinux-automagic.patch b/gnome-base/gdm/files/gdm-3.6.0-selinux-automagic.patch
new file mode 100644
index 00000000..035d0fa4
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.6.0-selinux-automagic.patch
@@ -0,0 +1,31 @@
+From 8f9bf7b053fc7a6c2e5b33fc43c168ba7250cb98 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Tue, 25 Sep 2012 17:38:37 -0400
+Subject: [PATCH] configure: Make selinux check non-automagic
+
+---
+ configure.ac | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 80a1fd4..61a43d6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -142,9 +142,13 @@ AC_SUBST(UPOWER)
+ AC_SUBST(UPOWER_CFLAGS)
+ AC_SUBST(UPOWER_LIBS)
+
++AC_ARG_WITH(selinux,
++ AS_HELP_STRING([--with-selinux],
++ [Add SELinux support]))
++
+ PKG_CHECK_MODULES(LIBSELINUX, libselinux, have_selinux=yes, have_selinux=no)
+
+-if test "x$have_selinux" = "xyes" ; then
++if test "x$have_selinux" = "xyes" && test "x$with_selinux" != "xno" ; then
+ AC_DEFINE(HAVE_SELINUX, 1, [Define if have selinux])
+ fi
+ AC_SUBST(LIBSELINUX_CFLAGS)
+--
+1.7.12
+
diff --git a/gnome-base/gdm/files/gdm-3.7.3.1-disable-accessibility.patch b/gnome-base/gdm/files/gdm-3.7.3.1-disable-accessibility.patch
new file mode 100755
index 00000000..bf684640
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.7.3.1-disable-accessibility.patch
@@ -0,0 +1,34 @@
+From 07fb1b31d818f308beb1c3800c4b90830b57d01b Mon Sep 17 00:00:00 2001
+From: Sobhan Mohammadpour <sobhanmohammadpour1@yahoo.fr>
+Date: Fri, 25 Jan 2013 10:03:31 +0330
+Subject: [PATCH] don't load accessbility
+
+---
+ data/00-upstream-settings | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/data/00-upstream-settings b/data/00-upstream-settings
+index 660a295..3993786 100644
+--- a/data/00-upstream-settings
++++ b/data/00-upstream-settings
+@@ -7,7 +7,7 @@
+ #
+
+ [org/gnome/desktop/a11y/keyboard]
+-enable=true
++enable=false
+
+ [org/gnome/desktop/background]
+ show-desktop-icons=false
+@@ -16,7 +16,7 @@ show-desktop-icons=false
+ exec='/bin/true'
+
+ [org/gnome/desktop/interface]
+-toolkit-accessibility=true
++toolkit-accessibility=false
+
+ [org/gnome/desktop/lockdown]
+ disable-application-handlers=true
+--
+1.8.1
+
diff --git a/gnome-base/gdm/files/gdm-3.7.90-fix-daemonize-regression.patch b/gnome-base/gdm/files/gdm-3.7.90-fix-daemonize-regression.patch
new file mode 100755
index 00000000..810bd6e8
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.7.90-fix-daemonize-regression.patch
@@ -0,0 +1,134 @@
+From bda248c1e184f92aedf9f8d932ebd20746910d52 Mon Sep 17 00:00:00 2001
+From: Sobhan Mohammadpour <sobhanmohammadpour1@yahoo.fr>
+Date: Mon, 4 Mar 2013 21:23:45 +0330
+Subject: [PATCH] gdm-3.7.90 fix daemonize regression
+
+---
+ configure.ac | 4 ++++
+ daemon/Makefile.am | 1 +
+ daemon/main.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 50 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 0918060..d4ea271 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -99,6 +99,10 @@ PKG_CHECK_MODULES(DAEMON,
+ AC_SUBST(DAEMON_CFLAGS)
+ AC_SUBST(DAEMON_LIBS)
+
++PKG_CHECK_MODULES(LIBDAEMON, libdaemon)
++AC_SUBST(LIBDAEMON_CFLAGS)
++AC_SUBST(LIBDAEMON_LIBS)
++
+ GLIB_GSETTINGS
+
+ PKG_CHECK_MODULES(NSS,
+diff --git a/daemon/Makefile.am b/daemon/Makefile.am
+index ead9096..b810089 100644
+--- a/daemon/Makefile.am
++++ b/daemon/Makefile.am
+@@ -385,6 +385,7 @@ gdm_LDADD = \
+ $(top_builddir)/common/libgdmcommon.la \
+ $(XLIB_LIBS) \
+ $(DAEMON_LIBS) \
++ $(LIBDAEMON_LIBS) \
+ $(XDMCP_LIBS) \
+ $(LIBWRAP_LIBS) \
+ $(SYSTEMD_LIBS) \
+diff --git a/daemon/main.c b/daemon/main.c
+index 8176fe3..0151862 100644
+--- a/daemon/main.c
++++ b/daemon/main.c
+@@ -34,6 +34,8 @@
+ #include <locale.h>
+ #include <signal.h>
+
++#include <libdaemon/dfork.h>
++
+ #include <glib.h>
+ #include <glib/gi18n.h>
+ #include <glib/gstdio.h>
+@@ -329,8 +331,10 @@ main (int argc,
+ static gboolean do_timed_exit = FALSE;
+ static gboolean print_version = FALSE;
+ static gboolean fatal_warnings = FALSE;
++ static gboolean no_daemon = FALSE;
+ static GOptionEntry entries [] = {
+ { "fatal-warnings", 0, 0, G_OPTION_ARG_NONE, &fatal_warnings, N_("Make all warnings fatal"), NULL },
++ { "nodaemon", 0, 0, G_OPTION_ARG_NONE, &no_daemon, N_("Do not fork into the background"), NULL },
+ { "timed-exit", 0, 0, G_OPTION_ARG_NONE, &do_timed_exit, N_("Exit after a time (for debugging)"), NULL },
+ { "version", 0, 0, G_OPTION_ARG_NONE, &print_version, N_("Print GDM version"), NULL },
+
+@@ -343,6 +347,15 @@ main (int argc,
+
+ ret = 1;
+
++ /* preprocess the arguments to support the xdm style
++ * -nodaemon option
++ */
++ int i;
++ for ( i = 0; i < argc; i++) {
++ if (strcmp (argv[i], "-nodaemon") == 0)
++ argv[i] = "--nodaemon";
++ }
++
+ context = g_option_context_new (_("GNOME Display Manager"));
+ g_option_context_add_main_entries (context, entries, NULL);
+ g_option_context_set_ignore_unknown_options (context, TRUE);
+@@ -369,6 +382,33 @@ main (int argc,
+ g_log_set_always_fatal (fatal_mask);
+ }
+
++ if (!no_daemon) {
++ pid_t pid;
++ if (daemon_retval_init () < 0) {
++ g_warning ("Failed to create pipe");
++ exit (-1);
++ }
++ if ((pid = daemon_fork ()) < 0) {
++ /* Fork failed */
++ daemon_retval_done ();
++ exit (1);
++ } else if (pid) {
++ /* Parent process: wait 20s for daemon_retval_send() in the daemon process */
++ if ((ret = daemon_retval_wait (20)) < 0) {
++ g_warning ("Timed out waiting for daemon process: %s", strerror(errno));
++ exit (255);
++ } else if (ret > 0) {
++ g_warning ("Daemon process returned error code %d", ret);
++ exit (ret);
++ }
++ exit (0);
++ }
++ /* Daemon process */
++ daemon_close_all (-1);
++ /* Start a new process group so that killing the daemon will kill the processes that it spawned */
++ setsid ();
++ }
++
+ gdm_log_init ();
+
+ settings = gdm_settings_new ();
+@@ -418,6 +458,9 @@ main (int argc,
+ g_timeout_add_seconds (30, (GSourceFunc) timed_exit_cb, main_loop);
+ }
+
++ if (!no_daemon)
++ daemon_retval_send (0);
++
+ g_main_loop_run (main_loop);
+
+ g_debug ("GDM finished, cleaning up...");
+@@ -433,6 +476,8 @@ main (int argc,
+ ret = 0;
+
+ out:
++ if (!no_daemon)
++ daemon_retval_send (ret);
+ if (error) {
+ g_printerr ("%s\n", error->message);
+ g_clear_error (&error);
+--
+1.8.1.2
+
diff --git a/gnome-base/gdm/files/gdm-3.8.4-fingerprint-auth.patch b/gnome-base/gdm/files/gdm-3.8.4-fingerprint-auth.patch
new file mode 100644
index 00000000..3b56daf2
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.8.4-fingerprint-auth.patch
@@ -0,0 +1,29 @@
+From 6139570c977561549747d5200b33be9786e95529 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Tue, 30 Jul 2013 22:56:30 -0400
+Subject: [PATCH] Gentoo does not have a fingerprint-auth pam stack
+
+---
+ data/pam-exherbo/gdm-fingerprint.pam | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/data/pam-exherbo/gdm-fingerprint.pam b/data/pam-exherbo/gdm-fingerprint.pam
+index 41639ec..d9633fb 100644
+--- a/data/pam-exherbo/gdm-fingerprint.pam
++++ b/data/pam-exherbo/gdm-fingerprint.pam
+@@ -1,6 +1,11 @@
+ account include system-login
+
+-auth substack fingerprint-auth
++auth optional pam_env.so
++auth required pam_tally2.so onerr=succeed
++auth required pam_shells.so
++auth required pam_nologin.so
++auth required pam_fprintd.so
++auth required pam_permit.so
+ auth optional pam_gnome_keyring.so
+
+ password required pam_deny.so
+--
+1.8.3.2
+
diff --git a/gnome-base/gdm/files/gdm-set-session b/gnome-base/gdm/files/gdm-set-session
new file mode 100755
index 00000000..491b9a67
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-set-session
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+"""Simple script that updates the default session in AccountServices"""
+
+import sys
+import time
+
+from gi.repository import GLib as glib
+
+import dbus
+from dbus.mainloop.glib import DBusGMainLoop
+
+ACCOUNTS_DBUS_NAME = "org.freedesktop.Accounts"
+ACCOUNTS_DBUS_PATH = "/org/freedesktop/Accounts"
+ACCOUNTS_USER_DBUS_NAME = "org.freedesktop.Accounts.User"
+
+if __name__ == "__main__":
+
+ try:
+ username = sys.argv[1]
+ session = sys.argv[2]
+ except IndexError:
+ sys.stderr.write("%s <username> <default session>\n")
+ raise SystemExit(1)
+
+ dbus_loop = DBusGMainLoop(set_as_default = True)
+ loop = glib.MainLoop()
+ glib.threads_init()
+
+ def setup():
+ try:
+ system_bus = dbus.SystemBus(mainloop=dbus_loop)
+ dbus_object = system_bus.get_object(
+ ACCOUNTS_DBUS_NAME, ACCOUNTS_DBUS_PATH)
+
+ iface = dbus.Interface(
+ dbus_object, dbus_interface=ACCOUNTS_DBUS_NAME)
+
+ user_path = iface.FindUserByName(username)
+
+ dbus_object = system_bus.get_object(
+ ACCOUNTS_DBUS_NAME, user_path)
+
+ iface_usr = dbus.Interface(
+ dbus_object, dbus_interface=ACCOUNTS_USER_DBUS_NAME)
+
+ iface_usr.SetXSession(session)
+
+ finally:
+ loop.quit()
+
+ glib.timeout_add(0, setup)
+ loop.run()
diff --git a/gnome-base/gdm/gdm-3.10.0.1.ebuild b/gnome-base/gdm/gdm-3.10.0.1.ebuild
new file mode 100644
index 00000000..d3e7c777
--- /dev/null
+++ b/gnome-base/gdm/gdm-3.10.0.1.ebuild
@@ -0,0 +1,241 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="5"
+GNOME2_LA_PUNT="yes"
+
+inherit autotools eutils gnome2 pam readme.gentoo systemd user
+
+DESCRIPTION="GNOME Display Manager"
+HOMEPAGE="https://live.gnome.org/GDM"
+
+LICENSE="GPL-2+"
+
+SLOT="0"
+IUSE="accessibility audit fprint +gnome-shell +introspection ipv6 plymouth selinux smartcard tcpd test xinerama"
+KEYWORDS="~amd64 ~arm ~ppc64 ~sh ~x86"
+
+# NOTE: x11-base/xorg-server dep is for X_SERVER_PATH etc, bug #295686
+# nspr used by smartcard extension
+# dconf, dbus and g-s-d are needed at install time for dconf update
+# systemd needed for proper restarting, bug #463784
+COMMON_DEPEND="
+ app-text/iso-codes
+ >=dev-libs/glib-2.35:2
+ >=x11-libs/gtk+-2.91.1:3
+ >=x11-libs/pango-1.3
+ dev-libs/nspr
+ >=dev-libs/nss-3.11.1
+ >=gnome-base/dconf-0.11.6
+ >=gnome-base/gnome-settings-daemon-3.1.4
+ gnome-base/gsettings-desktop-schemas
+ >=media-libs/fontconfig-2.5.0
+ >=media-libs/libcanberra-0.4[gtk3]
+ sys-apps/dbus
+ >=sys-apps/accountsservice-0.6.12
+ >=sys-power/upower-0.9
+
+ x11-apps/sessreg
+ x11-base/xorg-server
+ x11-libs/libXi
+ x11-libs/libXau
+ x11-libs/libX11
+ x11-libs/libXdmcp
+ x11-libs/libXext
+ x11-libs/libXft
+ x11-libs/libXrandr
+ >=x11-misc/xdg-utils-1.0.2-r3
+
+ virtual/pam
+ >=sys-apps/systemd-186[pam]
+ sys-auth/pambase[systemd]
+
+ accessibility? ( x11-libs/libXevie )
+ audit? ( sys-process/audit )
+ introspection? ( >=dev-libs/gobject-introspection-0.9.12 )
+ plymouth? ( sys-boot/plymouth )
+ selinux? ( sys-libs/libselinux )
+ tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
+ xinerama? ( x11-libs/libXinerama )
+"
+# XXX: These deps are from session and desktop files in data/ directory
+# at-spi:1 is needed for at-spi-registryd (spawned by simple-chooser)
+# fprintd is used via dbus by gdm-fingerprint-extension
+# gnome-session-3.6 needed to avoid freezing with orca
+RDEPEND="${COMMON_DEPEND}
+ >=gnome-base/gnome-session-3.6
+ x11-apps/xhost
+ x11-themes/gnome-icon-theme-symbolic
+
+ accessibility? (
+ app-accessibility/gnome-mag
+ app-accessibility/gok
+ app-accessibility/orca
+ gnome-extra/at-spi:1 )
+ fprint? (
+ sys-auth/fprintd
+ sys-auth/pam_fprint )
+ gnome-shell? ( >=gnome-base/gnome-shell-3.1.90 )
+ !gnome-shell? ( x11-wm/metacity )
+ smartcard? (
+ app-crypt/coolkey
+ sys-auth/pam_pkcs11 )
+
+ !gnome-extra/fast-user-switch-applet
+"
+DEPEND="${COMMON_DEPEND}
+ app-text/docbook-xml-dtd:4.1.2
+ >=dev-util/intltool-0.40.0
+ >=sys-devel/gettext-0.17
+ virtual/pkgconfig
+ x11-proto/inputproto
+ x11-proto/randrproto
+ test? ( >=dev-libs/check-0.9.4 )
+ xinerama? ( x11-proto/xineramaproto )
+"
+
+DOC_CONTENTS="
+ To make GDM start at boot, run:\n
+ # systemctl enable gdm.service\n
+ \n
+ For passwordless login to unlock your keyring, you need to install
+ sys-auth/pambase with USE=gnome-keyring and set an empty password
+ on your keyring. Use app-crypt/seahorse for that.
+"
+
+pkg_setup() {
+ enewgroup gdm
+ enewgroup video # Just in case it hasn't been created yet
+ enewuser gdm -1 -1 /var/lib/gdm gdm,video
+
+ # For compatibility with certain versions of nvidia-drivers, etc., need to
+ # ensure that gdm user is in the video group
+ if ! egetent group video | grep -q gdm; then
+ # FIXME XXX: is this at all portable, ldap-safe, etc.?
+ # XXX: egetent does not have a 1-argument form, so we can't use it to
+ # get the list of gdm's groups
+ local g=$(groups gdm)
+ elog "Adding user gdm to video group"
+ usermod -G video,${g// /,} gdm || die "Adding user gdm to video group failed"
+ fi
+}
+
+src_prepare() {
+ # make custom session work, bug #216984
+ epatch "${FILESDIR}/${PN}-3.2.1.1-custom-session.patch"
+
+ # ssh-agent handling must be done at xinitrc.d, bug #220603
+ epatch "${FILESDIR}/${PN}-2.32.0-xinitrc-ssh-agent.patch"
+
+ # Fix automagic selinux, upstream bug #704188
+ #FIXME
+ #epatch "${FILESDIR}/${PN}-3.6.0-selinux-automagic.patch"
+
+ # Gentoo does not have a fingerprint-auth pam stack
+ epatch "${FILESDIR}/${PN}-3.8.4-fingerprint-auth.patch"
+
+ # don't load accessibility support at runtime when USE=-accessibility
+ use accessibility || epatch "${FILESDIR}/${PN}-3.7.3.1-disable-accessibility.patch"
+
+ # Correctly set systemd unit dependencies if plymouth is disabled
+ # This avoids screwing up VT1
+ use plymouth || epatch "${FILESDIR}/gdm-3.10.0.1-fix-systemd-unit-if-plymouth-disabled.patch"
+
+ mkdir -p "${S}"/m4
+ sed -i 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/g' configure.ac || die
+ eautoreconf
+
+ gnome2_src_prepare
+}
+
+src_configure() {
+ # PAM is the only auth scheme supported
+ # even though configure lists shadow and crypt
+ # they don't have any corresponding code.
+ # --with-at-spi-registryd-directory= needs to be passed explicitly because
+ # of https://bugzilla.gnome.org/show_bug.cgi?id=607643#c4
+ # If plymouth integration is enabled, gdm expects to be always run
+ # on vt1. If using VT7 worked with 3.8, with 3.10 we incur in an almost deadlock
+ # at boot. See Gentoo bug #453392
+ gnome2_src_configure \
+ --with-run-dir=/run/gdm \
+ --localstatedir="${EPREFIX}"/var \
+ --disable-static \
+ --with-xdmcp=yes \
+ --enable-authentication-scheme=pam \
+ --with-default-pam-config=exherbo \
+ --with-at-spi-registryd-directory="${EPREFIX}"/usr/libexec \
+ $(use plymouth || echo -n --with-initial-vt=7) \
+ --with-systemd \
+ --enable-systemd-journal \
+ --without-console-kit \
+ $(use_with accessibility xevie) \
+ $(use_with audit libaudit) \
+ $(use_enable ipv6) \
+ $(use_with plymouth) \
+ $(use_with selinux) \
+ $(systemd_with_unitdir) \
+ $(use_with tcpd tcp-wrappers) \
+ $(use_with xinerama) \
+ ITSTOOL=$(type -P true)
+}
+
+src_install() {
+ gnome2_src_install
+
+ insinto /etc/X11/xinit/xinitrc.d
+ newins "${FILESDIR}/49-keychain-r1" 49-keychain
+ newins "${FILESDIR}/50-ssh-agent-r1" 50-ssh-agent
+
+ # log, etc.
+ keepdir /var/log/gdm
+
+ # gdm user's home directory
+ keepdir /var/lib/gdm
+ fowners gdm:gdm /var/lib/gdm
+
+ # install XDG_DATA_DIRS gdm changes
+ echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
+ doenvd 99xdg-gdm
+
+ # Sabayon: install our own script to set the gdm session via dbus
+ # AccountServices interface. This is useful for live booting to select
+ # xbmc or fluxbox.
+ exeinto /usr/libexec
+ doexe "${FILESDIR}/gdm-set-session"
+
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ local d ret
+
+ gnome2_pkg_postinst
+
+ dbus-launch dconf update || die "'dconf update' failed"
+
+ # bug #436456; gdm crashes if /var/lib/gdm subdirs are not owned by gdm:gdm
+ ret=0
+ ebegin "Fixing "${EROOT}"var/lib/gdm ownership"
+ chown gdm:gdm "${EROOT}var/lib/gdm" || ret=1
+ for d in "${EROOT}var/lib/gdm/"{.cache,.config,.local}; do
+ [[ ! -e "${d}" ]] || chown -R gdm:gdm "${d}" || ret=1
+ done
+ eend ${ret}
+
+ readme.gentoo_print_elog
+
+ if [[ -f "/etc/X11/gdm/gdm.conf" ]]; then
+ elog "You had /etc/X11/gdm/gdm.conf which is the old configuration"
+ elog "file. It has been moved to /etc/X11/gdm/gdm-pre-gnome-2.16"
+ mv /etc/X11/gdm/gdm.conf /etc/X11/gdm/gdm-pre-gnome-2.16
+ fi
+
+ if ! systemd_is_booted; then
+ ewarn "${PN} needs Systemd to be *running* for working"
+ ewarn "properly. Please follow the this guide to migrate:"
+ ewarn "http://wiki.gentoo.org/wiki/Systemd"
+ ewarn "https://wiki.sabayon.org/index.php?title=En:HOWTO:_systemd"
+ fi
+}
diff --git a/gnome-base/gdm/gdm-3.8.4.ebuild b/gnome-base/gdm/gdm-3.8.4.ebuild
new file mode 100644
index 00000000..e382c3f1
--- /dev/null
+++ b/gnome-base/gdm/gdm-3.8.4.ebuild
@@ -0,0 +1,264 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gdm/gdm-3.8.0.ebuild,v 1.1 2013/03/28 22:47:35 pacho Exp $
+
+EAPI="5"
+GNOME2_LA_PUNT="yes"
+
+inherit autotools eutils gnome2 pam systemd user
+
+G_PV="2012.09.25"
+G_P="gdm-gentoo-${G_PV}"
+DESCRIPTION="GNOME Display Manager"
+HOMEPAGE="https://live.gnome.org/GDM"
+SRC_URI="${SRC_URI}
+ http://dev.gentoo.org/~tetromino/distfiles/${PN}/${G_P}.tar.xz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+IUSE="accessibility audit +consolekit +fallback fprint +gnome-shell +introspection ipv6 ldap plymouth selinux smartcard systemd tcpd test xinerama"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86"
+
+# NOTE: x11-base/xorg-server dep is for X_SERVER_PATH etc, bug #295686
+# nspr used by smartcard extension
+# dconf, dbus and g-s-d are needed at install time for dconf update
+# libdaemon needed for our fix-daemonize-regression.patch
+COMMON_DEPEND="
+ app-text/iso-codes
+ >=dev-libs/glib-2.35:2
+ >=x11-libs/gtk+-2.91.1:3
+ dev-libs/libdaemon
+ >=x11-libs/pango-1.3
+ dev-libs/nspr
+ >=dev-libs/nss-3.11.1
+ >=gnome-base/dconf-0.11.6
+ >=gnome-base/gnome-settings-daemon-3.1.4
+ gnome-base/gsettings-desktop-schemas
+ >=media-libs/fontconfig-2.5.0
+ >=media-libs/libcanberra-0.4[gtk3]
+ sys-apps/dbus
+ >=sys-apps/accountsservice-0.6.12
+ >=sys-power/upower-0.9
+
+ x11-apps/sessreg
+ x11-base/xorg-server
+ x11-libs/libXi
+ x11-libs/libXau
+ x11-libs/libX11
+ x11-libs/libXdmcp
+ x11-libs/libXext
+ x11-libs/libXft
+ x11-libs/libXrandr
+ >=x11-misc/xdg-utils-1.0.2-r3
+
+ virtual/pam
+ sys-auth/pambase
+
+ accessibility? ( x11-libs/libXevie )
+ audit? ( sys-process/audit )
+ consolekit? ( >=sys-auth/consolekit-0.4.5_p20120320-r2[pam] )
+ introspection? ( >=dev-libs/gobject-introspection-0.9.12 )
+ plymouth? ( sys-boot/plymouth )
+ selinux? ( sys-libs/libselinux )
+ systemd? ( >=sys-apps/systemd-186[pam] )
+ tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
+ xinerama? ( x11-libs/libXinerama )
+"
+# XXX: These deps are from session and desktop files in data/ directory
+# at-spi:1 is needed for at-spi-registryd (spawned by simple-chooser)
+# fprintd is used via dbus by gdm-fingerprint-extension
+# gnome-session-3.6 needed to avoid freezing with orca
+RDEPEND="${COMMON_DEPEND}
+ >=gnome-base/gnome-session-3.6
+ x11-apps/xhost
+ x11-themes/gnome-icon-theme-symbolic
+
+ accessibility? (
+ app-accessibility/gnome-mag
+ app-accessibility/gok
+ app-accessibility/orca
+ gnome-extra/at-spi:1 )
+ consolekit? ( gnome-extra/polkit-gnome )
+ fallback? ( x11-wm/metacity )
+ fprint? (
+ sys-auth/fprintd
+ sys-auth/pam_fprint )
+ gnome-shell? ( >=gnome-base/gnome-shell-3.1.90 )
+ !gnome-shell? ( x11-wm/metacity )
+ smartcard? (
+ app-crypt/coolkey
+ sys-auth/pam_pkcs11 )
+
+ !gnome-extra/fast-user-switch-applet
+"
+DEPEND="${COMMON_DEPEND}
+ app-text/docbook-xml-dtd:4.1.2
+ >=dev-util/intltool-0.40.0
+ >=sys-devel/gettext-0.17
+ virtual/pkgconfig
+ x11-proto/inputproto
+ x11-proto/randrproto
+ test? ( >=dev-libs/check-0.9.4 )
+ xinerama? ( x11-proto/xineramaproto )
+"
+
+pkg_setup() {
+ enewgroup gdm
+ enewgroup video # Just in case it hasn't been created yet
+ enewuser gdm -1 -1 /var/lib/gdm gdm,video
+
+ # For compatibility with certain versions of nvidia-drivers, etc., need to
+ # ensure that gdm user is in the video group
+ if ! egetent group video | grep -q gdm; then
+ # FIXME XXX: is this at all portable, ldap-safe, etc.?
+ # XXX: egetent does not have a 1-argument form, so we can't use it to
+ # get the list of gdm's groups
+ local g=$(groups gdm)
+ elog "Adding user gdm to video group"
+ usermod -G video,${g// /,} gdm || die "Adding user gdm to video group failed"
+ fi
+}
+
+src_prepare() {
+ # GDM grabs VT2 instead of VT7, bug 261339, bug 284053, bug 288852
+ # XXX: We can now pass a hard-coded initial value; temporary
+ # FIXME
+# epatch "${FILESDIR}/${PN}-2.32.0-fix-vt-problems.patch"
+
+ # daemonize so that the boot process can continue, bug #236701
+ epatch "${FILESDIR}/${PN}-3.7.90-fix-daemonize-regression.patch"
+
+ # make custom session work, bug #216984
+ epatch "${FILESDIR}/${PN}-3.2.1.1-custom-session.patch"
+
+ # ssh-agent handling must be done at xinitrc.d, bug #220603
+ epatch "${FILESDIR}/${PN}-2.32.0-xinitrc-ssh-agent.patch"
+
+ # automagic selinux :/
+ epatch "${FILESDIR}/${PN}-3.6.0-selinux-automagic.patch"
+
+ # make gdm-fallback session the default if USE=-gnome-shell
+ if ! use gnome-shell; then
+ sed -e "s:'gdm-shell':'gdm-fallback':" \
+ -i data/00-upstream-settings || die "sed failed"
+ fi
+
+ # don't load accessibility support at runtime when USE=-accessibility
+ use accessibility || epatch "${FILESDIR}/${PN}-3.7.3.1-disable-accessibility.patch"
+
+ mkdir -p "${S}"/m4
+ eautoreconf
+
+ gnome2_src_prepare
+}
+
+src_configure() {
+ # PAM is the only auth scheme supported
+ # even though configure lists shadow and crypt
+ # they don't have any corresponding code.
+ # --with-at-spi-registryd-directory= needs to be passed explicitly because
+ # of https://bugzilla.gnome.org/show_bug.cgi?id=607643#c4
+ G2CONF="${G2CONF}
+ --disable-static
+ --localstatedir=${EPREFIX}/var
+ --with-xdmcp=yes
+ --enable-authentication-scheme=pam
+ --with-pam-prefix=${EPREFIX}/etc
+ --with-default-pam-config=none
+ --with-at-spi-registryd-directory=${EPREFIX}/usr/libexec
+ --with-consolekit-directory=${EPREFIX}/usr/lib/ConsoleKit
+ --with-initial-vt=7
+ $(use_with accessibility xevie)
+ $(use_with audit libaudit)
+ $(use_enable ipv6)
+ $(use_with consolekit console-kit)
+ $(use_with plymouth)
+ $(use_with selinux)
+ $(use_with systemd)
+ $(systemd_with_unitdir)
+ $(use_with tcpd tcp-wrappers)
+ $(use_with xinerama)
+ ITSTOOL=$(type -P true)"
+ gnome2_src_configure
+}
+
+src_install() {
+ gnome2_src_install
+
+ # our x11's scripts point to /usr/bin/gdm
+ dosym /usr/sbin/gdm /usr/bin/gdm
+
+ # log, etc.
+ keepdir /var/log/gdm
+
+ # gdm user's home directory
+ keepdir /var/lib/gdm
+ fowners gdm:gdm /var/lib/gdm
+
+ # install XDG_DATA_DIRS gdm changes
+ echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
+ doenvd 99xdg-gdm
+
+ cd "${WORKDIR}/${G_P}"
+ local LDAP
+ use ldap && LDAP=yes
+ emake GDM_WELCOME="gdm-launch-environment" LDAP=${LDAP} EPREFIX="${EPREFIX}" \
+ SYSTEMD_UNITDIR="$(systemd_get_unitdir)" DESTDIR="${D}" install
+
+ # Sabayon: install our own script to set the gdm session via dbus
+ # AccountServices interface. This is useful for live booting to select
+ # xbmc or fluxbox.
+ exeinto /usr/libexec
+ doexe "${FILESDIR}/gdm-set-session"
+}
+
+pkg_postinst() {
+ local d ret
+
+ gnome2_pkg_postinst
+
+ dbus-launch dconf update || die "'dconf update' failed"
+
+ # bug #436456; gdm crashes if /var/lib/gdm subdirs are not owned by gdm:gdm
+ ret=0
+ ebegin "Fixing ${EROOT}var/lib/gdm ownership"
+ chown gdm:gdm "${EROOT}var/lib/gdm" || ret=1
+ for d in "${EROOT}var/lib/gdm/"{.cache,.config,.local}; do
+ [[ ! -e "${d}" ]] || chown -R gdm:gdm "${d}" || ret=1
+ done
+ eend ${ret}
+
+ elog "To make GDM start at boot, edit /etc/conf.d/xdm"
+ elog "and then execute 'rc-update add xdm default'."
+ elog "If you already have GDM running, you will need to restart it."
+
+ elog
+ elog "GDM ignores most non-localization environment variables. If you"
+ elog "need GDM to launch gnome-session with a particular environment,"
+ elog "you need to use pam_env.so in /etc/pam.d/gdm-welcome; see"
+ elog "the pam_env man page for more information."
+ elog
+
+ if has_version sys-auth/pambase[gnome-keyring]; then
+ elog "For passwordless login to unlock your keyring, you need to set an"
+ elog "empty password on your keyring. Use app-crypt/seahorse for that."
+ else
+ elog "To unlock your keyring on login, install sys-auth/pambase"
+ elog "with USE=gnome-keyring"
+ fi
+
+ if [[ -f "/etc/X11/gdm/gdm.conf" ]]; then
+ elog "You had /etc/X11/gdm/gdm.conf which is the old configuration"
+ elog "file. It has been moved to /etc/X11/gdm/gdm-pre-gnome-2.16"
+ mv /etc/X11/gdm/gdm.conf /etc/X11/gdm/gdm-pre-gnome-2.16
+ fi
+}
+
+pkg_postrm() {
+ gnome2_pkg_postrm
+
+ if rc-config list default | grep -q xdm; then
+ elog "To remove GDM from startup please execute"
+ elog "'rc-update del xdm default'"
+ fi
+}
diff --git a/gnome-base/libgnome/Manifest b/gnome-base/libgnome/Manifest
new file mode 100644
index 00000000..e4b2b518
--- /dev/null
+++ b/gnome-base/libgnome/Manifest
@@ -0,0 +1,3 @@
+DIST gentoo-gdm-theme-r3.tar.bz2 411703 SHA256 c7cbe97757ff93f0ffd42f9d9fb702278a361e830940a03901cda9943f44ba68 SHA512 47485899c698a2f6c3dee540806c0bbdedeab77a31b1f2b191f7f98d0d88a580aeb8dddf16fc33226db0519c21d185112421b5c6e233883ea4f67c844028281a WHIRLPOOL bac9f9ef3e7e88401e605c34deca6e7c31e2d4456af3781252a91f7bc33084af27ecc9e4a74022767b25db23d8f70842a39225c8544f1c02229ad7f7af670d42
+DIST libgnome-2.32.0.tar.bz2 1731179 SHA256 d65e49bf075eb2b3efebec38ceb409693154d18396365765da1a71630bc3dd02
+DIST libgnome-2.32.1.tar.bz2 1776006 SHA256 b2c63916866485793b87398266dd7778548c1734923c272a94d84ee011b6f7a4 SHA512 f94e603255a93e73249e0fd9ed5604d732b44ad46f3cc3065afb46fc6162f6cf29304f49440b5c06303b8e68608b6fd16236076813febb5f1cbdcde4bfc3b3e3 WHIRLPOOL b5d04cbbbf7064fdd6ccf6e140ac89285c585a82a66687fc9ce3ec5d74f50ec52d52416fadfa34bb79946c99188aa3bf6aa0b7d597c8d3d526f6938c74f602a6
diff --git a/gnome-base/libgnome/files/libgnome-2.26.0-branding.patch b/gnome-base/libgnome/files/libgnome-2.26.0-branding.patch
new file mode 100644
index 00000000..2cab351e
--- /dev/null
+++ b/gnome-base/libgnome/files/libgnome-2.26.0-branding.patch
@@ -0,0 +1,12 @@
+diff --exclude-from=/home/dang/.scripts/diffrc -up -ruN libgnome-2.26.0.orig/schemas/desktop_gnome_background.schemas.in.in libgnome-2.26.0/schemas/desktop_gnome_background.schemas.in.in
+--- libgnome-2.26.0.orig/schemas/desktop_gnome_background.schemas.in.in 2009-03-17 10:42:05.000000000 -0400
++++ libgnome-2.26.0/schemas/desktop_gnome_background.schemas.in.in 2009-04-24 14:57:59.000000000 -0400
+@@ -29,7 +29,7 @@
+ <applyto>/desktop/gnome/background/picture_filename</applyto>
+ <owner>gnome</owner>
+ <type>string</type>
+- <default>@datadir@/pixmaps/backgrounds/gnome/background-default.jpg</default>
++ <default>@datadir@/pixmaps/backgrounds/gnome/gentoo/gentoo-emergence.png</default>
+ <locale name="C">
+ <short>Picture Filename</short>
+ <long>File to use for the background image.</long>
diff --git a/gnome-base/libgnome/files/libgnome-2.28.0-menus-have-icons.patch b/gnome-base/libgnome/files/libgnome-2.28.0-menus-have-icons.patch
new file mode 100644
index 00000000..7249696a
--- /dev/null
+++ b/gnome-base/libgnome/files/libgnome-2.28.0-menus-have-icons.patch
@@ -0,0 +1,15 @@
+Upstream changed default to no icons for menus. We don't want that. No one wants
+that.
+
+---
+--- schemas/desktop_gnome_interface.schemas.in.in
++++ schemas/desktop_gnome_interface.schemas.in.in
+@@ -65,7 +65,7 @@
+ <applyto>/desktop/gnome/interface/menus_have_icons</applyto>
+ <owner>gnome</owner>
+ <type>bool</type>
+- <default>false</default>
++ <default>true</default>
+ <locale name="C">
+ <short>Menus Have Icons</short>
+ <long>Whether menus may display an icon next to a menu entry.</long>
diff --git a/gnome-base/libgnome/files/libgnome-2.32-sabayon-background.patch b/gnome-base/libgnome/files/libgnome-2.32-sabayon-background.patch
new file mode 100644
index 00000000..bb18a5a1
--- /dev/null
+++ b/gnome-base/libgnome/files/libgnome-2.32-sabayon-background.patch
@@ -0,0 +1,11 @@
+--- a/schemas/desktop_gnome_background.schemas.in.in
++++ b/schemas/desktop_gnome_background.schemas.in.in
+@@ -29,7 +29,7 @@
+ <applyto>/desktop/gnome/background/picture_filename</applyto>
+ <owner>gnome</owner>
+ <type>string</type>
+- <default>@datadir@/pixmaps/backgrounds/gnome/background-default.jpg</default>
++ <default>@datadir@/backgrounds/kgdm.jpg</default>
+ <locale name="C">
+ <short>Picture Filename</short>
+ <long>File to use for the background image.</long>
diff --git a/gnome-base/libgnome/libgnome-2.32.0.ebuild b/gnome-base/libgnome/libgnome-2.32.0.ebuild
new file mode 100644
index 00000000..a207f4e0
--- /dev/null
+++ b/gnome-base/libgnome/libgnome-2.32.0.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/libgnome/libgnome-2.32.0.ebuild,v 1.2 2010/10/21 21:33:15 eva Exp $
+
+EAPI="3"
+GCONF_DEBUG="yes"
+
+inherit gnome2 eutils
+
+DESCRIPTION="Essential Gnome Libraries"
+HOMEPAGE="http://www.gnome.org/"
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~sparc-solaris ~x86-solaris"
+IUSE="doc esd"
+
+SRC_URI="${SRC_URI}"
+
+RDEPEND=">=gnome-base/gconf-2
+ >=dev-libs/glib-2.16
+ >=gnome-base/gnome-vfs-2.5.3
+ >=gnome-base/libbonobo-2.13
+ >=dev-libs/popt-1.7
+ media-libs/libcanberra
+ esd? (
+ >=media-sound/esound-0.2.26
+ >=media-libs/audiofile-0.2.3 )"
+
+DEPEND="${RDEPEND}
+ >=dev-lang/perl-5
+ >=dev-util/intltool-0.40
+ >=dev-util/pkgconfig-0.17
+ doc? ( >=dev-util/gtk-doc-1 )"
+
+PDEPEND="gnome-base/gvfs"
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ --disable-schemas-install
+ --enable-sound
+ $(use_enable esd)"
+ DOCS="AUTHORS ChangeLog NEWS README"
+}
+
+src_prepare() {
+ gnome2_src_prepare
+
+ # Make sure menus have icons. People don't like change
+ epatch "${FILESDIR}/${PN}-2.28.0-menus-have-icons.patch"
+
+ # Sabayon customization
+ epatch "${FILESDIR}/${PN}-2.32-sabayon-background.patch"
+}
+
diff --git a/gnome-base/libgnome/libgnome-2.32.1-r1.ebuild b/gnome-base/libgnome/libgnome-2.32.1-r1.ebuild
new file mode 100644
index 00000000..2d6cec1c
--- /dev/null
+++ b/gnome-base/libgnome/libgnome-2.32.1-r1.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="4"
+GCONF_DEBUG="yes"
+GNOME2_LA_PUNT="yes"
+GNOME_TARBALL_SUFFIX="bz2"
+
+inherit gnome2 eutils
+
+DESCRIPTION="Essential Gnome Libraries"
+HOMEPAGE="http://library.gnome.org/devel/libgnome/stable/"
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm ia64 ~mips ppc ppc64 sh sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~sparc-solaris ~x86-solaris"
+IUSE="branding doc"
+
+SRC_URI="${SRC_URI}
+ branding? ( mirror://gentoo/gentoo-gdm-theme-r3.tar.bz2 )"
+
+RDEPEND=">=gnome-base/gconf-2
+ >=dev-libs/glib-2.16:2
+ >=gnome-base/gnome-vfs-2.5.3
+ >=gnome-base/libbonobo-2.13
+ >=dev-libs/popt-1.7
+ media-libs/libcanberra"
+
+DEPEND="${RDEPEND}
+ >=dev-lang/perl-5
+ >=dev-util/intltool-0.40
+ virtual/pkgconfig
+ doc? ( >=dev-util/gtk-doc-1 )"
+
+PDEPEND="gnome-base/gvfs"
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ --disable-static
+ --disable-schemas-install
+ --enable-canberra
+ --disable-esd"
+ DOCS="AUTHORS ChangeLog NEWS README"
+}
+
+src_prepare() {
+ gnome2_src_prepare
+
+ # Sabayon customization
+ epatch "${FILESDIR}/${PN}-2.32-sabayon-background.patch"
+
+ # Make sure menus have icons. People don't like change
+ epatch "${FILESDIR}/${PN}-2.28.0-menus-have-icons.patch"
+
+ use branding && epatch "${FILESDIR}"/${PN}-2.26.0-branding.patch
+
+ # Default to Adwaita theme over Clearlooks to proper gtk3 support
+ sed -i -e 's/Clearlooks/Adwaita/' schemas/desktop_gnome_interface.schemas.in.in || die
+
+ # Drop DEPRECATED flags
+ sed -i -e 's:-D[A-Z_]*DISABLE_DEPRECATED:$(NULL):g' libgnome/Makefile.* || die
+}
+
+src_install() {
+ gnome2_src_install
+
+ if use branding; then
+ # Add gentoo backgrounds
+ dodir /usr/share/pixmaps/backgrounds/gnome/gentoo
+ insinto /usr/share/pixmaps/backgrounds/gnome/gentoo
+ doins "${WORKDIR}"/gentoo-emergence/gentoo-emergence.png
+ doins "${WORKDIR}"/gentoo-cow/gentoo-cow-alpha.png
+ fi
+}
diff --git a/gnome-base/libgnome/libgnome-2.32.1.ebuild b/gnome-base/libgnome/libgnome-2.32.1.ebuild
new file mode 100644
index 00000000..7df916e0
--- /dev/null
+++ b/gnome-base/libgnome/libgnome-2.32.1.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/libgnome/libgnome-2.32.1.ebuild,v 1.6 2011/03/22 19:16:21 ranger Exp $
+
+EAPI="3"
+GCONF_DEBUG="yes"
+
+inherit gnome2 eutils
+
+DESCRIPTION="Essential Gnome Libraries"
+HOMEPAGE="http://library.gnome.org/devel/libgnome/stable/"
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm ia64 ~mips ppc ppc64 sh sparc x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~sparc-solaris ~x86-solaris"
+IUSE="doc esd"
+
+RDEPEND=">=gnome-base/gconf-2
+ >=dev-libs/glib-2.16
+ >=gnome-base/gnome-vfs-2.5.3
+ >=gnome-base/libbonobo-2.13
+ >=dev-libs/popt-1.7
+ media-libs/libcanberra
+ esd? (
+ >=media-sound/esound-0.2.26
+ >=media-libs/audiofile-0.2.3 )"
+
+DEPEND="${RDEPEND}
+ >=dev-lang/perl-5
+ >=dev-util/intltool-0.40
+ >=dev-util/pkgconfig-0.17
+ doc? ( >=dev-util/gtk-doc-1 )"
+
+PDEPEND="gnome-base/gvfs"
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ --disable-schemas-install
+ --enable-canberra
+ $(use_enable esd)"
+ DOCS="AUTHORS ChangeLog NEWS README"
+}
+
+src_prepare() {
+ gnome2_src_prepare
+
+ # Make sure menus have icons. People don't like change
+ epatch "${FILESDIR}/${PN}-2.28.0-menus-have-icons.patch"
+
+ # Sabayon customization
+ epatch "${FILESDIR}/${PN}-2.32-sabayon-background.patch"
+}
+
+src_install() {
+ gnome2_src_install
+
+ if use branding; then
+ # Add gentoo backgrounds
+ dodir /usr/share/pixmaps/backgrounds/gnome/gentoo || die "dodir failed"
+ insinto /usr/share/pixmaps/backgrounds/gnome/gentoo
+ doins "${WORKDIR}"/gentoo-emergence/gentoo-emergence.png || die "doins 1 failed"
+ doins "${WORKDIR}"/gentoo-cow/gentoo-cow-alpha.png || die "doins 2 failed"
+ fi
+}
diff --git a/gnome-base/libgnome/metadata.xml b/gnome-base/libgnome/metadata.xml
new file mode 100644
index 00000000..da6fd63d
--- /dev/null
+++ b/gnome-base/libgnome/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>gnome</herd>
+</pkgmetadata>
diff --git a/gnome-base/nautilus/Manifest b/gnome-base/nautilus/Manifest
new file mode 100644
index 00000000..8ca091c3
--- /dev/null
+++ b/gnome-base/nautilus/Manifest
@@ -0,0 +1,3 @@
+DIST nautilus-3.10.1.tar.xz 3334432 SHA256 f6a532a170907d116e8ce55847c5c6cd4e03819f5f818087554f2ec2556fc727 SHA512 a201d661104025b4b5ef4d0aa8ba7d083bb60e164c948e9932a78967f4046cc6e3afe7dcd5d20cfb99f500c4561555022cce4c39f2acc72370a515141798e90c WHIRLPOOL f9ab9305ea528233f1e318b2b96323d4568ac2c7880921a4700b01fc7510bd447bcfb90091655dd02f850cf508211d8abbaea5321c16ea62d2876175726900f8
+DIST nautilus-3.6.3.tar.xz 4959376 SHA256 d272027754ce8591959ae854fc6b5f43eee4af31e4eecf06de727acebe0ee46c SHA512 f90ed3253889764dc3799e53555a9d6e84876b5d5ea020ba34b643df460f703acbba85bba0cf468ea7d614ec954b49304e46a27d46459b4aaa7e53ecd9467895 WHIRLPOOL afe1f70635899aaa3e7b8df575cef9f810c84acd1c63c5a1359584274c689872b1fdfc5e31a6964a419ee0e85c2cacce357a2098052db24d46a980363fd7c923
+DIST nautilus-3.8.2.tar.xz 5024048 SHA256 dbddfdaac52d077d46d48a2f8dbecf6d13788d8f6b5fc9aa70826a24681d8a75 SHA512 bca8d37e43863c2eca79f060eb380f4c81f480811348e3c0c2f641c99162cc9043599b14ab405713b9f2063214727918f8818a7ea97d4a327bbb245825a56cc2 WHIRLPOOL f92b8b82370d72d853295a8c55f9735b71491efe30b61fad0b9db0657f1cec7bfa26f38f995a21e01f076df984c7e0b27d71a7127ab1b3aaf206069d4c7acc35
diff --git a/gnome-base/nautilus/files/nautilus-3.0.2-fix-autostart-live-boot.patch b/gnome-base/nautilus/files/nautilus-3.0.2-fix-autostart-live-boot.patch
new file mode 100644
index 00000000..5b0454be
--- /dev/null
+++ b/gnome-base/nautilus/files/nautilus-3.0.2-fix-autostart-live-boot.patch
@@ -0,0 +1,8 @@
+diff -Nurp nautilus-3.0.2.orig/data/nautilus-autostart.desktop.in nautilus-3.0.2/data/nautilus-autostart.desktop.in
+--- nautilus-3.0.2.orig/data/nautilus-autostart.desktop.in 2011-05-24 20:46:10.000000000 +0200
++++ nautilus-3.0.2/data/nautilus-autostart.desktop.in 2011-09-24 14:17:30.315989535 +0200
+@@ -3,3 +3,4 @@ Type=Application
+ Name=Files
+ Exec=nautilus -n
+ AutostartCondition=GSettings org.gnome.desktop.background show-desktop-icons
++X-GNOME-Autostart-Phase=Desktop
diff --git a/gnome-base/nautilus/files/nautilus-3.2.1-startup-notify.patch b/gnome-base/nautilus/files/nautilus-3.2.1-startup-notify.patch
new file mode 100644
index 00000000..dd5ea10a
--- /dev/null
+++ b/gnome-base/nautilus/files/nautilus-3.2.1-startup-notify.patch
@@ -0,0 +1,12 @@
+Sabayon bug 2797, reported by micia.
+--- a/data/nautilus.desktop.in.in
++++ b/data/nautilus.desktop.in.in
+@@ -91,7 +91,7 @@
+ Icon=system-file-manager
+ Terminal=false
+ Type=Application
+-StartupNotify=true
++StartupNotify=false
+ OnlyShowIn=GNOME;Unity;
+ Categories=GNOME;GTK;Utility;Core;
+ MimeType=inode/directory;application/x-gnome-saved-search;
diff --git a/gnome-base/nautilus/files/nautilus-3.5.91-delete.patch b/gnome-base/nautilus/files/nautilus-3.5.91-delete.patch
new file mode 100644
index 00000000..072b34ea
--- /dev/null
+++ b/gnome-base/nautilus/files/nautilus-3.5.91-delete.patch
@@ -0,0 +1,44 @@
+From 92af7beb790ad9181e5a6a89ac52f177354536f2 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Thu, 8 Dec 2011 18:39:28 -0500
+Subject: [PATCH] Delete key should delete files
+
+Make the Delete key delete files like in nautilus-2.x and every other
+file manager on the planet. Note: the nautilus-3 Ctrl+Delete shortcut
+will also continue to work.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=647048
+https://bugs.gentoo.org/show_bug.cgi?id=393663
+---
+ src/nautilus-view.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/nautilus-view.c b/src/nautilus-view.c
+index f51d916..0a50994 100644
+--- a/src/nautilus-view.c
++++ b/src/nautilus-view.c
+@@ -7237,7 +7237,7 @@ static const GtkActionEntry directory_view_entries[] = {
+ /* tooltip */ NULL,
+ G_CALLBACK (action_rename_select_all_callback) },
+ /* name, stock id */ { NAUTILUS_ACTION_TRASH, NULL,
+- /* label, accelerator */ N_("Mo_ve to Trash"), "<control>Delete",
++ /* label, accelerator */ N_("Mo_ve to Trash"), "Delete",
+ /* tooltip */ N_("Move each selected item to the Trash"),
+ G_CALLBACK (action_trash_callback) },
+ /* name, stock id */ { NAUTILUS_ACTION_DELETE, NULL,
+@@ -9895,8 +9895,12 @@ nautilus_view_class_init (NautilusViewClass *klass)
+ binding_set = gtk_binding_set_by_class (klass);
+ gtk_binding_entry_add_signal (binding_set, GDK_KEY_Delete, GDK_CONTROL_MASK,
+ "trash", 0);
++ gtk_binding_entry_add_signal (binding_set, GDK_KEY_Delete, 0,
++ "trash", 0);
+ gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, GDK_CONTROL_MASK,
+ "trash", 0);
++ gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, 0,
++ "trash", 0);
+ gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, GDK_SHIFT_MASK,
+ "delete", 0);
+ }
+--
+1.7.12
+
diff --git a/gnome-base/nautilus/metadata.xml b/gnome-base/nautilus/metadata.xml
new file mode 100644
index 00000000..e13a63fe
--- /dev/null
+++ b/gnome-base/nautilus/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>gnome</herd>
+<use>
+ <flag name="introspection">Use <pkg>dev-libs/gobject-introspection</pkg> for
+ introspection</flag>
+ <flag name="sendto">Enable the nautilus-sendto extension to send files to
+ various locations/devices</flag>
+</use>
+</pkgmetadata>
diff --git a/gnome-base/nautilus/nautilus-3.10.1.ebuild b/gnome-base/nautilus/nautilus-3.10.1.ebuild
new file mode 100644
index 00000000..709b774d
--- /dev/null
+++ b/gnome-base/nautilus/nautilus-3.10.1.ebuild
@@ -0,0 +1,133 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="5"
+GCONF_DEBUG="no"
+GNOME2_LA_PUNT="yes" # Needed with USE 'sendto'
+
+inherit eutils gnome2 readme.gentoo virtualx
+
+DESCRIPTION="A file manager for the GNOME desktop"
+HOMEPAGE="http://live.gnome.org/Nautilus"
+
+LICENSE="GPL-2+ LGPL-2+ FDL-1.1"
+SLOT="0"
+
+# profiling?
+IUSE="debug exif gnome +introspection packagekit +previewer sendto tracker xmp"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-interix ~amd64-linux ~arm-linux ~x86-linux"
+
+# FIXME: tests fails under Xvfb, but pass when building manually
+# "FAIL: check failed in nautilus-file.c, line 8307"
+RESTRICT="test"
+
+# FIXME: selinux support is automagic
+# Require {glib,gdbus-codegen}-2.30.0 due to GDBus API changes between 2.29.92
+# and 2.30.0
+COMMON_DEPEND="
+ >=dev-libs/glib-2.35.3:2
+ >=x11-libs/pango-1.28.3
+ >=x11-libs/gtk+-3.9.11:3[introspection?]
+ >=dev-libs/libxml2-2.7.8:2
+ >=gnome-base/gnome-desktop-3:3=
+
+ gnome-base/dconf
+ >=gnome-base/gsettings-desktop-schemas-3.8.0
+ >=x11-libs/libnotify-0.7:=
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXrender
+
+ exif? ( >=media-libs/libexif-0.6.20 )
+ introspection? ( >=dev-libs/gobject-introspection-0.6.4 )
+ tracker? ( >=app-misc/tracker-0.16:= )
+ xmp? ( >=media-libs/exempi-2.1.0 )
+"
+DEPEND="${COMMON_DEPEND}
+ >=dev-lang/perl-5
+ >=dev-util/gdbus-codegen-2.33
+ >=dev-util/gtk-doc-am-1.4
+ >=dev-util/intltool-0.40.1
+ sys-devel/gettext
+ virtual/pkgconfig
+ x11-proto/xproto
+"
+RDEPEND="${COMMON_DEPEND}
+ packagekit? ( app-admin/packagekit-base )
+ sendto? ( !<gnome-extra/nautilus-sendto-3.0.1 )
+"
+
+# For eautoreconf
+# gnome-base/gnome-common
+# dev-util/gtk-doc-am"
+
+PDEPEND="
+ gnome? (
+ >=x11-themes/gnome-icon-theme-1.1.91
+ x11-themes/gnome-icon-theme-symbolic )
+ tracker? ( >=gnome-extra/nautilus-tracker-tags-0.12 )
+ previewer? ( >=gnome-extra/sushi-0.1.9 )
+ sendto? ( >=gnome-extra/nautilus-sendto-3.0.1 )
+ >=gnome-base/gvfs-1.14[gtk]
+"
+# Need gvfs[gtk] for recent:/// support
+
+src_prepare() {
+ if use previewer; then
+ DOC_CONTENTS="nautilus uses gnome-extra/sushi to preview media files.
+ To activate the previewer, select a file and press space; to
+ close the previewer, press space again."
+ fi
+
+ # Restore the nautilus-2.x Delete shortcut (Ctrl+Delete will still work);
+ # bug #393663
+ epatch "${FILESDIR}/${PN}-3.5.91-delete.patch"
+
+ # Sabayon, fix icons setup during Live system autostart (first boot only)
+ epatch "${FILESDIR}/${PN}-3.0.2-fix-autostart-live-boot.patch"
+ # Sabayon bug #2797
+ epatch "${FILESDIR}/${PN}-3.2.1-startup-notify.patch"
+
+ # Remove -D*DEPRECATED flags. Don't leave this for eclass! (bug #448822)
+ sed -e 's/DISABLE_DEPRECATED_CFLAGS=.*/DISABLE_DEPRECATED_CFLAGS=/' \
+ -i configure || die "sed failed"
+ gnome2_src_prepare
+}
+
+src_configure() {
+ DOCS="AUTHORS HACKING MAINTAINERS NEWS README THANKS"
+ gnome2_src_configure \
+ --disable-profiling \
+ --disable-update-mimedb \
+ $(use_enable debug) \
+ $(use_enable exif libexif) \
+ $(use_enable introspection) \
+ $(use_enable packagekit) \
+ $(use_enable sendto nst-extension) \
+ $(use_enable tracker) \
+ $(use_enable xmp)
+}
+
+src_test() {
+ gnome2_environment_reset
+ unset DBUS_SESSION_BUS_ADDRESS
+ export GSETTINGS_BACKEND="memory"
+ Xemake check
+ unset GSETTINGS_BACKEND
+}
+
+src_install() {
+ use previewer && readme.gentoo_create_doc
+ gnome2_src_install
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+
+ if use previewer; then
+ readme.gentoo_print_elog
+ else
+ elog "To preview media files, emerge nautilus with USE=previewer"
+ fi
+}
diff --git a/gnome-base/nautilus/nautilus-3.6.3.ebuild b/gnome-base/nautilus/nautilus-3.6.3.ebuild
new file mode 100644
index 00000000..dd0763bd
--- /dev/null
+++ b/gnome-base/nautilus/nautilus-3.6.3.ebuild
@@ -0,0 +1,117 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/nautilus/nautilus-3.6.3.ebuild,v 1.3 2012/12/27 17:12:58 tetromino Exp $
+
+EAPI="5"
+GCONF_DEBUG="no"
+GNOME2_LA_PUNT="yes"
+
+inherit eutils gnome2 virtualx
+
+DESCRIPTION="A file manager for the GNOME desktop"
+HOMEPAGE="http://live.gnome.org/Nautilus"
+
+LICENSE="GPL-2+ LGPL-2+ FDL-1.1"
+SLOT="0"
+# profiling?
+IUSE="debug exif gnome +introspection packagekit +previewer sendto tracker xmp"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sh ~x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux"
+
+# FIXME: tests fails under Xvfb, but pass when building manually
+# "FAIL: check failed in nautilus-file.c, line 8307"
+RESTRICT="test"
+
+# FIXME: selinux support is automagic
+# Require {glib,gdbus-codegen}-2.30.0 due to GDBus API changes between 2.29.92
+# and 2.30.0
+COMMON_DEPEND="
+ >=dev-libs/glib-2.33.13:2
+ >=x11-libs/pango-1.28.3
+ >=x11-libs/gtk+-3.5.12:3[introspection?]
+ >=dev-libs/libxml2-2.7.8:2
+ >=gnome-base/gnome-desktop-3:3=
+
+ gnome-base/dconf
+ gnome-base/gsettings-desktop-schemas
+ >=x11-libs/libnotify-0.7:=
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXrender
+
+ exif? ( >=media-libs/libexif-0.6.20 )
+ introspection? ( >=dev-libs/gobject-introspection-0.6.4 )
+ tracker? ( >=app-misc/tracker-0.14:= )
+ xmp? ( >=media-libs/exempi-2.1.0 )"
+DEPEND="${COMMON_DEPEND}
+ >=dev-lang/perl-5
+ >=dev-util/gdbus-codegen-2.33
+ >=dev-util/gtk-doc-am-1.4
+ >=dev-util/intltool-0.40.1
+ sys-devel/gettext
+ virtual/pkgconfig
+ x11-proto/xproto"
+RDEPEND="${COMMON_DEPEND}
+ packagekit? ( app-admin/packagekit-base )
+ sendto? ( !<gnome-extra/nautilus-sendto-3.0.1 )"
+# For eautoreconf
+# gnome-base/gnome-common
+# dev-util/gtk-doc-am"
+PDEPEND="gnome? (
+ >=x11-themes/gnome-icon-theme-1.1.91
+ x11-themes/gnome-icon-theme-symbolic )
+ tracker? ( >=gnome-extra/nautilus-tracker-tags-0.12 )
+ previewer? ( >=gnome-extra/sushi-0.1.9 )
+ sendto? ( >=gnome-extra/nautilus-sendto-3.0.1 )
+ >=gnome-base/gvfs-1.14[gtk]"
+# Need gvfs[gtk] for recent:/// support
+
+src_prepare() {
+ # Restore the nautilus-2.x Delete shortcut (Ctrl+Delete will still work);
+ # bug #393663
+ epatch "${FILESDIR}/${PN}-3.5.91-delete.patch"
+
+ # Sabayon, fix icons setup during Live system autostart (first boot only)
+ epatch "${FILESDIR}/${PN}-3.0.2-fix-autostart-live-boot.patch"
+ # Sabayon bug #2797
+ epatch "${FILESDIR}/${PN}-3.2.1-startup-notify.patch"
+
+ # Remove -D*DEPRECATED flags. Don't leave this for eclass! (bug #448822)
+ sed -e 's/DISABLE_DEPRECATED_CFLAGS=.*/DISABLE_DEPRECATED_CFLAGS=/' \
+ -i configure || die "sed failed"
+ gnome2_src_prepare
+}
+
+src_configure() {
+ DOCS="AUTHORS ChangeLog* HACKING MAINTAINERS NEWS README THANKS"
+ G2CONF="${G2CONF}
+ --disable-profiling
+ --disable-update-mimedb
+ $(use_enable debug)
+ $(use_enable exif libexif)
+ $(use_enable introspection)
+ $(use_enable packagekit)
+ $(use_enable sendto nst-extension)
+ $(use_enable tracker)
+ $(use_enable xmp)"
+ gnome2_src_configure
+}
+
+src_test() {
+ gnome2_environment_reset
+ unset DBUS_SESSION_BUS_ADDRESS
+ export GSETTINGS_BACKEND="memory"
+ Xemake check
+ unset GSETTINGS_BACKEND
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+
+ if use previewer; then
+ elog "nautilus uses gnome-extra/sushi to preview media files."
+ elog "To activate the previewer, select a file and press space; to"
+ elog "close the previewer, press space again."
+ else
+ elog "To preview media files, emerge nautilus with USE=previewer"
+ fi
+}
diff --git a/gnome-base/nautilus/nautilus-3.8.2.ebuild b/gnome-base/nautilus/nautilus-3.8.2.ebuild
new file mode 100644
index 00000000..48904ed4
--- /dev/null
+++ b/gnome-base/nautilus/nautilus-3.8.2.ebuild
@@ -0,0 +1,131 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/nautilus/nautilus-3.8.1.ebuild,v 1.1 2013/04/20 12:08:17 pacho Exp $
+
+EAPI="5"
+GCONF_DEBUG="no"
+GNOME2_LA_PUNT="yes" # Needed with USE 'sendto'
+
+inherit eutils gnome2 readme.gentoo virtualx
+
+DESCRIPTION="A file manager for the GNOME desktop"
+HOMEPAGE="http://live.gnome.org/Nautilus"
+
+LICENSE="GPL-2+ LGPL-2+ FDL-1.1"
+SLOT="0"
+# profiling?
+IUSE="debug exif gnome +introspection packagekit +previewer sendto tracker xmp"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-interix ~amd64-linux ~arm-linux ~x86-linux"
+
+# FIXME: tests fails under Xvfb, but pass when building manually
+# "FAIL: check failed in nautilus-file.c, line 8307"
+RESTRICT="test"
+
+# FIXME: selinux support is automagic
+# Require {glib,gdbus-codegen}-2.30.0 due to GDBus API changes between 2.29.92
+# and 2.30.0
+COMMON_DEPEND="
+ >=dev-libs/glib-2.35.3:2
+ >=x11-libs/pango-1.28.3
+ >=x11-libs/gtk+-3.7.7:3[introspection?]
+ >=dev-libs/libxml2-2.7.8:2
+ >=gnome-base/gnome-desktop-3:3=
+
+ gnome-base/dconf
+ >=gnome-base/gsettings-desktop-schemas-3.8.0
+ >=x11-libs/libnotify-0.7:=
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXrender
+
+ exif? ( >=media-libs/libexif-0.6.20 )
+ introspection? ( >=dev-libs/gobject-introspection-0.6.4 )
+ tracker? ( >=app-misc/tracker-0.16:= )
+ xmp? ( >=media-libs/exempi-2.1.0 )
+"
+DEPEND="${COMMON_DEPEND}
+ >=dev-lang/perl-5
+ >=dev-util/gdbus-codegen-2.33
+ >=dev-util/gtk-doc-am-1.4
+ >=dev-util/intltool-0.40.1
+ sys-devel/gettext
+ virtual/pkgconfig
+ x11-proto/xproto
+"
+RDEPEND="${COMMON_DEPEND}
+ packagekit? ( app-admin/packagekit-base )
+ sendto? ( !<gnome-extra/nautilus-sendto-3.0.1 )
+"
+
+# For eautoreconf
+# gnome-base/gnome-common
+# dev-util/gtk-doc-am"
+
+PDEPEND="
+ gnome? (
+ >=x11-themes/gnome-icon-theme-1.1.91
+ x11-themes/gnome-icon-theme-symbolic )
+ tracker? ( >=gnome-extra/nautilus-tracker-tags-0.12 )
+ previewer? ( >=gnome-extra/sushi-0.1.9 )
+ sendto? ( >=gnome-extra/nautilus-sendto-3.0.1 )
+ >=gnome-base/gvfs-1.14[gtk]"
+# Need gvfs[gtk] for recent:/// support
+
+src_prepare() {
+ if use previewer; then
+ DOC_CONTENTS="nautilus uses gnome-extra/sushi to preview media files.
+ To activate the previewer, select a file and press space; to
+ close the previewer, press space again."
+ fi
+
+ # Restore the nautilus-2.x Delete shortcut (Ctrl+Delete will still work);
+ # bug #393663
+ epatch "${FILESDIR}/${PN}-3.5.91-delete.patch"
+
+ # Sabayon, fix icons setup during Live system autostart (first boot only)
+ epatch "${FILESDIR}/${PN}-3.0.2-fix-autostart-live-boot.patch"
+ # Sabayon bug #2797
+ epatch "${FILESDIR}/${PN}-3.2.1-startup-notify.patch"
+
+ # Remove -D*DEPRECATED flags. Don't leave this for eclass! (bug #448822)
+ sed -e 's/DISABLE_DEPRECATED_CFLAGS=.*/DISABLE_DEPRECATED_CFLAGS=/' \
+ -i configure || die "sed failed"
+ gnome2_src_prepare
+}
+
+src_configure() {
+ DOCS="AUTHORS ChangeLog* HACKING MAINTAINERS NEWS README THANKS"
+ gnome2_src_configure \
+ --disable-profiling \
+ --disable-update-mimedb \
+ $(use_enable debug) \
+ $(use_enable exif libexif) \
+ $(use_enable introspection) \
+ $(use_enable packagekit) \
+ $(use_enable sendto nst-extension) \
+ $(use_enable tracker) \
+ $(use_enable xmp)
+}
+
+src_test() {
+ gnome2_environment_reset
+ unset DBUS_SESSION_BUS_ADDRESS
+ export GSETTINGS_BACKEND="memory"
+ Xemake check
+ unset GSETTINGS_BACKEND
+}
+
+src_install() {
+ use previewer && readme.gentoo_create_doc
+ gnome2_src_install
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+
+ if use previewer; then
+ readme.gentoo_print_elog
+ else
+ elog "To preview media files, emerge nautilus with USE=previewer"
+ fi
+}
diff --git a/gnome-extra/cinnamon/Manifest b/gnome-extra/cinnamon/Manifest
new file mode 100644
index 00000000..940413dc
--- /dev/null
+++ b/gnome-extra/cinnamon/Manifest
@@ -0,0 +1,2 @@
+DIST cinnamon-2.0.12.tar.gz 2605863 SHA256 5c0f7142cafae9906d2653f38086f22704fcf021b486a9525b0f62b9a654d07b SHA512 f4e180f48e7c71ef75b86fa385f7c9fb20401541759e76867d4edc89a1bc4ced8fb961729ade2b4ce7c34d0972d103a120df4714cdb24333a07fcc411bf9936e WHIRLPOOL 1e4a4f082f40aeb6eaa6cd54dc983f1ed03b31f22a9f9ac19fd92c18afd378cd9dd4150ea9e6726255c60ebaedb50a5e117ff008196af538fd0a0420c214fd17
+DIST gnome-3.8.patch 138356 SHA256 840cebcefc183076f9e9208421354e5e9cbccec62824c788b17cb564c2d2519a SHA512 1fd95720a6398607330ff445bd55f1f898dac03dda542d7a7246f81127e55793b02a4df4cc8c759a5f6c11dd7e5a6609bf0bfc05266a87e65034eab0f94077f2 WHIRLPOOL 84899979f7a4c1c6f7cb4f3d356e45e3b49f798605e48c768c3f43a90b828b3f1e9051e9e176bc099c9051d8fb4107e7d127cef27dc4797189b7c9479edf9bd5
diff --git a/gnome-extra/cinnamon/cinnamon-2.0.12.ebuild b/gnome-extra/cinnamon/cinnamon-2.0.12.ebuild
new file mode 100644
index 00000000..73f3e892
--- /dev/null
+++ b/gnome-extra/cinnamon/cinnamon-2.0.12.ebuild
@@ -0,0 +1,213 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="5"
+GCONF_DEBUG="no"
+GNOME2_LA_PUNT="yes"
+PYTHON_COMPAT=( python{2_6,2_7} )
+PYTHON_REQ_USE="xml"
+
+inherit autotools eutils gnome2 multilib pax-utils python-single-r1
+
+DESCRIPTION="A fork of GNOME Shell with layout similar to GNOME 2"
+HOMEPAGE="http://cinnamon.linuxmint.com/"
+
+MY_PV="${PV/_p/-UP}"
+MY_P="${PN}-${MY_PV}"
+
+SRC_URI="https://github.com/linuxmint/Cinnamon/archive/${MY_PV}.tar.gz -> ${MY_P}.tar.gz
+ http://dev.gentoo.org/~pacho/gnome/cinnamon-1.8/gnome-3.8.patch"
+
+LICENSE="GPL-2+"
+SLOT="0"
+IUSE="+l10n"
+KEYWORDS="~amd64 ~x86"
+
+COMMON_DEPEND="
+ >=dev-libs/glib-2.29.10:2
+ >=dev-libs/cjs-1.9.0
+ >=dev-libs/gobject-introspection-0.10.1
+ x11-libs/gdk-pixbuf:2[introspection]
+ >=x11-libs/gtk+-3.0.0:3[introspection]
+ >=media-libs/clutter-1.7.5:1.0[introspection]
+ app-misc/ca-certificates
+ >=dev-libs/json-glib-0.13.2
+ >=gnome-extra/cinnamon-desktop-2.0.3
+ >=gnome-base/gsettings-desktop-schemas-2.91.91
+ >=media-libs/gstreamer-0.10.16:0.10
+ >=media-libs/gst-plugins-base-0.10.16:0.10
+ net-libs/libsoup:2.4[introspection]
+ >=sys-auth/polkit-0.100[introspection]
+ >=x11-wm/muffin-1.9.1[introspection]
+
+ dev-libs/dbus-glib
+ dev-libs/libxml2:2
+ x11-libs/pango[introspection]
+ >=dev-libs/libcroco-0.6.2:0.6
+
+ gnome-base/gconf:2[introspection]
+ gnome-base/librsvg
+ media-libs/libcanberra
+ media-sound/pulseaudio
+
+ >=x11-libs/startup-notification-0.11
+ x11-libs/libX11
+ >=x11-libs/libXfixes-5.0
+ x11-apps/mesa-progs
+
+ ${PYTHON_DEPS}
+
+ >=net-misc/networkmanager-0.9
+ >=net-wireless/cinnamon-bluetooth-3.8.2
+"
+RDEPEND="${COMMON_DEPEND}
+ >=gnome-base/dconf-0.4.1
+ >=gnome-base/libgnomekbd-2.91.4[introspection]
+ sys-power/upower[introspection]
+
+ >=gnome-extra/cinnamon-control-center-2.0.7
+ >=gnome-extra/cinnamon-screensaver-2.0.3
+ >=gnome-extra/cinnamon-session-2.0.5
+ >=gnome-extra/cinnamon-settings-daemon-2.0.7
+
+ >=sys-apps/accountsservice-0.6.14[introspection]
+
+ >=app-accessibility/caribou-0.3
+
+ x11-misc/xdg-utils
+
+ dev-python/dbus-python[${PYTHON_USEDEP}]
+ dev-python/gconf-python:2
+ virtual/python-imaging
+ dev-python/lxml
+
+ dev-python/pypam
+ dev-python/pexpect
+
+ x11-themes/gnome-icon-theme-symbolic
+
+ dev-python/pygobject:3[${PYTHON_USEDEP}]
+
+ gnome-extra/nemo
+"
+DEPEND="${COMMON_DEPEND}
+ >=sys-devel/gettext-0.17
+ virtual/pkgconfig
+ >=dev-util/intltool-0.40
+ gnome-base/gnome-common
+ !!=dev-lang/spidermonkey-1.8.2*
+"
+PDEPEND="l10n? ( >=gnome-extra/cinnamon-translations-2.0.2 )"
+
+S="${WORKDIR}/Cinnamon-${PV}"
+
+pkg_setup() {
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ epatch "${FILESDIR}/background.patch"
+ epatch "${FILESDIR}/screensaver.patch"
+ epatch "${FILESDIR}/remove_GC.patch"
+ epatch "${FILESDIR}/keyboard_applet-2.patch"
+ epatch "${FILESDIR}/input_keybindings.patch"
+ epatch "${FILESDIR}/lspci.patch"
+
+ # Use Sabayon branding
+ cp "${FILESDIR}"/start-here.png data/theme/menu.png || die "Could not copy image."
+
+ # Gentoo uses /usr/$(get_libdir), not /usr/lib even for python
+ sed -e "s:/usr/lib/:/usr/$(get_libdir)/:" \
+ -e 's:"/usr/lib":"/usr/'"$(get_libdir)"'":' \
+ -i files/usr/bin/cinnamon-menu-editor \
+ -i files/usr/bin/cinnamon-settings \
+ -i files/usr/bin/cinnamon-desktop-editor \
+ -i files/usr/bin/cinnamon-json-makepot \
+ -i files/usr/bin/cinnamon-screensaver-lock-dialog \
+ -i files/usr/bin/cinnamon-settings-users \
+ -i files/usr/bin/cinnamon-looking-glass \
+ -i files/usr/lib/cinnamon-menu-editor/cme/MainWindow.py \
+ -i files/usr/lib/cinnamon-menu-editor/cme/config.py \
+ -i files/usr/lib/cinnamon-settings/modules/cs_backgrounds.py \
+ -i files/usr/lib/cinnamon-settings/modules/cs_info.py \
+ -i files/usr/lib/cinnamon-settings/data/spices/applet-detail.html \
+ -i files/usr/lib/cinnamon-settings/cinnamon-settings.py \
+ -i files/usr/lib/cinnamon-settings/bin/XletSettings.py \
+ -i files/usr/lib/cinnamon-settings/bin/Spices.py \
+ -i files/usr/lib/cinnamon-settings/bin/ExtensionCore.py \
+ -i files/usr/lib/cinnamon-settings/bin/capi.py \
+ -i files/usr/lib/cinnamon-desktop-editor/cinnamon-desktop-editor.py \
+ -i files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.py \
+ -i files/usr/lib/cinnamon-settings-users/cinnamon-settings-users.py \
+ || die "sed 2 failed"
+ if [[ "$(get_libdir)" != lib ]]; then
+ mv files/usr/lib "files/usr/$(get_libdir)" || die "mv failed"
+ fi
+
+ eautoreconf
+ gnome2_src_prepare
+}
+
+src_configure() {
+ # Don't error out on warnings
+ gnome2_src_configure \
+ --disable-jhbuild-wrapper-script \
+ --with-ca-certificates="${EPREFIX}/etc/ssl/certs/ca-certificates.crt" \
+ BROWSER_PLUGIN_DIR="${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins"
+}
+
+src_install() {
+ gnome2_src_install
+ python_optimize "${ED}usr/$(get_libdir)/cinnamon-"{settings,menu-editor}
+ # Fix broken shebangs
+ sed -e "s%#!.*python%#!${PYTHON}%" \
+ -i "${ED}usr/bin/cinnamon-"{launcher,menu-editor,settings} \
+ -i "${ED}usr/$(get_libdir)/cinnamon-settings/cinnamon-settings.py" || die
+
+ insinto /usr/share/applications
+ doins "${FILESDIR}/cinnamon-screensaver.desktop"
+ doins "${FILESDIR}/cinnamon2d-screensaver.desktop"
+
+ # Required for gnome-shell on hardened/PaX, bug #398941
+ pax-mark mr "${ED}usr/bin/cinnamon"
+
+ # Avoid collisions with cinnamon-screensaver, upstream bug
+ rm -f "${ED}usr/share/applications/cinnamon-screensaver.desktop"
+
+ # Doesn't exist on Gentoo, causing this to be a dead symlink
+ rm -f "${ED}etc/xdg/menus/cinnamon-applications-merged" || die
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+
+ if ! has_version '>=media-libs/gst-plugins-good-0.10.23:0.10' || \
+ ! has_version 'media-plugins/gst-plugins-vp8:0.10'; then
+ ewarn "To make use of Cinnamon's built-in screen recording utility,"
+ ewarn "you need to either install >=media-libs/gst-plugins-good-0.10.23:0.10"
+ ewarn "and media-plugins/gst-plugins-vp8:0.10, or use dconf-editor to change"
+ ewarn "org.cinnamon.recorder/pipeline to what you want to use."
+ fi
+
+ if ! has_version ">=x11-base/xorg-server-1.11"; then
+ ewarn "If you use multiple screens, it is highly recommended that you"
+ ewarn "upgrade to >=x11-base/xorg-server-1.11 to be able to make use of"
+ ewarn "pointer barriers which will make it easier to use hot corners."
+ fi
+
+ if has_version "<x11-drivers/ati-drivers-12"; then
+ ewarn "Cinnamon has been reported to show graphical corruption under"
+ ewarn "x11-drivers/ati-drivers-11.*; you may want to switch to"
+ ewarn "open-source drivers."
+ fi
+
+ if has_version "media-libs/mesa[video_cards_radeon]"; then
+ elog "Cinnamon is unstable under classic-mode r300/r600 mesa drivers."
+ elog "Make sure that gallium architecture for r300 and r600 drivers is"
+ elog "selected using 'eselect mesa'."
+ if ! has_version "media-libs/mesa[gallium]"; then
+ ewarn "You will need to emerge media-libs/mesa with USE=gallium."
+ fi
+ fi
+}
diff --git a/gnome-extra/cinnamon/files/background.patch b/gnome-extra/cinnamon/files/background.patch
new file mode 100644
index 00000000..ccfdce4c
--- /dev/null
+++ b/gnome-extra/cinnamon/files/background.patch
@@ -0,0 +1,16 @@
+--- a/files/usr/lib/cinnamon-settings/modules/cs_backgrounds.py
++++ b/files/usr/lib/cinnamon-settings/modules/cs_backgrounds.py
+@@ -334,10 +334,9 @@ class BackgroundWallpaperPane (Gtk.VBox)
+
+ def update_icon_view(self):
+ pictures_list = []
+- if os.path.exists("/usr/share/cinnamon-background-properties"):
+- for i in os.listdir("/usr/share/cinnamon-background-properties"):
+- if i.endswith(".xml"):
+- pictures_list += self.parse_xml_backgrounds_list(os.path.join("/usr/share/cinnamon-background-properties", i))
++ for i in os.listdir("/usr/share/gnome-background-properties"):
++ if i.endswith(".xml"):
++ pictures_list += self.parse_xml_backgrounds_list(os.path.join("/usr/share/gnome-background-properties", i))
+
+ path = os.path.join(os.getenv("HOME"), ".cinnamon", "backgrounds")
+ if os.path.exists(path):
diff --git a/gnome-extra/cinnamon/files/bluetooth_obex_transfer.patch b/gnome-extra/cinnamon/files/bluetooth_obex_transfer.patch
new file mode 100644
index 00000000..0e632c48
--- /dev/null
+++ b/gnome-extra/cinnamon/files/bluetooth_obex_transfer.patch
@@ -0,0 +1,25 @@
+--- a/files/usr/share/cinnamon/applets/bluetooth@cinnamon.org/applet.js
++++ b/files/usr/share/cinnamon/applets/bluetooth@cinnamon.org/applet.js
+@@ -455,22 +455,6 @@ MyApplet.prototype = {
+ this._applet.send_to_address(device.bdaddr, device.alias);
+ }));
+ }
+- if (device.capabilities & GnomeBluetoothApplet.Capabilities.OBEX_FILE_TRANSFER) {
+- item.menu.addAction(_("Browse Files..."), Lang.bind(this, function(event) {
+- this._applet.browse_address(device.bdaddr, event.get_time(),
+- Lang.bind(this, function(applet, result) {
+- try {
+- applet.browse_address_finish(result);
+- } catch (e) {
+- this._ensureSource();
+- this._source.notify(new MessageTray.Notification(this._source,
+- _("Bluetooth"),
+- _("Error browsing device"),
+- { body: _("The requested device cannot be browsed, error is '%s'").format(e) }));
+- }
+- }));
+- }));
+- }
+
+ switch (device.type) {
+ case GnomeBluetoothApplet.Type.KEYBOARD:
diff --git a/gnome-extra/cinnamon/files/cinnamon-1.6.1-automagic-gnome-bluetooth.patch b/gnome-extra/cinnamon/files/cinnamon-1.6.1-automagic-gnome-bluetooth.patch
new file mode 100644
index 00000000..9a8f5ab4
--- /dev/null
+++ b/gnome-extra/cinnamon/files/cinnamon-1.6.1-automagic-gnome-bluetooth.patch
@@ -0,0 +1,44 @@
+From ee11a71f55eb0860fb61f5c250792221387f09bf Mon Sep 17 00:00:00 2001
+From: root <admin@catmur.co.uk>
+Date: Sun, 8 Jan 2012 13:55:05 +0000
+Subject: [PATCH] Fix automagic gnome-bluetooth dependency
+
+https://bugs.gentoo.org/show_bug.cgi?id=398145
+
+Ed Catmur 2012-01-08 13:46:22 UTC
+libgnome-bluetooth-applet is a private library so they shouldn't be linking
+against it anyway. I tried to work out how to tell libtool to add it to rpath
+but got totally lost.
+
+I'll see if I can work out how to fix the automagic gnome-bluetooth dependency
+so I can at least merge USE=-bluetooth.
+---
+ configure.ac | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 69728ed..58c35f9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -113,6 +113,8 @@ PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
+ PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 0.1.7)
+
+ AC_MSG_CHECKING([for bluetooth support])
++AC_ARG_WITH([bluetooth], AS_HELP_STRING([--without-bluetooth], [Build without gnome-bluetooth library (default: auto)]))
++AS_IF([test "x$with_bluetooth" != "xno"], [
+ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
+ [BLUETOOTH_DIR=`$PKG_CONFIG --variable=applet_libdir gnome-bluetooth-1.0`
+ BLUETOOTH_LIBS=`$PKG_CONFIG --variable=applet_libs gnome-bluetooth-1.0`
+@@ -125,6 +127,9 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
+ [AC_DEFINE([HAVE_BLUETOOTH],[0])
+ AC_SUBST([HAVE_BLUETOOTH],[0])
+ AC_MSG_RESULT([no])])
++], [AC_DEFINE([HAVE_BLUETOOTH],[0])
++ AC_SUBST([HAVE_BLUETOOTH],[0])
++ AC_MSG_RESULT([no])])
+
+ MUFFIN_GIR_DIR=`$PKG_CONFIG --variable=girdir libmuffin`
+ MUFFIN_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir libmuffin`
+--
+1.7.12
+
diff --git a/gnome-extra/cinnamon/files/cinnamon-1.7.8-settings-lspci.patch b/gnome-extra/cinnamon/files/cinnamon-1.7.8-settings-lspci.patch
new file mode 100644
index 00000000..87e37680
--- /dev/null
+++ b/gnome-extra/cinnamon/files/cinnamon-1.7.8-settings-lspci.patch
@@ -0,0 +1,21 @@
+diff -urN a/files/usr/lib/cinnamon-settings/modules/cs_info.py b/files/usr/lib/cinnamon-settings/modules/cs_info.py
+--- a/files/usr/lib/cinnamon-settings/modules/cs_info.py 2013-04-30 18:01:56.000000000 +0200
++++ b/files/usr/lib/cinnamon-settings/modules/cs_info.py 2013-05-01 22:30:03.725733012 +0200
+@@ -27,7 +27,7 @@
+ "T": 1024*1024*1024*1024,
+ }
+ count = 0
+- for card in getProcessOut(("lspci")):
++ for card in getProcessOut(("/usr/sbin/lspci")):
+ if not "VGA" in card:
+ continue
+ cardId = card.split()[0]
+@@ -35,7 +35,7 @@
+ cardUnitName = ""
+ cardName = None
+ cardSize = 0
+- for line in getProcessOut(("lspci", "-v", "-s", cardId)):
++ for line in getProcessOut(("/usr/sbin/lspci", "-v", "-s", cardId)):
+ if line.startswith(cardId):
+ cardName = (line.split(":")[2].split("(rev")[0].strip())
+ else:
diff --git a/gnome-extra/cinnamon/files/cinnamon-1.8.8.1-optional-networkmanager.patch b/gnome-extra/cinnamon/files/cinnamon-1.8.8.1-optional-networkmanager.patch
new file mode 100644
index 00000000..4acdb906
--- /dev/null
+++ b/gnome-extra/cinnamon/files/cinnamon-1.8.8.1-optional-networkmanager.patch
@@ -0,0 +1,145 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -83,8 +83,40 @@
+ gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
+ libcanberra
+ polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
+- libnm-glib libnm-util gnome-keyring-1
+ gnome-desktop-3.0 >= GNOME_DESKTOP_MIN_VERSION)
++
++##########################
++# Check for NetworkManager
++##########################
++NM_MIN_VERSION=0.9
++AC_ARG_ENABLE(networkmanager,
++ AS_HELP_STRING([--disable-networkmanager],
++ [disable NetworkManager support @<:@default=auto@:>@]),,
++ [enable_networkmanager=auto])
++
++if test "x$enable_networkmanager" != "xno"; then
++ PKG_CHECK_MODULES(NETWORKMANAGER,
++ [libnm-glib libnm-util gnome-keyring-1],
++ [have_networkmanager=yes],
++ [have_networkmanager=no])
++
++ CINNAMON_CFLAGS="$CINNAMON_CFLAGS $NETWORKMANAGER_CFLAGS"
++ CINNAMON_LIBS="$CINNAMON_LIBS $NETWORKMANAGER_LIBS"
++else
++ have_networkmanager="no (disabled)"
++fi
++
++if test "x$have_networkmanager" = "xyes"; then
++ AC_DEFINE(HAVE_NETWORKMANAGER, [1], [Define if we have NetworkManager])
++ AC_SUBST([HAVE_NETWORKMANAGER], [1])
++else
++ if test "x$enable_networkmanager" = "xyes"; then
++ AC_MSG_ERROR([Couldn't find NetworkManager.])
++ fi
++ AC_SUBST([HAVE_NETWORKMANAGER], [0])
++fi
++
++AM_CONDITIONAL(HAVE_NETWORKMANAGER, test "$have_networkmanager" = "yes")
+
+ PKG_CHECK_MODULES(CINNAMON_PERF_HELPER, gtk+-3.0 gio-2.0)
+
+@@ -242,3 +274,15 @@
+ files/Makefile
+ ])
+ AC_OUTPUT
++
++echo "
++Build configuration:
++
++ Prefix: ${prefix}
++ Source code location: ${srcdir}
++ Compiler: ${CC}
++ Compiler Warnings: $enable_compile_warnings
++
++ Support for NetworkManager: $have_networkmanager
++ Support for GStreamer recording: $build_recorder
++"
+--- a/js/misc/config.js.in
++++ b/js/misc/config.js.in
+@@ -8,5 +8,7 @@
+ const GJS_VERSION = '@GJS_VERSION@';
+ /* 1 if gnome-bluetooth is available, 0 otherwise */
+ const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;
++/* 1 if networkmanager is available, 0 otherwise */
++const HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@;
+ /* The system TLS CA list */
+ const CINNAMON_SYSTEM_CA_FILE = '@CINNAMON_SYSTEM_CA_FILE@';
+--- a/js/ui/main.js
++++ b/js/ui/main.js
+@@ -57,6 +57,7 @@
+ const AppletManager = imports.ui.appletManager;
+ const AutomountManager = imports.ui.automountManager;
+ const AutorunManager = imports.ui.autorunManager;
++const Config = imports.misc.config;
+ const DeskletManager = imports.ui.deskletManager;
+ const EndSessionDialog = imports.ui.endSessionDialog;
+ const PolkitAuthenticationAgent = imports.ui.polkitAuthenticationAgent;
+@@ -70,7 +71,7 @@
+ const RunDialog = imports.ui.runDialog;
+ const Layout = imports.ui.layout;
+ const LookingGlass = imports.ui.lookingGlass;
+-const NetworkAgent = imports.ui.networkAgent;
++const NetworkAgent = Config.HAVE_NETWORKMANAGER ? imports.ui.networkAgent : null;
+ const NotificationDaemon = imports.ui.notificationDaemon;
+ const WindowAttentionHandler = imports.ui.windowAttentionHandler;
+ const Scripting = imports.ui.scripting;
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -111,9 +111,7 @@
+ cinnamon-generic-container.h \
+ cinnamon-gtk-embed.h \
+ cinnamon-global.h \
+- cinnamon-mobile-providers.h \
+ cinnamon-mount-operation.h \
+- cinnamon-network-agent.h \
+ cinnamon-perf-log.h \
+ cinnamon-screenshot.h \
+ cinnamon-screen-grabber.h \
+@@ -125,6 +123,10 @@
+ cinnamon-window-tracker.h \
+ cinnamon-wm.h \
+ cinnamon-xfixes-cursor.h
++
++if HAVE_NETWORKMANAGER
++cinnamon_public_headers_h += cinnamon-mobile-providers.h cinnamon-network-agent.h
++endif
+
+ libcinnamon_la_SOURCES = \
+ $(cinnamon_built_sources) \
+@@ -149,9 +151,7 @@
+ cinnamon-generic-container.c \
+ cinnamon-gtk-embed.c \
+ cinnamon-global.c \
+- cinnamon-mobile-providers.c \
+ cinnamon-mount-operation.c \
+- cinnamon-network-agent.c \
+ cinnamon-perf-log.c \
+ cinnamon-polkit-authentication-agent.h \
+ cinnamon-polkit-authentication-agent.c \
+@@ -166,6 +166,10 @@
+ cinnamon-wm.c \
+ cinnamon-xfixes-cursor.c
+
++if HAVE_NETWORKMANAGER
++libcinnamon_la_SOURCES += cinnamon-mobile-providers.c cinnamon-network-agent.c
++endif
++
+ libcinnamon_la_gir_sources = \
+ $(filter-out %-private.h $(cinnamon_recorder_non_gir_sources), $(cinnamon_public_headers_h) $(libcinnamon_la_SOURCES))
+
+@@ -277,7 +281,10 @@
+ libcinnamon_la_CPPFLAGS = $(cinnamon_cflags)
+
+ Cinnamon-0.1.gir: libcinnamon.la St-1.0.gir
+-Cinnamon_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-Muffin.0 Soup-2.4 GMenu-3.0 NetworkManager-1.0 NMClient-1.0
++Cinnamon_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-Muffin.0 Soup-2.4 GMenu-3.0
++if HAVE_NETWORKMANAGER
++Cinnamon_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
++endif
+ Cinnamon_0_1_gir_CFLAGS = $(libcinnamon_la_CPPFLAGS) -I $(srcdir)
+ Cinnamon_0_1_gir_LIBS = libcinnamon.la
+ Cinnamon_0_1_gir_FILES = $(libcinnamon_la_gir_sources)
diff --git a/gnome-extra/cinnamon/files/cinnamon-screensaver.desktop b/gnome-extra/cinnamon/files/cinnamon-screensaver.desktop
new file mode 100644
index 00000000..ddc96869
--- /dev/null
+++ b/gnome-extra/cinnamon/files/cinnamon-screensaver.desktop
@@ -0,0 +1,15 @@
+[Desktop Entry]
+Type=Application
+Name=Cinnamon Screensaver
+Comment=Launch screensaver and locker program
+Icon=preferences-desktop-screensaver
+Exec=gnome-screensaver
+OnlyShowIn=GNOME;
+AutostartCondition=GNOME3 if-session cinnamon
+NoDisplay=true
+X-GNOME-Autostart-Phase=Application
+X-GNOME-Autostart-Notify=true
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=gnome-screensaver
+X-GNOME-Bugzilla-Component=general
+X-GNOME-Bugzilla-Version=3.6.0
diff --git a/gnome-extra/cinnamon/files/cinnamon2d-screensaver.desktop b/gnome-extra/cinnamon/files/cinnamon2d-screensaver.desktop
new file mode 100644
index 00000000..aed9557b
--- /dev/null
+++ b/gnome-extra/cinnamon/files/cinnamon2d-screensaver.desktop
@@ -0,0 +1,15 @@
+[Desktop Entry]
+Type=Application
+Name=Cinnamon2d Screensaver
+Comment=Launch screensaver and locker program
+Icon=preferences-desktop-screensaver
+Exec=gnome-screensaver
+OnlyShowIn=GNOME;
+AutostartCondition=GNOME3 if-session cinnamon2d
+NoDisplay=true
+X-GNOME-Autostart-Phase=Application
+X-GNOME-Autostart-Notify=true
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=gnome-screensaver
+X-GNOME-Bugzilla-Component=general
+X-GNOME-Bugzilla-Version=3.6.0
diff --git a/gnome-extra/cinnamon/files/fix-control-center-check.patch b/gnome-extra/cinnamon/files/fix-control-center-check.patch
new file mode 100644
index 00000000..981b1c1a
--- /dev/null
+++ b/gnome-extra/cinnamon/files/fix-control-center-check.patch
@@ -0,0 +1,12 @@
+diff -Naur cinnamon-1.7.1.orig/files/usr/bin/cinnamon-settings cinnamon-1.7.1/files/usr/bin/cinnamon-settings
+--- cinnamon-1.7.1.orig/files/usr/bin/cinnamon-settings 2013-02-21 17:23:45.000000000 +0100
++++ cinnamon-1.7.1/files/usr/bin/cinnamon-settings 2013-03-03 03:03:24.151209998 +0100
+@@ -7,7 +7,7 @@
+ if os.path.exists("/usr/lib/cinnamon-settings/modules/cs_%s.py" % module):
+ print "Python module"
+ os.execvp("/usr/lib/cinnamon-settings/cinnamon-settings.py", ("",) + tuple(sys.argv[1:]))
+- elif os.path.exists("/usr/bin/cinnamon-control-center"):
++ elif os.path.exists("/usr/lib/cinnamon-control-center-1/panels"):
+ print "Unknown module %s, using cinnamon-control-center" % module
+ os.execvp("/usr/lib/cinnamon-settings/cinnamon-settings.py", ("",) + tuple(sys.argv[1:]))
+ elif os.path.exists("/usr/bin/gnome-control-center"): \ No newline at end of file
diff --git a/gnome-extra/cinnamon/files/idle-dim.patch b/gnome-extra/cinnamon/files/idle-dim.patch
new file mode 100644
index 00000000..85f51238
--- /dev/null
+++ b/gnome-extra/cinnamon/files/idle-dim.patch
@@ -0,0 +1,35 @@
+diff -Naur linuxmint-Cinnamon-a464dc9.orig/files/usr/share/cinnamon/applets/brightness@cinnamon.org/applet.js linuxmint-Cinnamon-a464dc9/files/usr/share/cinnamon/applets/brightness@cinnamon.org/applet.js
+--- linuxmint-Cinnamon-a464dc9.orig/files/usr/share/cinnamon/applets/brightness@cinnamon.org/applet.js 2013-04-30 18:01:56.000000000 +0200
++++ linuxmint-Cinnamon-a464dc9/files/usr/share/cinnamon/applets/brightness@cinnamon.org/applet.js 2013-05-02 19:32:12.934254811 +0200
+@@ -8,8 +8,7 @@
+
+ /* constants */
+ const DimSettingsSchema = "org.gnome.settings-daemon.plugins.power";
+-const DimSettingsAc = "idle-dim-ac";
+-const DimSettingsBattery = "idle-dim-battery";
++const DimSettings = "idle-dim";
+ const PowerBusName = 'org.gnome.SettingsDaemon';
+ const PowerObjectPath = '/org/gnome/SettingsDaemon/Power';
+
+@@ -116,10 +115,8 @@
+
+ this._settingsMenu = new PopupMenu.PopupSubMenuMenuItem(_("Dimming settings"));
+
+- let dimSwitchAc = this._buildItem(_("Dim screen on AC power"), DimSettingsSchema, DimSettingsAc);
+- this._settingsMenu.menu.addMenuItem(dimSwitchAc);
+- let dimSwitchBattery = this._buildItem(_("Dim screen on battery"), DimSettingsSchema, DimSettingsBattery);
+- this._settingsMenu.menu.addMenuItem(dimSwitchBattery);
++ let dimSwitch = this._buildItem(_("Dim screen"), DimSettingsSchema, DimSettings);
++ this._settingsMenu.menu.addMenuItem(dimSwitch);
+
+ //initial update.
+ //We have to wait until dbus calls back to decide whether to display brightness controls.
+@@ -146,7 +146,7 @@
+ this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ }
+
+- this.menu.addSettingsAction(_("Settings"), "screen");
++ this.menu.addSettingsAction(_("Settings"), "screensaver");
+ }));
+ }
+ catch (e) {
diff --git a/gnome-extra/cinnamon/files/input_keybindings.patch b/gnome-extra/cinnamon/files/input_keybindings.patch
new file mode 100644
index 00000000..2e7a4cd6
--- /dev/null
+++ b/gnome-extra/cinnamon/files/input_keybindings.patch
@@ -0,0 +1,11 @@
+--- a/files/usr/lib/cinnamon-settings/modules/cs_keyboard.py
++++ b/files/usr/lib/cinnamon-settings/modules/cs_keyboard.py
+@@ -119,6 +119,8 @@ KEYBINDINGS = [
+ [_("Log out"), MEDIA_KEYS_SCHEMA, "logout", False, "system"],
+ [_("Lock screen"), MEDIA_KEYS_SCHEMA, "screensaver", False, "system"],
+ [_("Toggle recording desktop (must restart Cinnamon)"), MUFFIN_KEYBINDINGS_SCHEMA, "toggle-recording", True, "system"],
++ [_("Switch to next source"), MEDIA_KEYS_SCHEMA, "switch-input-source", False, "system"],
++ [_("Switch to previous source"), MEDIA_KEYS_SCHEMA, "switch-input-source-backward", False, "system"],
+
+ # Launchers
+ [_("Launch help browser"), MEDIA_KEYS_SCHEMA, "help", False, "launchers"],
diff --git a/gnome-extra/cinnamon/files/keyboard_applet-2.patch b/gnome-extra/cinnamon/files/keyboard_applet-2.patch
new file mode 100644
index 00000000..29ea489c
--- /dev/null
+++ b/gnome-extra/cinnamon/files/keyboard_applet-2.patch
@@ -0,0 +1,133 @@
+--- a/files/usr/share/cinnamon/applets/keyboard@cinnamon.org/applet.js
++++ b/files/usr/share/cinnamon/applets/keyboard@cinnamon.org/applet.js
+@@ -1,9 +1,10 @@
+ const Applet = imports.ui.applet;
+-const Gkbd = imports.gi.Gkbd;
+ const Lang = imports.lang;
+-const Cinnamon = imports.gi.Cinnamon;
++const Gio = imports.gi.Gio;
++const GLib = imports.gi.GLib;
+ const St = imports.gi.St;
+ const Gtk = imports.gi.Gtk;
++const CinnamonDesktop = imports.gi.CinnamonDesktop;
+ const Main = imports.ui.main;
+ const PopupMenu = imports.ui.popupMenu;
+ const Util = imports.misc.util;
+@@ -16,11 +17,12 @@ function LayoutMenuItem() {
+ LayoutMenuItem.prototype = {
+ __proto__: PopupMenu.PopupBaseMenuItem.prototype,
+
+- _init: function(config, id, indicator, long_name) {
++ _init: function(ipsettings, id, index, indicator, long_name) {
+ PopupMenu.PopupBaseMenuItem.prototype._init.call(this);
+
+- this._config = config;
++ this._ipsettings = ipsettings;
+ this._id = id;
++ this._index = index;
+ this.label = new St.Label({ text: long_name });
+ this.indicator = indicator;
+ this.addActor(this.label);
+@@ -29,7 +31,7 @@ LayoutMenuItem.prototype = {
+
+ activate: function(event) {
+ PopupMenu.PopupBaseMenuItem.prototype.activate.call(this);
+- this._config.lock_group(this._id);
++ this._ipsettings.set_value('current', GLib.Variant.new_uint32(this._index));
+ }
+ };
+
+@@ -62,18 +64,18 @@ MyApplet.prototype = {
+ this._syncConfig,
+ null);
+
+- this._config = Gkbd.Configuration.get();
+- this._config.connect('changed', Lang.bind(this, this._syncConfig));
+- this._config.connect('group-changed', Lang.bind(this, this._syncGroup));
++ this._xkbInfo = new CinnamonDesktop.XkbInfo();
++ this._ipsettings = new Gio.Settings({ schema: 'org.cinnamon.desktop.input-sources' });
++ this._ipsettings.connect('changed::sources', Lang.bind(this, this._syncConfig));
++ this._ipsettings.connect('changed::current', Lang.bind(this, this._syncGroup));
+
+- this._config.start_listen();
+
+ this._syncConfig();
+
+ this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this.menu.addAction(_("Show Keyboard Layout"), Lang.bind(this, function() {
+ Main.overview.hide();
+- Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]);
++ Util.spawn(['gkbd-keyboard-display', '-l', this._selectedLayout._id]);
+ }));
+ this.menu.addAction(_("Show Character Table"), Lang.bind(this, function() {
+ Main.overview.hide();
+@@ -113,8 +115,8 @@ MyApplet.prototype = {
+ },
+
+ _syncConfig: function() {
+- let groups = this._config.get_group_names();
+- if (groups.length > 1) {
++ let sources = this._ipsettings.get_value('sources');
++ if (sources.n_children() > 1) {
+ this.actor.show();
+ } else {
+ this.menu.close();
+@@ -127,25 +129,30 @@ MyApplet.prototype = {
+ for (let i = 0; i < this._labelActors.length; i++)
+ this._labelActors[i].destroy();
+
+- let short_names = this._adjustGroupNames(this._config.get_short_group_names());
+
+ this._selectedLayout = null;
+ this._layoutItems = [ ];
+ this._labelActors = [ ];
+- for (let i = 0; i < groups.length; i++) {
+- let icon_name = this._config.get_group_name(i);
++ for (let i = 0; i < sources.n_children(); i++) {
++ let [type, id] = sources.get_child_value(i).deep_unpack();
++ let displayName = id;
++ let shortName = id;
++ let xkbLayout = id;
++ if (type == 'xkb') {
++ [_exists, displayName, shortName, xkbLayout, _xkbVariant] = this._xkbInfo.get_layout_info(id);
++ } // TODO: errorhandling, handle 'ibus'
++ let icon_name = xkbLayout; // FIXME: Really?
+ let actor;
+ if (this._showFlags)
+ actor = new St.Icon({ icon_name: icon_name, icon_type: St.IconType.FULLCOLOR, style_class: 'popup-menu-icon' });
+ else
+- actor = new St.Label({ text: short_names[i] });
+- let item = new LayoutMenuItem(this._config, i, actor, groups[i]);
+- item._short_group_name = short_names[i];
++ actor = new St.Label({ text: shortName });
++ let item = new LayoutMenuItem(this._ipsettings, id, i, actor, displayName);
+ item._icon_name = icon_name;
+ this._layoutItems.push(item);
+ this.menu.addMenuItem(item, i);
+
+- let shortLabel = new St.Label({ text: short_names[i] });
++ let shortLabel = new St.Label({ text: shortName });
+ this._labelActors.push(shortLabel);
+ }
+
+@@ -153,17 +160,17 @@ MyApplet.prototype = {
+ },
+
+ _syncGroup: function() {
+- let selected = this._config.get_current_group();
++ let current = this._ipsettings.get_uint('current');
+
+ if (this._selectedLayout) {
+ this._selectedLayout.setShowDot(false);
+ this._selectedLayout = null;
+ }
+
+- let item = this._layoutItems[selected];
++ let item = this._layoutItems[current];
+ item.setShowDot(true);
+
+- let selectedLabel = this._labelActors[selected];
++ let selectedLabel = this._labelActors[current];
+
+ if (this._showFlags) {
+ this.set_applet_icon_name(item._icon_name);
diff --git a/gnome-extra/cinnamon/files/keyboard_applet.patch b/gnome-extra/cinnamon/files/keyboard_applet.patch
new file mode 100644
index 00000000..6b369408
--- /dev/null
+++ b/gnome-extra/cinnamon/files/keyboard_applet.patch
@@ -0,0 +1,142 @@
+diff --git a/applet.js b/applet.js
+--- a/files/usr/share/cinnamon/applets/keyboard@cinnamon.org/applet.js
++++ b/files/usr/share/cinnamon/applets/keyboard@cinnamon.org/applet.js
+@@ -1,9 +1,10 @@
+ const Applet = imports.ui.applet;
+-const Gkbd = imports.gi.Gkbd;
+ const Lang = imports.lang;
+-const Cinnamon = imports.gi.Cinnamon;
++const Gio = imports.gi.Gio;
++const GLib = imports.gi.GLib;
+ const St = imports.gi.St;
+ const Gtk = imports.gi.Gtk;
++const GnomeDesktop = imports.gi.GnomeDesktop;
+ const Main = imports.ui.main;
+ const PopupMenu = imports.ui.popupMenu;
+ const Util = imports.misc.util;
+@@ -15,11 +16,12 @@
+ LayoutMenuItem.prototype = {
+ __proto__: PopupMenu.PopupBaseMenuItem.prototype,
+
+- _init: function(config, id, indicator, long_name) {
++ _init: function(ipsettings, id, index, indicator, long_name) {
+ PopupMenu.PopupBaseMenuItem.prototype._init.call(this);
+
+- this._config = config;
++ this._ipsettings = ipsettings;
+ this._id = id;
++ this._index = index;
+ this.label = new St.Label({ text: long_name });
+ this.indicator = indicator;
+ this.addActor(this.label);
+@@ -28,7 +30,7 @@
+
+ activate: function(event) {
+ PopupMenu.PopupBaseMenuItem.prototype.activate.call(this);
+- this._config.lock_group(this._id);
++ this._ipsettings.set_value('current', GLib.Variant.new_uint32(this._index));
+ }
+ };
+
+@@ -54,18 +56,18 @@
+ this._layoutItems = [ ];
+
+ this._showFlags = global.settings.get_boolean("keyboard-applet-use-flags");
+- this._config = Gkbd.Configuration.get();
+- this._config.connect('changed', Lang.bind(this, this._syncConfig));
+- this._config.connect('group-changed', Lang.bind(this, this._syncGroup));
++ this._xkbInfo = new GnomeDesktop.XkbInfo();
++ this._ipsettings = new Gio.Settings({ schema: 'org.gnome.desktop.input-sources' });
++ this._ipsettings.connect('changed::sources', Lang.bind(this, this._syncConfig));
++ this._ipsettings.connect('changed::current', Lang.bind(this, this._syncGroup));
+ global.settings.connect('changed::keyboard-applet-use-flags', Lang.bind(this, this._reload_settings));
+- this._config.start_listen();
+
+ this._syncConfig();
+
+ this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this.menu.addAction(_("Show Keyboard Layout"), Lang.bind(this, function() {
+ Main.overview.hide();
+- Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]);
++ Util.spawn(['gkbd-keyboard-display', '-l', this._selectedLayout._id]);
+ }));
+ this.menu.addAction(_("Show Character Table"), Lang.bind(this, function() {
+ Main.overview.hide();
+@@ -98,7 +100,6 @@
+ },
+
+ _reload_settings: function() {
+- this._showFlags = global.settings.get_boolean("keyboard-applet-use-flags");
+ this._syncConfig();
+ },
+
+@@ -127,8 +128,8 @@
+ _syncConfig: function() {
+ this._showFlags = global.settings.get_boolean("keyboard-applet-use-flags");
+
+- let groups = this._config.get_group_names();
+- if (groups.length > 1) {
++ let sources = this._ipsettings.get_value('sources');
++ if (sources.n_children() > 1) {
+ this.actor.show();
+ } else {
+ this.menu.close();
+@@ -141,25 +142,29 @@
+ for (let i = 0; i < this._labelActors.length; i++)
+ this._labelActors[i].destroy();
+
+- let short_names = this._adjustGroupNames(this._config.get_short_group_names());
+-
+ this._selectedLayout = null;
+ this._layoutItems = [ ];
+ this._labelActors = [ ];
+- for (let i = 0; i < groups.length; i++) {
+- let icon_name = this._config.get_group_name(i);
++ for (let i = 0; i < sources.n_children(); i++) {
++ let [type, id] = sources.get_child_value(i).deep_unpack();
++ let displayName = id;
++ let shortName = id;
++ let xkbLayout = id;
++ if (type == 'xkb') {
++ [_exists, displayName, shortName, xkbLayout, _xkbVariant] = this._xkbInfo.get_layout_info(id);
++ } // TODO: errorhandling, handle 'ibus'
++ let icon_name = xkbLayout; // FIXME: Really?
+ let actor;
+ if (this._showFlags)
+ actor = new St.Icon({ icon_name: icon_name, icon_type: St.IconType.FULLCOLOR, style_class: 'popup-menu-icon' });
+ else
+- actor = new St.Label({ text: short_names[i] });
+- let item = new LayoutMenuItem(this._config, i, actor, groups[i]);
+- item._short_group_name = short_names[i];
++ actor = new St.Label({ text: shortName });
++ let item = new LayoutMenuItem(this._ipsettings, id, i, actor, displayName);
+ item._icon_name = icon_name;
+ this._layoutItems.push(item);
+ this.menu.addMenuItem(item, i);
+
+- let shortLabel = new St.Label({ text: short_names[i] });
++ let shortLabel = new St.Label({ text: shortName });
+ this._labelActors.push(shortLabel);
+ }
+
+@@ -167,17 +172,17 @@
+ },
+
+ _syncGroup: function() {
+- let selected = this._config.get_current_group();
++ let current = this._ipsettings.get_uint('current');
+
+ if (this._selectedLayout) {
+ this._selectedLayout.setShowDot(false);
+ this._selectedLayout = null;
+ }
+
+- let item = this._layoutItems[selected];
++ let item = this._layoutItems[current];
+ item.setShowDot(true);
+
+- let selectedLabel = this._labelActors[selected];
++ let selectedLabel = this._labelActors[current];
+
+ if (this._showFlags) {
+ this.set_applet_icon_name(item._icon_name);
diff --git a/gnome-extra/cinnamon/files/lspci.patch b/gnome-extra/cinnamon/files/lspci.patch
new file mode 100644
index 00000000..d34e8b4c
--- /dev/null
+++ b/gnome-extra/cinnamon/files/lspci.patch
@@ -0,0 +1,17 @@
+--- a/files/usr/lib/cinnamon-settings/modules/cs_info.py
++++ b/files/usr/lib/cinnamon-settings/modules/cs_info.py
+@@ -31,12 +31,12 @@ def getProcessOut(command):
+ def getGraphicsInfos():
+ cards = {}
+ count = 0
+- for card in getProcessOut(("lspci")):
++ for card in getProcessOut(("/usr/sbin/lspci")):
+ if not "VGA" in card:
+ continue
+ cardId = card.split()[0]
+ cardName = None
+- for line in getProcessOut(("lspci", "-v", "-s", cardId)):
++ for line in getProcessOut(("/usr/sbin/lspci", "-v", "-s", cardId)):
+ if line.startswith(cardId):
+ cardName = (line.split(":")[2].split("(rev")[0].strip())
+
diff --git a/gnome-extra/cinnamon/files/menu_editor.patch b/gnome-extra/cinnamon/files/menu_editor.patch
new file mode 100644
index 00000000..e18ee7f4
--- /dev/null
+++ b/gnome-extra/cinnamon/files/menu_editor.patch
@@ -0,0 +1,815 @@
+diff --git a/files/usr/bin/cinnamon-launcher-creator b/files/usr/bin/cinnamon-launcher-creator
+new file mode 100755
+index 0000000..6f51401
+--- /dev/null
++++ b/files/usr/bin/cinnamon-launcher-creator
+@@ -0,0 +1,21 @@
++#! /usr/bin/python -OOt
++
++import sys
++sys.path.insert(0,'/usr/lib/cinnamon-menu-editor')
++from cme import ItemEditor, MenuEditor
++
++def main():
++ try:
++ from MenuEditor import config
++ datadir = config.pkgdatadir
++ version = config.VERSION
++ except:
++ datadir = '.'
++ version = '0.9'
++ if len(sys.argv) > 1:
++ app = ItemEditor.DesktopLauncherCreator(sys.argv[1])
++ else:
++ print "Missing path argument for launcher location"
++
++if __name__ == '__main__':
++ main()
+diff --git a/files/usr/lib/cinnamon-menu-editor/cme/ItemEditor.py b/files/usr/lib/cinnamon-menu-editor/cme/ItemEditor.py
+new file mode 100644
+index 0000000..80c2acd
+--- /dev/null
++++ b/files/usr/lib/cinnamon-menu-editor/cme/ItemEditor.py
+@@ -0,0 +1,247 @@
++# -*- coding: utf-8 -*-
++# Alacarte Menu Editor - Simple fd.o Compliant Menu Editor
++# Copyright (C) 2013 Red Hat, Inc.
++#
++# This library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Library General Public
++# License as published by the Free Software Foundation; either
++# version 2 of the License, or (at your option) any later version.
++#
++# This library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# Library General Public License for more details.
++#
++# You should have received a copy of the GNU Library General Public
++# License along with this library; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++
++import gettext
++import os
++import gi
++from gi.repository import GLib, Gtk
++from cme import config, util
++
++_ = gettext.gettext
++
++EXTENSIONS = (".png", ".xpm", ".svg")
++
++def try_icon_name(filename):
++ # Detect if the user picked an icon, and make
++ # it into an icon name.
++ if not filename.endswith(EXTENSIONS):
++ return filename
++
++ filename = filename[:-4]
++
++ theme = Gtk.IconTheme.get_default()
++ resolved_path = None
++ for path in theme.get_search_path():
++ if filename.startswith(path):
++ resolved_path = filename[len(path):].lstrip(os.sep)
++ break
++
++ if resolved_path is None:
++ return filename
++
++ parts = resolved_path.split(os.sep)
++ # icon-theme/size/category/icon
++ if len(parts) != 4:
++ return filename
++
++ return parts[3]
++
++def get_icon_string(image):
++ filename = image.props.file
++ if filename is not None:
++ return try_icon_name(filename)
++
++ return image.props.icon_name
++
++def strip_extensions(icon):
++ if icon.endswith(EXTENSIONS):
++ return icon[:-4]
++ else:
++ return icon
++
++def set_icon_string(image, icon):
++ if GLib.path_is_absolute(icon):
++ image.props.file = icon
++ else:
++ image.props.icon_name = strip_extensions(icon)
++
++DESKTOP_GROUP = GLib.KEY_FILE_DESKTOP_GROUP
++
++# XXX - replace with a better UI eventually
++class IconPicker(object):
++ def __init__(self, dialog, button, image):
++ self.dialog = dialog
++ self.button = button
++ self.button.connect('clicked', self.pick_icon)
++ self.image = image
++
++ def pick_icon(self, button):
++ chooser = Gtk.FileChooserDialog(title=_("Choose an icon"),
++ parent=self.dialog,
++ buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT,
++ Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT))
++ response = chooser.run()
++ if response == Gtk.ResponseType.ACCEPT:
++ self.image.props.file = chooser.get_filename()
++ chooser.destroy()
++
++class ItemEditor(object):
++ ui_file = None
++
++ def __init__(self, item_path, parent=None):
++ self.builder = Gtk.Builder()
++ self.builder.add_from_file(self.ui_file)
++
++ self.dialog = self.builder.get_object('editor')
++ if parent:
++ self.dialog.set_transient_for(parent)
++ self.dialog.connect('response', self.on_response)
++
++ self.build_ui()
++
++ self.item_path = item_path
++ self.load()
++ self.resync_validity()
++
++ def build_ui(self):
++ raise NotImplementedError()
++
++ def get_keyfile_edits(self):
++ raise NotImplementedError()
++
++ def set_text(self, ctl, name):
++ try:
++ val = self.keyfile.get_string(DESKTOP_GROUP, name)
++ except GLib.GError:
++ pass
++ else:
++ self.builder.get_object(ctl).set_text(val)
++
++ def set_check(self, ctl, name):
++ try:
++ val = self.keyfile.get_boolean(DESKTOP_GROUP, name)
++ except GLib.GError:
++ pass
++ else:
++ self.builder.get_object(ctl).set_active(val)
++
++ def set_icon(self, ctl, name):
++ try:
++ val = self.keyfile.get_string(DESKTOP_GROUP, name)
++ except GLib.GError:
++ pass
++ else:
++ set_icon_string(self.builder.get_object(ctl), val)
++
++ def load(self):
++ self.keyfile = GLib.KeyFile()
++ try:
++ self.keyfile.load_from_file(self.item_path, util.KEY_FILE_FLAGS)
++ except GLib.GError:
++ pass
++
++ def save(self):
++ util.fillKeyFile(self.keyfile, self.get_keyfile_edits())
++ contents, length = self.keyfile.to_data()
++ need_exec = False
++ if ".desktop" not in self.item_path and ".directory" not in self.item_path:
++ need_exec = True
++ self.item_path = os.path.join(self.item_path, (self.builder.get_object('name-entry').get_text() + ".desktop"))
++ with open(self.item_path, 'w') as f:
++ f.write(contents)
++ if need_exec:
++ os.system("chmod a+x " + self.item_path)
++
++
++ def run(self):
++ self.dialog.present()
++
++ def on_response(self, dialog, response):
++ if response == Gtk.ResponseType.OK:
++ self.save()
++ self.dialog.destroy()
++
++class LauncherEditor(ItemEditor):
++ ui_file = '/usr/lib/cinnamon-menu-editor/launcher-editor.ui'
++
++ def build_ui(self):
++ self.icon_picker = IconPicker(self.dialog,
++ self.builder.get_object('icon-button'),
++ self.builder.get_object('icon-image'))
++
++ self.builder.get_object('exec-browse').connect('clicked', self.pick_exec)
++
++ self.builder.get_object('name-entry').connect('changed', self.resync_validity)
++ self.builder.get_object('exec-entry').connect('changed', self.resync_validity)
++
++ def resync_validity(self, *args):
++ name_text = self.builder.get_object('name-entry').get_text()
++ exec_text = self.builder.get_object('exec-entry').get_text()
++ valid = (name_text is not None and exec_text is not None)
++ self.builder.get_object('ok').set_sensitive(valid)
++
++ def load(self):
++ super(LauncherEditor, self).load()
++ self.set_text('name-entry', "Name")
++ self.set_text('exec-entry', "Exec")
++ self.set_text('comment-entry', "Comment")
++ self.set_check('terminal-check', "Terminal")
++ self.set_icon('icon-image', "Icon")
++
++ def get_keyfile_edits(self):
++ return dict(Name=self.builder.get_object('name-entry').get_text(),
++ Exec=self.builder.get_object('exec-entry').get_text(),
++ Comment=self.builder.get_object('comment-entry').get_text(),
++ Terminal=self.builder.get_object('terminal-check').get_active(),
++ Icon=get_icon_string(self.builder.get_object('icon-image')),
++ Type="Application")
++
++ def pick_exec(self, button):
++ chooser = Gtk.FileChooserDialog(title=_("Choose a command"),
++ parent=self.dialog,
++ buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT,
++ Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT))
++ response = chooser.run()
++ if response == Gtk.ResponseType.ACCEPT:
++ self.builder.get_object('exec-entry').set_text(chooser.get_filename())
++ chooser.destroy()
++
++class DirectoryEditor(ItemEditor):
++ ui_file = '/usr/lib/cinnamon-menu-editor/directory-editor.ui'
++
++ def build_ui(self):
++ self.icon_picker = IconPicker(self.dialog,
++ self.builder.get_object('icon-button'),
++ self.builder.get_object('icon-image'))
++
++ self.builder.get_object('name-entry').connect('changed', self.resync_validity)
++
++ def resync_validity(self, *args):
++ name_text = self.builder.get_object('name-entry').get_text()
++ valid = (name_text is not None)
++ self.builder.get_object('ok').set_sensitive(valid)
++
++ def load(self):
++ super(DirectoryEditor, self).load()
++ self.set_text('name-entry', "Name")
++ self.set_text('comment-entry', "Comment")
++ self.set_icon('icon-image', "Icon")
++
++ def get_keyfile_edits(self):
++ return dict(Name=self.builder.get_object('name-entry').get_text(),
++ Comment=self.builder.get_object('comment-entry').get_text(),
++ Icon=get_icon_string(self.builder.get_object('icon-image')),
++ Type="Directory")
++
++def DesktopLauncherCreator(path):
++ Gtk.Window.set_default_icon_name('alacarte')
++ editor = LauncherEditor(path, None)
++ editor.dialog.connect('destroy', Gtk.main_quit)
++ editor.dialog.show_all()
++ Gtk.main()
++
+diff --git a/files/usr/lib/cinnamon-menu-editor/cme/MainWindow.py b/files/usr/lib/cinnamon-menu-editor/cme/MainWindow.py
+index 33106a9..735d420 100644
+--- a/files/usr/lib/cinnamon-menu-editor/cme/MainWindow.py
++++ b/files/usr/lib/cinnamon-menu-editor/cme/MainWindow.py
+@@ -22,6 +22,7 @@ import cgi
+ import os
+ import gettext
+ import subprocess
++import shutil
+
+ from cme import config
+ gettext.bindtextdomain(config.GETTEXT_PACKAGE, config.localedir)
+@@ -29,6 +30,7 @@ gettext.textdomain(config.GETTEXT_PACKAGE)
+
+ _ = gettext.gettext
+ from cme.MenuEditor import MenuEditor
++from cme.ItemEditor import LauncherEditor, DirectoryEditor
+ from cme import util
+
+ class MainWindow(object):
+@@ -58,6 +60,7 @@ class MainWindow(object):
+ self.cut_copy_buffer = None
+ self.file_id = None
+ self.last_tree = None
++ self.main_window = self.tree.get_object('mainwindow')
+
+ def run(self):
+ self.loadMenus()
+@@ -261,8 +264,8 @@ class MainWindow(object):
+ else:
+ parent = menus[iter][3]
+ file_path = os.path.join(util.getUserDirectoryPath(), util.getUniqueFileId('alacarte-made', '.directory'))
+- process = subprocess.Popen(['gnome-desktop-item-edit', file_path], env=os.environ)
+- GObject.timeout_add(100, self.waitForNewMenuProcess, process, parent.get_menu_id(), file_path)
++ editor = DirectoryEditor(file_path, self.main_window)
++ editor.run()
+
+ def on_new_item_button_clicked(self, button):
+ menu_tree = self.tree.get_object('menu_tree')
+@@ -274,8 +277,8 @@ class MainWindow(object):
+ else:
+ parent = menus[iter][3]
+ file_path = os.path.join(util.getUserItemPath(), util.getUniqueFileId('alacarte-made', '.desktop'))
+- process = subprocess.Popen(['gnome-desktop-item-edit', file_path], env=os.environ)
+- GObject.timeout_add(100, self.waitForNewItemProcess, process, parent.get_menu_id(), file_path)
++ editor = LauncherEditor(file_path, self.main_window)
++ editor.run()
+
+ def on_edit_delete_activate(self, menu):
+ item_tree = self.tree.get_object('item_tree')
+@@ -302,18 +305,17 @@ class MainWindow(object):
+ if isinstance(item, GMenu.TreeEntry):
+ file_path = os.path.join(util.getUserItemPath(), item.get_desktop_file_id())
+ file_type = 'Item'
++ Editor = LauncherEditor
+ elif isinstance(item, GMenu.TreeDirectory):
+ file_path = os.path.join(util.getUserDirectoryPath(), os.path.split(item.get_desktop_file_path())[1])
+ file_type = 'Menu'
++ Editor = DirectoryEditor
+
+ if not os.path.isfile(file_path):
+- data = open(item.get_desktop_file_path()).read()
+- open(file_path, 'w').write(data)
++ shutil.copy(item.get_desktop_file_path(), file_path)
+
+- if file_path not in self.edit_pool:
+- self.edit_pool.append(file_path)
+- process = subprocess.Popen(['gnome-desktop-item-edit', file_path], env=os.environ)
+- GObject.timeout_add(100, self.waitForEditProcess, process, file_path)
++ editor = Editor(file_path, self.main_window)
++ editor.run()
+
+ def on_edit_cut_activate(self, menu):
+ item_tree = self.tree.get_object('item_tree')
+diff --git a/files/usr/lib/cinnamon-menu-editor/cme/util.py b/files/usr/lib/cinnamon-menu-editor/cme/util.py
+index 237f03b..459c222 100644
+--- a/files/usr/lib/cinnamon-menu-editor/cme/util.py
++++ b/files/usr/lib/cinnamon-menu-editor/cme/util.py
+@@ -32,10 +32,10 @@ def fillKeyFile(keyfile, items):
+
+ if isinstance(item, bool):
+ keyfile.set_boolean(DESKTOP_GROUP, key, item)
+- elif isinstance(item, Sequence):
+- keyfile.set_string_list(DESKTOP_GROUP, key, item)
+ elif isinstance(item, basestring):
+ keyfile.set_string(DESKTOP_GROUP, key, item)
++ elif isinstance(item, Sequence):
++ keyfile.set_string_list(DESKTOP_GROUP, key, item)
+
+ def getNameFromKeyFile(keyfile):
+ return keyfile.get_string(DESKTOP_GROUP, "Name")
+diff --git a/files/usr/lib/cinnamon-menu-editor/directory-editor.ui b/files/usr/lib/cinnamon-menu-editor/directory-editor.ui
+new file mode 100644
+index 0000000..9228c49
+--- /dev/null
++++ b/files/usr/lib/cinnamon-menu-editor/directory-editor.ui
+@@ -0,0 +1,178 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<interface>
++ <!-- interface-requires gtk+ 3.0 -->
++ <object class="GtkDialog" id="editor">
++ <property name="can_focus">False</property>
++ <property name="border_width">4</property>
++ <property name="title" translatable="yes">Directory Properties</property>
++ <property name="modal">True</property>
++ <property name="type_hint">dialog</property>
++ <child internal-child="vbox">
++ <object class="GtkBox" id="dialog-box">
++ <property name="can_focus">False</property>
++ <property name="orientation">vertical</property>
++ <property name="spacing">4</property>
++ <child internal-child="action_area">
++ <object class="GtkButtonBox" id="dialog-action_area">
++ <property name="can_focus">False</property>
++ <property name="layout_style">end</property>
++ <child>
++ <object class="GtkButton" id="cancel">
++ <property name="label">gtk-cancel</property>
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="receives_default">True</property>
++ <property name="use_stock">True</property>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">True</property>
++ <property name="position">0</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkButton" id="ok">
++ <property name="label">gtk-ok</property>
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="receives_default">True</property>
++ <property name="use_stock">True</property>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">True</property>
++ <property name="position">1</property>
++ </packing>
++ </child>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">True</property>
++ <property name="pack_type">end</property>
++ <property name="position">0</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkBox" id="hbox">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="spacing">10</property>
++ <child>
++ <object class="GtkAlignment" id="alignment1">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="xalign">1</property>
++ <property name="yalign">0</property>
++ <property name="yscale">0</property>
++ <child>
++ <object class="GtkButton" id="icon-button">
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="receives_default">True</property>
++ <child>
++ <object class="GtkImage" id="icon-image">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="pixel_size">64</property>
++ <property name="icon_name">folder</property>
++ </object>
++ </child>
++ </object>
++ </child>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">True</property>
++ <property name="position">0</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkGrid" id="grid1">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="row_spacing">6</property>
++ <property name="column_spacing">10</property>
++ <child>
++ <object class="GtkLabel" id="label2">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="xalign">1</property>
++ <property name="label" translatable="yes">Name:</property>
++ <attributes>
++ <attribute name="weight" value="bold"/>
++ </attributes>
++ </object>
++ <packing>
++ <property name="left_attach">0</property>
++ <property name="top_attach">0</property>
++ <property name="width">1</property>
++ <property name="height">1</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkLabel" id="label4">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="xalign">1</property>
++ <property name="label" translatable="yes">Comment:</property>
++ <attributes>
++ <attribute name="weight" value="bold"/>
++ </attributes>
++ </object>
++ <packing>
++ <property name="left_attach">0</property>
++ <property name="top_attach">1</property>
++ <property name="width">1</property>
++ <property name="height">1</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkEntry" id="name-entry">
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="has_focus">True</property>
++ <property name="invisible_char">●</property>
++ </object>
++ <packing>
++ <property name="left_attach">1</property>
++ <property name="top_attach">0</property>
++ <property name="width">1</property>
++ <property name="height">1</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkEntry" id="comment-entry">
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="invisible_char">●</property>
++ </object>
++ <packing>
++ <property name="left_attach">1</property>
++ <property name="top_attach">1</property>
++ <property name="width">1</property>
++ <property name="height">1</property>
++ </packing>
++ </child>
++ </object>
++ <packing>
++ <property name="expand">True</property>
++ <property name="fill">True</property>
++ <property name="pack_type">end</property>
++ <property name="position">1</property>
++ </packing>
++ </child>
++ </object>
++ <packing>
++ <property name="expand">True</property>
++ <property name="fill">True</property>
++ <property name="position">1</property>
++ </packing>
++ </child>
++ </object>
++ </child>
++ <action-widgets>
++ <action-widget response="-6">cancel</action-widget>
++ <action-widget response="-5">ok</action-widget>
++ </action-widgets>
++ </object>
++</interface>
+\ No newline at end of file
+diff --git a/files/usr/lib/cinnamon-menu-editor/launcher-editor.ui b/files/usr/lib/cinnamon-menu-editor/launcher-editor.ui
+new file mode 100644
+index 0000000..a643c63
+--- /dev/null
++++ b/files/usr/lib/cinnamon-menu-editor/launcher-editor.ui
+@@ -0,0 +1,252 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<interface>
++ <!-- interface-requires gtk+ 3.0 -->
++ <object class="GtkDialog" id="editor">
++ <property name="can_focus">False</property>
++ <property name="border_width">4</property>
++ <property name="title" translatable="yes">Launcher Properties</property>
++ <property name="modal">True</property>
++ <property name="type_hint">dialog</property>
++ <child internal-child="vbox">
++ <object class="GtkBox" id="dialog-box">
++ <property name="can_focus">False</property>
++ <property name="orientation">vertical</property>
++ <property name="spacing">4</property>
++ <child internal-child="action_area">
++ <object class="GtkButtonBox" id="dialog-action_area">
++ <property name="can_focus">False</property>
++ <property name="layout_style">end</property>
++ <child>
++ <object class="GtkButton" id="cancel">
++ <property name="label">gtk-cancel</property>
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="receives_default">True</property>
++ <property name="use_stock">True</property>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">True</property>
++ <property name="position">0</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkButton" id="ok">
++ <property name="label">gtk-ok</property>
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="receives_default">True</property>
++ <property name="use_stock">True</property>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">True</property>
++ <property name="position">1</property>
++ </packing>
++ </child>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">True</property>
++ <property name="pack_type">end</property>
++ <property name="position">0</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkBox" id="hbox">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="spacing">10</property>
++ <child>
++ <object class="GtkAlignment" id="alignment1">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="xalign">1</property>
++ <property name="yalign">0</property>
++ <property name="yscale">0</property>
++ <child>
++ <object class="GtkButton" id="icon-button">
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="receives_default">True</property>
++ <child>
++ <object class="GtkImage" id="icon-image">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="pixel_size">64</property>
++ <property name="icon_name">gnome-panel-launcher</property>
++ </object>
++ </child>
++ </object>
++ </child>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">True</property>
++ <property name="position">0</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkGrid" id="grid1">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="row_spacing">6</property>
++ <property name="column_spacing">10</property>
++ <child>
++ <object class="GtkLabel" id="label2">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="xalign">1</property>
++ <property name="label" translatable="yes">Name:</property>
++ <attributes>
++ <attribute name="weight" value="bold"/>
++ </attributes>
++ </object>
++ <packing>
++ <property name="left_attach">0</property>
++ <property name="top_attach">0</property>
++ <property name="width">1</property>
++ <property name="height">1</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkLabel" id="label3">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="xalign">1</property>
++ <property name="label" translatable="yes">Command:</property>
++ <attributes>
++ <attribute name="weight" value="bold"/>
++ </attributes>
++ </object>
++ <packing>
++ <property name="left_attach">0</property>
++ <property name="top_attach">1</property>
++ <property name="width">1</property>
++ <property name="height">1</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkLabel" id="label4">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="xalign">1</property>
++ <property name="label" translatable="yes">Comment:</property>
++ <attributes>
++ <attribute name="weight" value="bold"/>
++ </attributes>
++ </object>
++ <packing>
++ <property name="left_attach">0</property>
++ <property name="top_attach">2</property>
++ <property name="width">1</property>
++ <property name="height">1</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkEntry" id="name-entry">
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="has_focus">True</property>
++ <property name="invisible_char">●</property>
++ </object>
++ <packing>
++ <property name="left_attach">1</property>
++ <property name="top_attach">0</property>
++ <property name="width">1</property>
++ <property name="height">1</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkBox" id="command-box">
++ <property name="visible">True</property>
++ <property name="can_focus">False</property>
++ <property name="spacing">10</property>
++ <child>
++ <object class="GtkEntry" id="exec-entry">
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="invisible_char">●</property>
++ </object>
++ <packing>
++ <property name="expand">True</property>
++ <property name="fill">True</property>
++ <property name="position">0</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkButton" id="exec-browse">
++ <property name="label" translatable="yes">Browse</property>
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="receives_default">True</property>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">True</property>
++ <property name="position">1</property>
++ </packing>
++ </child>
++ </object>
++ <packing>
++ <property name="left_attach">1</property>
++ <property name="top_attach">1</property>
++ <property name="width">1</property>
++ <property name="height">1</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkEntry" id="comment-entry">
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="invisible_char">●</property>
++ </object>
++ <packing>
++ <property name="left_attach">1</property>
++ <property name="top_attach">2</property>
++ <property name="width">1</property>
++ <property name="height">1</property>
++ </packing>
++ </child>
++ <child>
++ <object class="GtkCheckButton" id="terminal-check">
++ <property name="label" translatable="yes">Launch in Terminal?</property>
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="receives_default">False</property>
++ <property name="xalign">0</property>
++ <property name="draw_indicator">True</property>
++ </object>
++ <packing>
++ <property name="left_attach">1</property>
++ <property name="top_attach">3</property>
++ <property name="width">1</property>
++ <property name="height">1</property>
++ </packing>
++ </child>
++ <child>
++ <placeholder/>
++ </child>
++ </object>
++ <packing>
++ <property name="expand">True</property>
++ <property name="fill">True</property>
++ <property name="pack_type">end</property>
++ <property name="position">1</property>
++ </packing>
++ </child>
++ </object>
++ <packing>
++ <property name="expand">True</property>
++ <property name="fill">True</property>
++ <property name="position">1</property>
++ </packing>
++ </child>
++ </object>
++ </child>
++ <action-widgets>
++ <action-widget response="-6">cancel</action-widget>
++ <action-widget response="-5">ok</action-widget>
++ </action-widgets>
++ </object>
++</interface>
+\ No newline at end of file
diff --git a/gnome-extra/cinnamon/files/remove_GC.patch b/gnome-extra/cinnamon/files/remove_GC.patch
new file mode 100644
index 00000000..7bd8e45a
--- /dev/null
+++ b/gnome-extra/cinnamon/files/remove_GC.patch
@@ -0,0 +1,124 @@
+--- a/src/cinnamon-global.c
++++ b/src/cinnamon-global.c
+@@ -1399,35 +1399,6 @@ cinnamon_global_reexec_self (CinnamonGlo
+ g_ptr_array_free (arr, TRUE);
+ }
+
+-/**
+- * cinnamon_global_gc:
+- * @global: A #CinnamonGlobal
+- *
+- * Start a garbage collection process. For more information, see
+- * https://developer.mozilla.org/En/JS_GC
+- */
+-void
+-cinnamon_global_gc (CinnamonGlobal *global)
+-{
+- JSContext *context = gjs_context_get_native_context (global->js_context);
+-
+- JS_GC (context);
+-}
+-
+-/**
+- * cinnamon_global_maybe_gc:
+- * @global: A #CinnamonGlobal
+- *
+- * Start a garbage collection process when it would free up enough memory
+- * to be worth the amount of time it would take
+- * https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_MaybeGC
+- */
+-void
+-cinnamon_global_maybe_gc (CinnamonGlobal *global)
+-{
+- gjs_context_maybe_gc (global->js_context);
+-}
+-
+ static void
+ cinnamon_global_on_gc (GjsContext *context,
+ CinnamonGlobal *global)
+@@ -1768,13 +1768,6 @@ run_leisure_functions (gpointer data)
+ if (global->work_count > 0)
+ return FALSE;
+
+- /* Previously we called gjs_maybe_gc(). However, it simply doesn't
+- * trigger often enough. Garbage collection is very fast here, so
+- * let's just aggressively GC. This will help avoid both heap
+- * fragmentation, and the GC kicking in when we don't want it to.
+- */
+- gjs_context_gc (global->js_context);
+-
+ /* No leisure closures, so we are done */
+ if (global->leisure_closures == NULL)
+ return FALSE;
+--- a/src/cinnamon-global.h
++++ b/src/cinnamon-global.h
+@@ -88,10 +88,6 @@ void cinnamon_global_set_pointer
+ int y);
+
+
+-/* JavaScript utilities */
+-void cinnamon_global_gc (CinnamonGlobal *global);
+-void cinnamon_global_maybe_gc (CinnamonGlobal *global);
+-
+ typedef struct {
+ guint glibc_uordblks;
+
+
+
+--- a/js/perf/core.js
++++ b/js/perf/core.js
+@@ -1,5 +1,7 @@
+ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
++const System = imports.system;
++
+ const Main = imports.ui.main;
+ const Scripting = imports.ui.scripting;
+
+@@ -99,7 +101,7 @@ function run() {
+ Main.overview.hide();
+ yield Scripting.waitLeisure();
+
+- global.gc();
++ System.gc();
+ yield Scripting.sleep(1000);
+ Scripting.collectStatistics();
+ Scripting.scriptEvent('afterShowHide');
+--- a/js/ui/lookingGlass.js
++++ b/js/ui/lookingGlass.js
+@@ -11,6 +11,7 @@ const St = imports.gi.St;
+ const Cinnamon = imports.gi.Cinnamon;
+ const Signals = imports.signals;
+ const Lang = imports.lang;
++const System = imports.system;
+
+ const History = imports.misc.history;
+ const Extension = imports.ui.extension;
+@@ -680,7 +681,7 @@ Memory.prototype = {
+
+ this._gcbutton = new St.Button({ label: 'Full GC',
+ style_class: 'lg-obj-inspector-button' });
+- this._gcbutton.connect('clicked', Lang.bind(this, function () { global.gc(); this._renderText(); }));
++ this._gcbutton.connect('clicked', Lang.bind(this, function () { System.gc(); this._renderText(); }));
+ this.actor.add(this._gcbutton, { x_align: St.Align.START,
+ x_fill: false });
+
+--- a/js/ui/lookingGlassDBus.js
++++ b/js/ui/lookingGlassDBus.js
+@@ -1,5 +1,7 @@
+ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
++const System = imports.system;
++
+ const Gio = imports.gi.Gio;
+ const Main = imports.ui.main;
+ const Extension = imports.ui.extension;
+@@ -99,7 +101,7 @@ CinnamonLookingGlass.prototype = {
+ },
+
+ FullGc: function() {
+- global.gc();
++ System.gc();
+ },
+
+ Inspect: function(path) {
diff --git a/gnome-extra/cinnamon/files/screensaver.patch b/gnome-extra/cinnamon/files/screensaver.patch
new file mode 100644
index 00000000..1ffb916b
--- /dev/null
+++ b/gnome-extra/cinnamon/files/screensaver.patch
@@ -0,0 +1,36 @@
+--- a/files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.py
++++ b/files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.py
+@@ -57,9 +57,9 @@ class MainWindow:
+ def lock_screen(self, data):
+ message = self.entry.get_text()
+ if (message != ""):
+- os.system("cinnamon-screensaver-command --lock --away-message \"%s\" &" % self.entry.get_text())
++ os.system("gnome-screensaver-command --lock --away-message \"%s\" &" % self.entry.get_text())
+ else:
+- os.system("cinnamon-screensaver-command --lock &")
++ os.system("gnome-screensaver-command --lock &")
+ gtk.main_quit()
+
+ if __name__ == "__main__":
+--- a/files/usr/lib/cinnamon-settings/modules/cs_screensaver.py
++++ b/files/usr/lib/cinnamon-settings/modules/cs_screensaver.py
+@@ -5,15 +5,15 @@ from SettingsWidgets import *
+
+ class Module:
+ def __init__(self, content_box):
+- keywords = _("screensaver, brightness, lock, password, away, message")
++ keywords = _("screensaver, brightness, lock, password, user, switching")
+ advanced = False
+ sidePage = SidePage(_("Screensaver & Lock Settings"), "screensaver.svg", keywords, advanced, content_box)
+ self.sidePage = sidePage
+ self.name = "screensaver"
+ self.category = "prefs"
+- if os.path.exists("/usr/bin/cinnamon-screensaver-command"):
+- sidePage.add_widget(GSettingsCheckButton(_("Ask for an away message when locking the screen from the menu"), "org.cinnamon.screensaver", "ask-for-away-message", None))
+- sidePage.add_widget(GSettingsEntry(_("Default away message"), "org.cinnamon.screensaver", "default-message", None))
++ if os.path.exists("/usr/bin/gnome-screensaver-command"):
++ self.sidePage.add_widget(GSettingsCheckButton(_("Ask for password when unlocking"), "org.gnome.desktop.screensaver", "lock-enabled", None))
++ self.sidePage.add_widget(GSettingsCheckButton(_("Enable user switching"), "org.gnome.desktop.screensaver", "user-switch-enabled", None))
+
+ widget = content_box.c_manager.get_c_widget("screen")
+ if widget is not None:
diff --git a/gnome-extra/cinnamon/files/start-here.png b/gnome-extra/cinnamon/files/start-here.png
new file mode 100644
index 00000000..0a7a28ab
--- /dev/null
+++ b/gnome-extra/cinnamon/files/start-here.png
Binary files differ
diff --git a/gnome-extra/gnome-shell-windowlist/gnome-shell-windowlist-20120121.ebuild b/gnome-extra/gnome-shell-windowlist/gnome-shell-windowlist-20120121.ebuild
new file mode 100644
index 00000000..61845171
--- /dev/null
+++ b/gnome-extra/gnome-shell-windowlist/gnome-shell-windowlist-20120121.ebuild
@@ -0,0 +1,35 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="4"
+
+EGIT_REPO_URI="git://github.com/siefkenj/gnome-shell-windowlist.git"
+EGIT_COMMIT="7ede91868efd5d75ce98065416acedf029041e33"
+
+inherit git-2
+
+DESCRIPTION="Adds a window switcher to the top bar of gnome-shell"
+HOMEPAGE="https://extensions.gnome.org/extension/25/window-list/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE=""
+
+RDEPEND="app-admin/eselect-gnome-shell-extensions
+ gnome-base/gnome-shell"
+DEPEND=""
+
+src_install() {
+ insinto /usr/share/gnome-shell/extensions
+ doins -r ./*@*
+ dodoc README
+}
+
+pkg_postinst() {
+ ebegin "Updating list of installed extensions"
+ eselect gnome-shell-extensions update
+ eend $?
+}
diff --git a/gnome-extra/nautilus-file-roller/Manifest b/gnome-extra/nautilus-file-roller/Manifest
new file mode 100644
index 00000000..b0ebfd2c
--- /dev/null
+++ b/gnome-extra/nautilus-file-roller/Manifest
@@ -0,0 +1,2 @@
+DIST file-roller-3.10.2.1.tar.xz 1392792 SHA256 fde1104103df71c126e759089f12dc7fa25ec642308649e87d542ee7c3276790 SHA512 8b69c2531b3ad729d208c2b140d1dd6dd156cb34f24465a68c5cb7e94337d2ebbbadf9ecc98993565e525c976e64e454df339fdc914d05815b4cd33055aadfca WHIRLPOOL 5550d89d1a447fe1211185597db85eb0b70371faf8e8597225dc23d0f74c9a77eed237f2da0c02db66b8431b1428d88a08116d243eb942b28e50055ba3fbf629
+DIST file-roller-3.8.4.tar.xz 1517092 SHA256 3615bc41bbe28030d16ee414a8f5f9a3e37f745733c39032ef1559a06be3eea8 SHA512 3e901a6f7a48dab925995c1ca9dde3327a4b6c575e7e307f8d8f2dc36fc452a486a4f6068873864affe7256862de6001dce546ededd261aeaf2d9ab0dcb8ccf6 WHIRLPOOL 2d6d0a99bfeacd5ec21551cda91ef73810348b17a82d308e625234647d0c9d6babdef361c41217f799fd50df034304c637672ced66ca5ab1e1030f0b0e044e9a
diff --git a/gnome-extra/nautilus-file-roller/metadata.xml b/gnome-extra/nautilus-file-roller/metadata.xml
new file mode 100644
index 00000000..28492af1
--- /dev/null
+++ b/gnome-extra/nautilus-file-roller/metadata.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>slawomir.nizio@sabayon.org</email>
+ </maintainer>
+</pkgmetadata>
diff --git a/gnome-extra/nautilus-file-roller/nautilus-file-roller-3.10.2.1.ebuild b/gnome-extra/nautilus-file-roller/nautilus-file-roller-3.10.2.1.ebuild
new file mode 100644
index 00000000..e6ea7535
--- /dev/null
+++ b/gnome-extra/nautilus-file-roller/nautilus-file-roller-3.10.2.1.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="5"
+
+GNOME_ORG_MODULE="file-roller"
+inherit eutils gnome.org
+
+DESCRIPTION="Provides context menu for Nautilus"
+HOMEPAGE="http://fileroller.sourceforge.net/"
+
+LICENSE="GPL-2+"
+SLOT="0"
+IUSE=""
+KEYWORDS="~amd64 ~arm ~x86"
+
+RDEPEND="
+ ~app-arch/file-roller-${PV}
+ >=gnome-base/nautilus-3
+"
+DEPEND=">=gnome-base/nautilus-3
+ >=dev-libs/glib-2.36.0:2
+ sys-devel/gettext
+ >=app-arch/libarchive-3:=
+ >=dev-libs/json-glib-0.14
+ virtual/pkgconfig
+ >=x11-libs/gtk+-3.9.3:3
+"
+
+src_configure() {
+ econf \
+ --disable-run-in-place \
+ --disable-static \
+ --disable-debug \
+ --enable-magic \
+ --enable-libarchive \
+ --with-smclient=xsmp \
+ --enable-nautilus-actions \
+ --disable-packagekit \
+ ITSTOOL=$(type -P true)
+}
+
+src_compile() {
+ cd nautilus || die
+ emake
+}
+
+src_install() {
+ cd nautilus || die
+ emake DESTDIR="${D}" install
+ find "${D}" -name '*.la' -exec rm -f {} + || die "la file removal failed"
+}
diff --git a/gnome-extra/nautilus-file-roller/nautilus-file-roller-3.8.4.ebuild b/gnome-extra/nautilus-file-roller/nautilus-file-roller-3.8.4.ebuild
new file mode 100644
index 00000000..de0d696e
--- /dev/null
+++ b/gnome-extra/nautilus-file-roller/nautilus-file-roller-3.8.4.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="5"
+
+GNOME_ORG_MODULE="file-roller"
+inherit eutils gnome.org
+
+DESCRIPTION="Provides context menu for Nautilus"
+HOMEPAGE="http://fileroller.sourceforge.net/"
+
+LICENSE="GPL-2+"
+SLOT="0"
+IUSE=""
+KEYWORDS="~amd64 ~arm ~x86"
+
+RDEPEND="
+ ~app-arch/file-roller-${PV}
+ >=gnome-base/nautilus-3
+"
+DEPEND=">=gnome-base/nautilus-3
+ >=dev-libs/glib-2.29.14:2
+ sys-devel/gettext
+ >=app-arch/libarchive-3:=
+ >=dev-libs/json-glib-0.14
+ virtual/pkgconfig
+ >=x11-libs/gtk+-3.6:3
+"
+
+src_configure() {
+ econf \
+ --disable-run-in-place \
+ --disable-static \
+ --disable-debug \
+ --enable-magic \
+ --enable-libarchive \
+ --with-smclient=xsmp \
+ --enable-nautilus-actions \
+ --disable-packagekit \
+ ITSTOOL=$(type -P true)
+}
+
+src_compile() {
+ cd nautilus || die
+ emake
+}
+
+src_install() {
+ cd nautilus || die
+ emake DESTDIR="${D}" install
+ find "${D}" -name '*.la' -exec rm -f {} + || die "la file removal failed"
+}