summaryrefslogtreecommitdiff
path: root/community/cinnamon-session
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-10-09 03:23:29 -0700
committerroot <root@rshg054.dnsready.net>2013-10-09 03:23:29 -0700
commit737832e1bd70820f477143512b5c89a30a6e81d0 (patch)
tree665a7ce2bee287680b34294d30d2a2602da059ea /community/cinnamon-session
parent3a0ad5dc35d5cff379cdfc736b9cae856416fe6a (diff)
Wed Oct 9 03:18:48 PDT 2013
Diffstat (limited to 'community/cinnamon-session')
-rw-r--r--community/cinnamon-session/PKGBUILD18
-rw-r--r--community/cinnamon-session/lightdm_userswitch.patch153
-rw-r--r--community/cinnamon-session/remove_sessionmigration.patch18
3 files changed, 185 insertions, 4 deletions
diff --git a/community/cinnamon-session/PKGBUILD b/community/cinnamon-session/PKGBUILD
index c73cb60eb..944ecce02 100644
--- a/community/cinnamon-session/PKGBUILD
+++ b/community/cinnamon-session/PKGBUILD
@@ -4,27 +4,37 @@
pkgname=cinnamon-session
pkgver=2.0.0
-pkgrel=1
+pkgrel=2
pkgdesc="The Cinnamon Session Handler"
arch=(i686 x86_64)
license=(GPL LGPL)
-depends=(systemd dconf gsettings-desktop-schemas gtk3
- hicolor-icon-theme libgl libsm libxtst upower)
-makedepends=(intltool mesa json-glib gtk-doc xtrans gnome-common)
+depends=(cinnamon-desktop upower)
+makedepends=(intltool mesa json-glib xtrans gnome-common)
options=('!emptydirs')
install=cinnamon-session.install
url="https://github.com/linuxmint/cinnamon-session"
source=(${pkgname}-${pkgver}.tar.gz::https://github.com/linuxmint/cinnamon-session/archive/${pkgver}.tar.gz
+ lightdm_userswitch.patch
+ remove_sessionmigration.patch
timeout.patch)
sha256sums=('d1eba64a5484f086f257ee75799d12afd77373fbdb0ced8d3ae48eadcd02a878'
+ '20e42cbb5504f67b1da5e1867a220629bc2fe1699cfd52be177a557c4096440b'
+ 'f3c0bc1a3debfaa686230f19ba371b08dd4645064d90ead0c34f465c7d416736'
'ef421a14814c7858490b3a806568ab4ec8a0dc21d390e94f801771c1261bb24a')
prepare() {
cd $pkgname-$pkgver
+ # Add support for lightdm user switching
+ patch -Np1 -i ../lightdm_userswitch.patch
+
+ # Do not try to execute session-migration script (it's specific to Ubuntu)
+ patch -Np1 -i ../remove_sessionmigration.patch
+
# Increase timeout, for slow machines
patch -Np1 -i ../timeout.patch
}
+
build() {
cd $pkgname-$pkgver
./autogen.sh --prefix=/usr --sysconfdir=/etc \
diff --git a/community/cinnamon-session/lightdm_userswitch.patch b/community/cinnamon-session/lightdm_userswitch.patch
new file mode 100644
index 000000000..2fc9fe17b
--- /dev/null
+++ b/community/cinnamon-session/lightdm_userswitch.patch
@@ -0,0 +1,153 @@
+diff --git a/cinnamon-session/csm-manager.c b/cinnamon-session/csm-manager.c
+index e3388b1..a8e63c5 100644
+--- a/cinnamon-session/csm-manager.c
++++ b/cinnamon-session/csm-manager.c
+@@ -1097,44 +1097,20 @@ cancel_end_session (CsmManager *manager)
+ start_phase (manager);
+ }
+
+-
+-static void
+-manager_switch_user (GdkDisplay *display,
+- CsmManager *manager)
+-{
+- GError *error;
+- char *command;
+- GAppLaunchContext *context;
+- GAppInfo *app;
+-
+- /* We have to do this here and in request_switch_user() because this
+- * function can be called at a later time, not just directly after
+- * request_switch_user(). */
+- if (_switch_user_is_locked_down (manager)) {
+- g_warning ("Unable to switch user: User switching has been locked down");
+- return;
+- }
+-
+- command = g_strdup_printf ("%s %s",
+- MDM_FLEXISERVER_COMMAND,
+- MDM_FLEXISERVER_ARGS);
+-
+- error = NULL;
+- context = (GAppLaunchContext*) gdk_display_get_app_launch_context (display);
+- app = g_app_info_create_from_commandline (command, MDM_FLEXISERVER_COMMAND, 0, &error);
+-
+- if (app) {
+- g_app_info_launch (app, NULL, context, &error);
+- g_object_unref (app);
+- }
+-
+- g_free (command);
+- g_object_unref (context);
+-
+- if (error) {
+- g_debug ("CsmManager: Unable to start MDM greeter: %s", error->message);
+- g_error_free (error);
+- }
++static gboolean
++process_is_running (const char * name)
++{
++ int num_processes;
++ char * command = g_strdup_printf ("pidof %s | wc -l", name);
++ FILE *fp = popen(command, "r");
++ fscanf(fp, "%d", &num_processes);
++ pclose(fp);
++ if (num_processes > 0) {
++ return TRUE;
++ }
++ else {
++ return FALSE;
++ }
+ }
+
+ static gboolean
+@@ -1157,7 +1133,7 @@ manager_perhaps_lock (CsmManager *manager)
+
+ /* do this sync to ensure it's on the screen when we start suspending */
+ error = NULL;
+- ret = g_spawn_command_line_sync ("gnome-screensaver-command --lock", NULL, NULL, NULL, &error);
++ ret = g_spawn_command_line_sync ("cinnamon-screensaver-command --lock", NULL, NULL, NULL, &error);
+ if (!ret) {
+ g_warning ("Couldn't lock screen: %s", error->message);
+ g_error_free (error);
+@@ -1165,6 +1141,80 @@ manager_perhaps_lock (CsmManager *manager)
+ }
+
+ static void
++manager_switch_user (GdkDisplay *display,
++ CsmManager *manager)
++{
++ GError *error;
++ char *command;
++ GAppLaunchContext *context;
++ GAppInfo *app;
++
++ /* We have to do this here and in request_switch_user() because this
++ * function can be called at a later time, not just directly after
++ * request_switch_user(). */
++ if (_switch_user_is_locked_down (manager)) {
++ g_warning ("Unable to switch user: User switching has been locked down");
++ return;
++ }
++
++ if (process_is_running("mdm")) {
++ command = g_strdup_printf ("%s %s",
++ MDM_FLEXISERVER_COMMAND,
++ MDM_FLEXISERVER_ARGS);
++
++ error = NULL;
++ context = (GAppLaunchContext*) gdk_display_get_app_launch_context (display);
++ app = g_app_info_create_from_commandline (command, MDM_FLEXISERVER_COMMAND, 0, &error);
++
++ if (app) {
++ g_app_info_launch (app, NULL, context, &error);
++ g_object_unref (app);
++ }
++
++ g_free (command);
++ g_object_unref (context);
++
++ if (error) {
++ g_debug ("CsmManager: Unable to start MDM greeter: %s", error->message);
++ g_error_free (error);
++ }
++ }
++ else if (process_is_running("lightdm")) {
++ const gchar *xdg_seat_path = g_getenv ("XDG_SEAT_PATH");
++ if (xdg_seat_path != NULL) {
++ GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START;
++ GDBusProxy *proxy = NULL;
++ error = NULL;
++
++ proxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM,
++ flags,
++ NULL,
++ "org.freedesktop.DisplayManager",
++ xdg_seat_path,
++ "org.freedesktop.DisplayManager.Seat",
++ NULL,
++ &error);
++ if (proxy != NULL) {
++ manager_perhaps_lock (manager);
++ g_dbus_proxy_call (proxy,
++ "SwitchToGreeter",
++ g_variant_new ("()"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL,
++ NULL,
++ NULL);
++ g_object_unref (proxy);
++ }
++ else {
++ g_debug ("GsmManager: Unable to start LightDM greeter: %s", error->message);
++ g_error_free (error);
++ }
++ }
++ }
++}
++
++static void
+ manager_attempt_hibernate (CsmManager *manager)
+ {
+ if (csm_system_can_hibernate (manager->priv->system)) {
diff --git a/community/cinnamon-session/remove_sessionmigration.patch b/community/cinnamon-session/remove_sessionmigration.patch
new file mode 100644
index 000000000..0016080dd
--- /dev/null
+++ b/community/cinnamon-session/remove_sessionmigration.patch
@@ -0,0 +1,18 @@
+--- a/cinnamon-session/csm-session-fill.c
++++ b/cinnamon-session/csm-session-fill.c
+@@ -228,15 +228,6 @@
+ load_standard_apps (CsmManager *manager,
+ GKeyFile *keyfile)
+ {
+- GError *error;
+-
+- g_debug ("fill: *** Executing user migration");
+- error = NULL;
+- if(!g_spawn_command_line_sync ("session-migration", NULL, NULL, NULL, &error)) {
+- g_warning ("Error while executing session-migration: %s", error->message);
+- g_error_free (error);
+- }
+-
+ g_debug ("fill: *** Adding required components");
+ handle_required_components (keyfile, !csm_manager_get_failsafe (manager),
+ append_required_components_helper, manager);