diff options
Diffstat (limited to 'community/mate-session-manager')
4 files changed, 7 insertions, 590 deletions
diff --git a/community/mate-session-manager/PKGBUILD b/community/mate-session-manager/PKGBUILD index e493b23eb..fb006dcc8 100644 --- a/community/mate-session-manager/PKGBUILD +++ b/community/mate-session-manager/PKGBUILD @@ -1,41 +1,22 @@ -# $Id: PKGBUILD 105093 2014-01-31 12:59:35Z flexiondotorg $ # Maintainer : Martin Wimpress <code@flexion.org> pkgname=mate-session-manager -pkgver=1.6.1 -pkgrel=10 +pkgver=1.8.0 +pkgrel=1 pkgdesc="The MATE Session Handler" url="http://mate-desktop.org" arch=('i686' 'x86_64') license=('GPL' 'LGPL') depends=('dbus-glib' 'gtk2' 'libsm' 'libxtst' 'mate-desktop' 'mate-polkit' - 'mate-settings-daemon' 'xdg-user-dirs') + 'mate-settings-daemon' 'upower' 'xdg-user-dirs') makedepends=('mate-common' 'perl-xml-parser' 'xmlto') optdepends=('xdg-user-dirs-gtk: Add autostart that prompts to rename user directories when switching locales') options=('!emptydirs') groups=('mate') -source=("http://pub.mate-desktop.org/releases/1.6/${pkgname}-${pkgver}.tar.xz" - f0b5b1ab78879d64f80117415aacf029359afea5.diff - e934e91226e9a93956121c9c84ecf3664fcd68be.diff) -sha1sums=('46188f6c02cc5978688af9d5db4be09f1b9199a5' - '20fb99c29731d05191cd0029d0573db784b06ccf' - '4312495bcd12ca5a20f7d5442b7517902605534c') +source=("http://pub.mate-desktop.org/releases/1.8/${pkgname}-${pkgver}.tar.xz") +sha1sums=('2dbb537ba2cc31a8d4f1fa02afd6dabc2919aaa3') install=${pkgname}.install -prepare() { - cd "${srcdir}/${pkgname}-${pkgver}" - # fix systemd-login1 support for hibernate/suspend - # https://github.com/mate-desktop/mate-session-manager/commit/f0b5b1ab78879d64f80117415aacf029359afea5 - patch -Np1 -i "${srcdir}/f0b5b1ab78879d64f80117415aacf029359afea5.diff" - - # Make upower optional - # https://github.com/mate-desktop/mate-session-manager/commit/e934e91226e9a93956121c9c84ecf3664fcd68be - patch -Np1 -i "${srcdir}/e934e91226e9a93956121c9c84ecf3664fcd68be.diff" - - # Recreate the build system because configure.ac was patched. - autoreconf -fi -} - build() { cd "${srcdir}/${pkgname}-${pkgver}" ./configure \ @@ -43,7 +24,7 @@ build() { --libexecdir=/usr/lib/${pkgname} \ --sysconfdir=/etc \ --localstatedir=/var \ - --disable-upower + --with-gtk=2.0 make } diff --git a/community/mate-session-manager/e934e91226e9a93956121c9c84ecf3664fcd68be.diff b/community/mate-session-manager/e934e91226e9a93956121c9c84ecf3664fcd68be.diff deleted file mode 100644 index bd42a4722..000000000 --- a/community/mate-session-manager/e934e91226e9a93956121c9c84ecf3664fcd68be.diff +++ /dev/null @@ -1,293 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index 37bb191..a9e20ef 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -70,7 +70,6 @@ PKG_CHECK_MODULES(MATE_SESSION, - gio-2.0 >= $GIO_REQUIRED - gtk+-$GTK_API_VERSION >= $GTK_REQUIRED - dbus-glib-1 >= $DBUS_GLIB_REQUIRED -- upower-glib >= $UPOWER_REQUIRED - ) - - PKG_CHECK_MODULES(SESSION_PROPERTIES, -@@ -128,6 +127,24 @@ AM_CONDITIONAL(HAVE_SYSTEMD, test "x$use_systemd" = "xyes") - AC_SUBST(HAVE_SYSTEMD) - - dnl ==================================================================== -+dnl UPOWER -+dnl ==================================================================== -+ -+AC_ARG_ENABLE(upower, -+ AS_HELP_STRING([--enable-upower], -+ [Use upower to suspend/hibernate]), -+ enable_upower=$enableval, -+ enable_upower=yes) -+if test "x$enable_upower" = "xyes"; then -+ PKG_CHECK_MODULES(UPOWER, upower-glib >= $UPOWER_REQUIRED, has_upower=yes, has_upower=no) -+ AC_DEFINE(HAVE_UPOWER, 1, [upower support]) -+ AC_SUBST(UPOWER_CFLAGS) -+ AC_SUBST(UPOWER_LIBS) -+fi -+AM_CONDITIONAL(HAVE_UPOWER, test "x$enable_upower" = "xyes") -+AC_SUBST(HAVE_UPOWER) -+ -+dnl ==================================================================== - dnl X development libraries check - dnl ==================================================================== - -@@ -385,6 +402,7 @@ echo " - GTK+ version: ${with_gtk} - Default WM: ${with_default_wm} - Systemd support: ${use_systemd} -+ Upower support: ${enable_upower} - IPv6 support: ${have_full_ipv6} - Backtrace support: ${have_backtrace} - XRender support: ${have_xrender} -diff --git a/mate-session/Makefile.am b/mate-session/Makefile.am -index f37a0e2..53f0fc7 100644 ---- a/mate-session/Makefile.am -+++ b/mate-session/Makefile.am -@@ -7,6 +7,7 @@ noinst_PROGRAMS = \ - AM_CPPFLAGS = \ - $(MATE_SESSION_CFLAGS) \ - $(SYSTEMD_CFLAGS) \ -+ $(UPOWER_CFLAGS) \ - $(DISABLE_DEPRECATED_CFLAGS) - - AM_CFLAGS = $(WARN_CFLAGS) -@@ -76,6 +77,7 @@ mate_session_LDADD = \ - $(XEXT_LIBS) \ - $(MATE_SESSION_LIBS) \ - $(SYSTEMD_LIBS) \ -+ $(UPOWER_LIBS) \ - $(EXECINFO_LIBS) - - libgsmutil_la_SOURCES = \ -diff --git a/mate-session/gsm-logout-dialog.c b/mate-session/gsm-logout-dialog.c -index 1a79875..323f123 100644 ---- a/mate-session/gsm-logout-dialog.c -+++ b/mate-session/gsm-logout-dialog.c -@@ -27,7 +27,9 @@ - #include <glib/gi18n.h> - #include <gtk/gtk.h> - -+#ifdef HAVE_UPOWER - #include <upower.h> -+#endif - - #include "gsm-logout-dialog.h" - #ifdef HAVE_SYSTEMD -@@ -52,8 +54,9 @@ - struct _GsmLogoutDialogPrivate - { - GsmDialogLogoutType type; -- -+#ifdef HAVE_UPOWER - UpClient *up_client; -+#endif - #ifdef HAVE_SYSTEMD - GsmSystemd *systemd; - #endif -@@ -147,9 +150,9 @@ enum { - gtk_window_set_skip_taskbar_hint (GTK_WINDOW (logout_dialog), TRUE); - gtk_window_set_keep_above (GTK_WINDOW (logout_dialog), TRUE); - gtk_window_stick (GTK_WINDOW (logout_dialog)); -- -+#ifdef HAVE_UPOWER - logout_dialog->priv->up_client = up_client_new (); -- -+#endif - #ifdef HAVE_SYSTEMD - if (LOGIND_RUNNING()) - logout_dialog->priv->systemd = gsm_get_systemd (); -@@ -176,12 +179,12 @@ enum { - g_source_remove (logout_dialog->priv->timeout_id); - logout_dialog->priv->timeout_id = 0; - } -- -+#ifdef HAVE_UPOWER - if (logout_dialog->priv->up_client) { - g_object_unref (logout_dialog->priv->up_client); - logout_dialog->priv->up_client = NULL; - } -- -+#endif - #ifdef HAVE_SYSTEMD - if (logout_dialog->priv->systemd) { - g_object_unref (logout_dialog->priv->systemd); -@@ -201,13 +204,17 @@ enum { - gsm_logout_supports_system_suspend (GsmLogoutDialog *logout_dialog) - { - gboolean ret; -+ ret = FALSE; - #ifdef HAVE_SYSTEMD - if (LOGIND_RUNNING()) - ret = gsm_systemd_can_suspend (logout_dialog->priv->systemd); -+#endif -+#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) - else - #endif -+#ifdef HAVE_UPOWER - ret = up_client_get_can_suspend (logout_dialog->priv->up_client); -- -+#endif - return ret; - } - -@@ -215,13 +222,17 @@ enum { - gsm_logout_supports_system_hibernate (GsmLogoutDialog *logout_dialog) - { - gboolean ret; -+ ret = FALSE; - #ifdef HAVE_SYSTEMD - if (LOGIND_RUNNING()) - ret = gsm_systemd_can_hibernate (logout_dialog->priv->systemd); -+#endif -+#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) - else - #endif -+#ifdef HAVE_UPOWER - ret = up_client_get_can_hibernate (logout_dialog->priv->up_client); -- -+#endif - return ret; - } - -diff --git a/mate-session/gsm-manager.c b/mate-session/gsm-manager.c -index 79d0829..17a20b8 100644 ---- a/mate-session/gsm-manager.c -+++ b/mate-session/gsm-manager.c -@@ -38,7 +38,9 @@ - #include <dbus/dbus-glib.h> - #include <dbus/dbus-glib-lowlevel.h> - -+#ifdef HAVE_UPOWER - #include <upower.h> -+#endif - - #include <gtk/gtk.h> /* for logout dialog */ - #include <gio/gio.h> /* for gsettings */ -@@ -144,9 +146,10 @@ struct GsmManagerPrivate - - DBusGProxy *bus_proxy; - DBusGConnection *connection; -- -+#ifdef HAVE_UPOWER - /* Interface with other parts of the system */ - UpClient *up_client; -+#endif - }; - - enum { -@@ -1097,10 +1100,11 @@ enum { - static void - manager_attempt_hibernate (GsmManager *manager) - { -+#ifdef HAVE_UPOWER - gboolean can_hibernate; - GError *error; - gboolean ret; -- -+#endif - #ifdef HAVE_SYSTEMD - if (LOGIND_RUNNING()) { - -@@ -1113,8 +1117,11 @@ enum { - - gsm_systemd_attempt_hibernate (systemd); - } -+#endif -+#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) - else { - #endif -+#ifdef HAVE_UPOWER - can_hibernate = up_client_get_can_hibernate (manager->priv->up_client); - if (can_hibernate) { - -@@ -1129,7 +1136,8 @@ enum { - g_error_free (error); - } - } --#ifdef HAVE_SYSTEMD -+#endif -+#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) - } - #endif - } -@@ -1137,10 +1145,11 @@ enum { - static void - manager_attempt_suspend (GsmManager *manager) - { -+#ifdef HAVE_UPOWER - gboolean can_suspend; - GError *error; - gboolean ret; -- -+#endif - #ifdef HAVE_SYSTEMD - if (LOGIND_RUNNING()) { - -@@ -1153,8 +1162,11 @@ enum { - - gsm_systemd_attempt_suspend (systemd); - } -+#endif -+#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) - else { - #endif -+#ifdef HAVE_UPOWER - can_suspend = up_client_get_can_suspend (manager->priv->up_client); - if (can_suspend) { - -@@ -1169,7 +1181,8 @@ enum { - g_error_free (error); - } - } --#ifdef HAVE_SYSTEMD -+#endif -+#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) - } - #endif - } -@@ -2341,12 +2354,12 @@ enum { - g_object_unref (manager->priv->settings_screensaver); - manager->priv->settings_screensaver = NULL; - } -- -+#ifdef HAVE_UPOWER - if (manager->priv->up_client != NULL) { - g_object_unref (manager->priv->up_client); - manager->priv->up_client = NULL; - } -- -+#endif - G_OBJECT_CLASS (gsm_manager_parent_class)->dispose (object); - } - -@@ -2553,9 +2566,9 @@ enum { - "status-changed", - G_CALLBACK (on_presence_status_changed), - manager); -- -+#ifdef HAVE_UPOWER - manager->priv->up_client = up_client_new (); -- -+#endif - g_signal_connect (manager->priv->settings_session, - "changed", - G_CALLBACK (on_gsettings_key_changed), -@@ -3224,12 +3237,12 @@ enum { - #endif - gboolean can_suspend; - gboolean can_hibernate; -- -+#ifdef HAVE_UPOWER - g_object_get (manager->priv->up_client, - "can-suspend", &can_suspend, - "can-hibernate", &can_hibernate, - NULL); -- -+#endif - g_debug ("GsmManager: CanShutdown called"); - - g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); diff --git a/community/mate-session-manager/f0b5b1ab78879d64f80117415aacf029359afea5.diff b/community/mate-session-manager/f0b5b1ab78879d64f80117415aacf029359afea5.diff deleted file mode 100644 index ffbe19a5d..000000000 --- a/community/mate-session-manager/f0b5b1ab78879d64f80117415aacf029359afea5.diff +++ /dev/null @@ -1,271 +0,0 @@ -diff --git a/mate-session/gsm-logout-dialog.c b/mate-session/gsm-logout-dialog.c -index 2d2947c..1a79875 100644 ---- a/mate-session/gsm-logout-dialog.c -+++ b/mate-session/gsm-logout-dialog.c -@@ -200,13 +200,29 @@ enum { - static gboolean - gsm_logout_supports_system_suspend (GsmLogoutDialog *logout_dialog) - { -- return up_client_get_can_suspend (logout_dialog->priv->up_client); -+ gboolean ret; -+#ifdef HAVE_SYSTEMD -+ if (LOGIND_RUNNING()) -+ ret = gsm_systemd_can_suspend (logout_dialog->priv->systemd); -+ else -+#endif -+ ret = up_client_get_can_suspend (logout_dialog->priv->up_client); -+ -+ return ret; - } - - static gboolean - gsm_logout_supports_system_hibernate (GsmLogoutDialog *logout_dialog) - { -- return up_client_get_can_hibernate (logout_dialog->priv->up_client); -+ gboolean ret; -+#ifdef HAVE_SYSTEMD -+ if (LOGIND_RUNNING()) -+ ret = gsm_systemd_can_hibernate (logout_dialog->priv->systemd); -+ else -+#endif -+ ret = up_client_get_can_hibernate (logout_dialog->priv->up_client); -+ -+ return ret; - } - - static gboolean -diff --git a/mate-session/gsm-manager.c b/mate-session/gsm-manager.c -index 8143d1f..b4986ac 100644 ---- a/mate-session/gsm-manager.c -+++ b/mate-session/gsm-manager.c -@@ -1109,6 +1109,20 @@ enum { - GError *error; - gboolean ret; - -+#ifdef HAVE_SYSTEMD -+ if (LOGIND_RUNNING()) { -+ -+ GsmSystemd *systemd; -+ -+ systemd = gsm_get_systemd (); -+ -+ /* lock the screen before we suspend */ -+ manager_perhaps_lock (manager); -+ -+ gsm_systemd_attempt_hibernate (systemd); -+ } -+ else { -+#endif - can_hibernate = up_client_get_can_hibernate (manager->priv->up_client); - if (can_hibernate) { - -@@ -1123,6 +1137,9 @@ enum { - g_error_free (error); - } - } -+#ifdef HAVE_SYSTEMD -+ } -+#endif - } - - static void -@@ -1132,6 +1149,20 @@ enum { - GError *error; - gboolean ret; - -+#ifdef HAVE_SYSTEMD -+ if (LOGIND_RUNNING()) { -+ -+ GsmSystemd *systemd; -+ -+ systemd = gsm_get_systemd (); -+ -+ /* lock the screen before we suspend */ -+ manager_perhaps_lock (manager); -+ -+ gsm_systemd_attempt_suspend (systemd); -+ } -+ else { -+#endif - can_suspend = up_client_get_can_suspend (manager->priv->up_client); - if (can_suspend) { - -@@ -1146,6 +1177,9 @@ enum { - g_error_free (error); - } - } -+#ifdef HAVE_SYSTEMD -+ } -+#endif - } - - static void -diff --git a/mate-session/gsm-systemd.c b/mate-session/gsm-systemd.c -index 377f026..dbe8ea0 100644 ---- a/mate-session/gsm-systemd.c -+++ b/mate-session/gsm-systemd.c -@@ -725,6 +725,141 @@ static void gsm_systemd_on_name_owner_changed (DBusGProxy *bus_proxy, - return can_stop; - } - -+gboolean -+gsm_systemd_can_hibernate (GsmSystemd *manager) -+{ -+ gboolean res; -+ gchar *value; -+ gboolean can_hibernate; -+ GError *error; -+ -+ error = NULL; -+ -+ if (!gsm_systemd_ensure_sd_connection (manager, &error)) { -+ g_warning ("Could not connect to Systemd: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+ res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, -+ "CanHibernate", -+ INT_MAX, -+ &error, -+ G_TYPE_INVALID, -+ G_TYPE_STRING, &value, -+ G_TYPE_INVALID); -+ if (res == FALSE) { -+ g_warning ("Could not make DBUS call: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+ can_hibernate = g_strcmp0 (value, "yes") == 0 || -+ g_strcmp0 (value, "challenge") == 0; -+ g_free (value); -+ return can_hibernate; -+} -+ -+gboolean -+gsm_systemd_can_suspend (GsmSystemd *manager) -+{ -+ gboolean res; -+ gchar *value; -+ gboolean can_suspend; -+ GError *error; -+ -+ error = NULL; -+ -+ if (!gsm_systemd_ensure_sd_connection (manager, &error)) { -+ g_warning ("Could not connect to Systemd: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+ res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, -+ "CanSuspend", -+ INT_MAX, -+ &error, -+ G_TYPE_INVALID, -+ G_TYPE_STRING, &value, -+ G_TYPE_INVALID); -+ if (res == FALSE) { -+ g_warning ("Could not make DBUS call: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+ can_suspend = g_strcmp0 (value, "yes") == 0 || -+ g_strcmp0 (value, "challenge") == 0; -+ g_free (value); -+ return can_suspend; -+} -+ -+void -+gsm_systemd_attempt_hibernate (GsmSystemd *manager) -+{ -+ gboolean res; -+ GError *error; -+ -+ error = NULL; -+ -+ if (!gsm_systemd_ensure_sd_connection (manager, &error)) { -+ g_warning ("Could not connect to Systemd: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+ res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, -+ "Hibernate", -+ INT_MAX, -+ &error, -+ G_TYPE_BOOLEAN, TRUE, /* interactive */ -+ G_TYPE_INVALID, -+ G_TYPE_INVALID); -+ if (res == FALSE) { -+ g_warning ("Could not make DBUS call: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+} -+ -+void -+gsm_systemd_attempt_suspend (GsmSystemd *manager) -+{ -+ gboolean res; -+ GError *error; -+ -+ error = NULL; -+ -+ if (!gsm_systemd_ensure_sd_connection (manager, &error)) { -+ g_warning ("Could not connect to Systemd: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+ res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, -+ "Suspend", -+ INT_MAX, -+ &error, -+ G_TYPE_BOOLEAN, TRUE, /* interactive */ -+ G_TYPE_INVALID, -+ G_TYPE_INVALID); -+ if (res == FALSE) { -+ g_warning ("Could not make DBUS call: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+} -+ - gchar * - gsm_systemd_get_current_session_type (GsmSystemd *manager) - { -diff --git a/mate-session/gsm-systemd.h b/mate-session/gsm-systemd.h -index 8e886ba..e0e21c4 100644 ---- a/mate-session/gsm-systemd.h -+++ b/mate-session/gsm-systemd.h -@@ -89,10 +89,18 @@ enum _GsmSystemdError { - - gboolean gsm_systemd_can_restart (GsmSystemd *manager); - -+gboolean gsm_systemd_can_hibernate (GsmSystemd *manager); -+ -+gboolean gsm_systemd_can_suspend (GsmSystemd *manager); -+ - void gsm_systemd_attempt_stop (GsmSystemd *manager); - - void gsm_systemd_attempt_restart (GsmSystemd *manager); - -+void gsm_systemd_attempt_hibernate (GsmSystemd *manager); -+ -+void gsm_systemd_attempt_suspend (GsmSystemd *manager); -+ - void gsm_systemd_set_session_idle (GsmSystemd *manager, - gboolean is_idle); - diff --git a/community/mate-session-manager/mate-session-manager.install b/community/mate-session-manager/mate-session-manager.install index b30edffe9..7af080f58 100644 --- a/community/mate-session-manager/mate-session-manager.install +++ b/community/mate-session-manager/mate-session-manager.install @@ -1,6 +1,6 @@ post_install() { glib-compile-schemas /usr/share/glib-2.0/schemas/ - gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor + gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor } post_upgrade() { |