The last package.

When you do pacman-g2 cinnamon nemo cinnamon-screensaver you can help me test 
Cinnamon.

Roelof
From 138ae242ceea74bcefae9ca99b098c4e94234f70 Mon Sep 17 00:00:00 2001
From: Roelof Wobben <[email protected]>
Date: Fri, 21 Mar 2014 22:50:47 +0100
Subject: [PATCH] cinnamon-screensaver-2.0.3-1-x86_64

new package: cinnamon-screensaver
---
 .../gnome-extra/cinnamon-screensaver/FrugalBuild   |  38 ++++
 .../cinnamon-screensaver/away-message-fixes.patch  | 227 +++++++++++++++++++++
 .../cinnamon-screensaver/cinnamon-screensaver.pam  |   4 +
 .../cinnamon-screensaver/fix-systemd-lock.patch    |  84 ++++++++
 4 files changed, 353 insertions(+)
 create mode 100644 source/gnome-extra/cinnamon-screensaver/FrugalBuild
 create mode 100644 source/gnome-extra/cinnamon-screensaver/away-message-fixes.patch
 create mode 100644 source/gnome-extra/cinnamon-screensaver/cinnamon-screensaver.pam
 create mode 100644 source/gnome-extra/cinnamon-screensaver/fix-systemd-lock.patch

diff --git a/source/gnome-extra/cinnamon-screensaver/FrugalBuild b/source/gnome-extra/cinnamon-screensaver/FrugalBuild
new file mode 100644
index 0000000..16fad3f
--- /dev/null
+++ b/source/gnome-extra/cinnamon-screensaver/FrugalBuild
@@ -0,0 +1,38 @@
+# Compiling time: 0.54 SBU
+# Maintainer: Marius Cirsta , <[email protected]>
+# Contributor: Roelof Wobben <[email protected]>
+
+options+=('asneeded')
+
+pkgname=cinnamon-screensaver
+pkgver=2.0.3
+pkgrel=1
+pkgdesc="Screensaver designed to integrate well with the Cinnamon desktop."
+url="http://cinnamon.linuxmint.com/";
+depends=('gtk+3' 'dbus-glib' 'cinnamon-desktop')
+makedepends=('intltool' 'gnome-doc-utils' 'gobject-introspection>=1.36.0' 'gnome-common')
+groups=('gnome-extra' 'cinnamon')
+archs=('i686' 'x86_64')
+_F_github_author=linuxmint
+_F_github_name=cinnamon-screensaver
+_F_github_tag=y
+_F_gnome_glib=y
+_F_gnome_iconcache=y
+Finclude github gnome-scriptlet
+source=(${source[@]} away-message-fixes.patch fix-systemd-lock.patch cinnamon-screensaver.pam)
+Fconfopts+="--with-mit-ext --with-systemd"
+options+=('scriptlet')
+sha1sums=('c03cb4b13a67baec7e204c403d0c3d0fefaa64d6' \
+          '647f1b06560a6861dc4ade4259434ea8eeb1ba5b' \
+          'b20ca736cad801fe7d550b6895cd553a7df5858f' \
+          '6fc0002826ed2e7c88638d54501185c53c1fac73')
+
+build()
+	{
+		Funpack_github
+                Fbuild
+                Ffile cinnamon-screensaver.pam /etc/pam.d/cinnamon-screensaver
+                Fbuild_gnome_scriptlet
+	}
+
+# optimization OK
diff --git a/source/gnome-extra/cinnamon-screensaver/away-message-fixes.patch b/source/gnome-extra/cinnamon-screensaver/away-message-fixes.patch
new file mode 100644
index 0000000..d12edd5
--- /dev/null
+++ b/source/gnome-extra/cinnamon-screensaver/away-message-fixes.patch
@@ -0,0 +1,227 @@
+diff -Naur cinnamon-screensaver-2.0.3.orig/doc/dbus-interface.html cinnamon-screensaver-2.0.3/doc/dbus-interface.html
+--- cinnamon-screensaver-2.0.3.orig/doc/dbus-interface.html	2013-10-26 19:34:39.000000000 +0200
++++ cinnamon-screensaver-2.0.3/doc/dbus-interface.html	2013-10-29 10:08:06.568038245 +0100
+@@ -70,7 +70,7 @@
+         <code class="literal">Lock</code>
+       </h3></div></div></div><p>
+         Request that the screen be locked.
+-      </p></div><div class="sect2" title="Cycle"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-Cycle"></a>
++      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>in</td><td>string</td><td>the away message</td></tr></tbody></table></div></div><div class="sect2" title="Cycle"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-Cycle"></a>
+         <code class="literal">Cycle</code>
+       </h3></div></div></div><p>
+         Request that the screen saver theme be restarted and, if applicable,
+diff -Naur cinnamon-screensaver-2.0.3.orig/src/cinnamon-screensaver-command.c cinnamon-screensaver-2.0.3/src/cinnamon-screensaver-command.c
+--- cinnamon-screensaver-2.0.3.orig/src/cinnamon-screensaver-command.c	2013-10-26 19:34:39.000000000 +0200
++++ cinnamon-screensaver-2.0.3/src/cinnamon-screensaver-command.c	2013-10-29 22:32:13.127650887 +0100
+@@ -41,7 +41,7 @@
+ static gboolean do_query      = FALSE;
+ static gboolean do_time       = FALSE;
+ 
+-static gchar   *away_message  = "DEFAULT";
++static gchar   *away_message  = "";
+ 
+ static GOptionEntry entries [] = {
+         { "exit", 0, 0, G_OPTION_ARG_NONE, &do_quit,
+@@ -114,7 +114,7 @@
+ static GDBusMessage *
+ screensaver_send_message_string (GDBusConnection *connection,
+                                  const char      *name,
+-                                 gboolean         value)
++                                 gchar           *value)
+ {
+         GDBusMessage *message, *reply;
+         GError       *error;
+@@ -310,14 +310,7 @@
+         }
+ 
+         if (do_lock) {
+-				if (g_strcmp0 (away_message, "DEFAULT") == 0) {
+-					reply = screensaver_send_message_string (connection, "Lock", away_message);
+-				}
+-				else {
+-					gchar * custom_message = g_strdup_printf("CUSTOM###%s", away_message);
+-					reply = screensaver_send_message_string (connection, "Lock", custom_message);
+-					g_free (custom_message);
+-				}
++                reply = screensaver_send_message_string (connection, "Lock", away_message);
+                 if (reply == NULL) {
+                         g_message ("Did not receive a reply from the screensaver.");
+                         goto done;
+diff -Naur cinnamon-screensaver-2.0.3.orig/src/cinnamon-screensaver-dialog.c cinnamon-screensaver-2.0.3/src/cinnamon-screensaver-dialog.c
+--- cinnamon-screensaver-2.0.3.orig/src/cinnamon-screensaver-dialog.c	2013-10-26 19:34:39.000000000 +0200
++++ cinnamon-screensaver-2.0.3/src/cinnamon-screensaver-dialog.c	2013-10-29 18:34:38.042752214 +0100
+@@ -49,7 +49,6 @@
+ static gboolean enable_logout  = FALSE;
+ static gboolean enable_switch  = FALSE;
+ static char    *logout_command = NULL;
+-static char    *away_message     = NULL;
+ 
+ static GOptionEntry entries [] = {
+         { "verbose", 0, 0, G_OPTION_ARG_NONE, &verbose,
+diff -Naur cinnamon-screensaver-2.0.3.orig/src/gs-listener-dbus.c cinnamon-screensaver-2.0.3/src/gs-listener-dbus.c
+--- cinnamon-screensaver-2.0.3.orig/src/gs-listener-dbus.c	2013-10-26 19:34:39.000000000 +0200
++++ cinnamon-screensaver-2.0.3/src/gs-listener-dbus.c	2013-10-30 03:04:42.134732524 +0100
+@@ -570,7 +570,7 @@
+         if (! dbus_message_get_args (message, &error,
+                                      DBUS_TYPE_STRING, &body,
+                                      DBUS_TYPE_INVALID)) {
+-                raise_syntax (connection, message, "ShowMessage");
++                raise_syntax (connection, message, "Lock");
+                 return DBUS_HANDLER_RESULT_HANDLED;
+         }
+         
+@@ -584,6 +584,7 @@
+ 
+         return DBUS_HANDLER_RESULT_HANDLED;
+ }
++
+ static DBusHandlerResult
+ listener_show_message (GSListener     *listener,
+                        DBusConnection *connection,
+@@ -906,7 +907,7 @@
+                 } else if (dbus_message_is_signal (message, SYSTEMD_LOGIND_SESSION_INTERFACE, "Lock")) {
+                         if (_listener_message_path_is_our_session (listener, message)) {
+                                 gs_debug ("systemd requested session lock");
+-                                return listener_lock (listener, connection, message);
++                                g_signal_emit (listener, signals [LOCK], 0, "");
+                         }
+ 
+                         return DBUS_HANDLER_RESULT_HANDLED;
+@@ -948,7 +949,7 @@
+         } else if (dbus_message_is_signal (message, CK_SESSION_INTERFACE, "Lock")) {
+                 if (_listener_message_path_is_our_session (listener, message)) {
+                         gs_debug ("ConsoleKit requested session lock");
+-                        return listener_lock (listener, connection, message);
++                        g_signal_emit (listener, signals [LOCK], 0, "");
+                 }
+ 
+                 return DBUS_HANDLER_RESULT_HANDLED;
+diff -Naur cinnamon-screensaver-2.0.3.orig/src/gs-manager.c cinnamon-screensaver-2.0.3/src/gs-manager.c
+--- cinnamon-screensaver-2.0.3.orig/src/gs-manager.c	2013-10-26 19:34:39.000000000 +0200
++++ cinnamon-screensaver-2.0.3/src/gs-manager.c	2013-10-29 20:27:40.394604570 +0100
+@@ -1097,6 +1097,7 @@
+                 g_object_unref (manager->priv->settings);
+         }
+ 
++        g_free (manager->priv->away_message);
+         g_free (manager->priv->logout_command);
+         g_free (manager->priv->keyboard_command);
+ 
+@@ -1261,6 +1262,8 @@
+ 
+         gs_manager_destroy_windows (manager);
+ 
++        gs_manager_set_away_message (manager, NULL);
++
+         /* reset state */
+         manager->priv->active = FALSE;
+         manager->priv->activate_time = 0;
+@@ -1275,10 +1278,18 @@
+ gs_manager_set_away_message (GSManager   *manager,
+                              const char  *message)
+ {
+-        g_free (manager->priv->logout_command);
+-
+-        manager->priv->away_message = g_strdup(message);
+         GSList *l;
++
++        g_return_if_fail (GS_IS_MANAGER (manager));
++
++        g_free (manager->priv->away_message);
++
++        if (message) {
++                manager->priv->away_message = g_strdup (message);
++        } else {
++                manager->priv->away_message = NULL;
++        }
++
+         for (l = manager->priv->windows; l; l = l->next) {
+                 gs_window_set_away_message (l->data, manager->priv->away_message);
+         }
+@@ -1293,7 +1304,6 @@
+         if (active) {
+                 res = gs_manager_activate (manager);
+         } else {
+-                gs_manager_set_away_message(manager, "");
+                 res = gs_manager_deactivate (manager);
+         }
+ 
+diff -Naur cinnamon-screensaver-2.0.3.orig/src/gs-window-x11.c cinnamon-screensaver-2.0.3/src/gs-window-x11.c
+--- cinnamon-screensaver-2.0.3.orig/src/gs-window-x11.c	2013-10-26 19:34:39.000000000 +0200
++++ cinnamon-screensaver-2.0.3/src/gs-window-x11.c	2013-10-29 23:11:15.240828725 +0100
+@@ -2132,38 +2132,19 @@
+         return utf8_name;
+ }
+ 
+-static gchar * 
+-str_replace(const char *string, const char *delimiter, const char *replacement)
+-{
+-	gchar **split;
+-	gchar *ret;
+-	g_return_val_if_fail(string      != NULL, NULL);
+-	g_return_val_if_fail(delimiter   != NULL, NULL);
+-	g_return_val_if_fail(replacement != NULL, NULL);
+-	split = g_strsplit(string, delimiter, 0);
+-	ret = g_strjoinv(replacement, split);
+-	g_strfreev(split);
+-	return ret;
+-}
+-
+ static void
+ update_clock (GSWindow *window)
+ {	
+-	char *markup;
+-	char *away_message;
+-			
+-	if (window->priv->away_message != NULL && g_str_has_prefix (window->priv->away_message, "CUSTOM###") && g_strcmp0(window->priv->away_message, "") != 0) {		
+-		away_message = str_replace(window->priv->away_message, "CUSTOM###", "");		
+-        markup = g_strdup_printf ("%s\n\n<b><span font_desc=\"Ubuntu 14\" foreground=\"#CCCCCC\"> %s</span></b>\n<b><span font_desc=\"Ubuntu 10\" foreground=\"#ACACAC\">  ~ %s</span></b>", gnome_wall_clock_get_clock (window->priv->clock_tracker), away_message, get_user_display_name());
+-	}
+-	else {
+-		away_message = g_strdup_printf (_("%s"), window->priv->default_message);
+-        markup = g_strdup_printf ("%s\n\n<b><span font_desc=\"Ubuntu 14\" foreground=\"#CCCCCC\">%s</span></b>", gnome_wall_clock_get_clock (window->priv->clock_tracker), away_message);
+-	}
+-			
+-	gtk_label_set_markup (GTK_LABEL (window->priv->clock), markup);
+-	g_free (markup);
+-	g_free (away_message);
++        char *markup;
++
++        if (window->priv->away_message != NULL && g_strcmp0(window->priv->away_message, "") != 0) {
++                markup = g_strdup_printf ("%s\n\n<b><span font_desc=\"Ubuntu 14\" foreground=\"#CCCCCC\"> %s</span></b>\n<b><span font_desc=\"Ubuntu 10\" foreground=\"#ACACAC\">  ~ %s</span></b>", gnome_wall_clock_get_clock (window->priv->clock_tracker), g_markup_escape_text(window->priv->away_message, -1), get_user_display_name());
++        } else {
++                markup = g_strdup_printf ("%s\n\n<b><span font_desc=\"Ubuntu 14\" foreground=\"#CCCCCC\">%s</span></b>", gnome_wall_clock_get_clock (window->priv->clock_tracker), g_markup_escape_text(window->priv->default_message, -1));
++        }
++
++        gtk_label_set_markup (GTK_LABEL (window->priv->clock), markup);
++        g_free (markup);
+ }
+ 
+ static void
+@@ -2197,7 +2178,16 @@
+ gs_window_set_away_message (GSWindow   *window,
+                             const char *message)
+ {
+-        window->priv->away_message = message;
++        g_return_if_fail (GS_IS_WINDOW (window));
++
++        g_free (window->priv->away_message);
++
++        if (message) {
++                window->priv->away_message = g_strdup (message);
++        } else {
++                window->priv->away_message = NULL;
++        }
++
+         update_clock (window);
+ }
+ 
+@@ -2320,6 +2310,7 @@
+ 
+         g_return_if_fail (window->priv != NULL);
+ 
++        g_free (window->priv->away_message);
+         g_free (window->priv->logout_command);
+         g_free (window->priv->keyboard_command);
+ 
+
diff --git a/source/gnome-extra/cinnamon-screensaver/cinnamon-screensaver.pam b/source/gnome-extra/cinnamon-screensaver/cinnamon-screensaver.pam
new file mode 100644
index 0000000..579603a
--- /dev/null
+++ b/source/gnome-extra/cinnamon-screensaver/cinnamon-screensaver.pam
@@ -0,0 +1,4 @@
+#%PAM-1.0
+auth        substack     system-login
+-auth        optional     pam_gnome_keyring.so
+
diff --git a/source/gnome-extra/cinnamon-screensaver/fix-systemd-lock.patch b/source/gnome-extra/cinnamon-screensaver/fix-systemd-lock.patch
new file mode 100644
index 0000000..38d0a1e
--- /dev/null
+++ b/source/gnome-extra/cinnamon-screensaver/fix-systemd-lock.patch
@@ -0,0 +1,84 @@
+From cac2c0ad8f4f40b6b175b9fbcde06935859f1bbc Mon Sep 17 00:00:00 2001
+From: Peter de Ridder <[email protected]>
+Date: Wed, 20 Mar 2013 20:44:51 +0100
+Subject: [PATCH] Use the session path instead of the session id.
+
+---
+ src/gs-listener-dbus.c | 47 +++++++++++++++++++++++++++--------------------
+ 1 file changed, 27 insertions(+), 20 deletions(-)
+
+diff --git a/src/gs-listener-dbus.c b/src/gs-listener-dbus.c
+index 703d9e1..11fb95e 100644
+--- a/src/gs-listener-dbus.c
++++ b/src/gs-listener-dbus.c
+@@ -116,19 +117,8 @@ enum {
+         if (listener->priv->session_id == NULL)
+                 return FALSE;
+ 
+-#ifdef WITH_SYSTEMD
+-        /* The bus object path is simply the actual session ID
+-         * prefixed to make it a bus path */
+-        if (listener->priv->have_systemd)
+-                return g_str_has_prefix (ssid, SYSTEMD_LOGIND_SESSION_PATH "/")
+-                        && strcmp (ssid + sizeof (SYSTEMD_LOGIND_SESSION_PATH),
+-                                   listener->priv->session_id) == 0;
+-#endif
+-
+-#ifdef WITH_CONSOLE_KIT
+         if (strcmp (ssid, listener->priv->session_id) == 0)
+                 return TRUE;
+-#endif
+ 
+         return FALSE;
+ }
+@@ -416,20 +406,37 @@ enum {
+ 
+ #ifdef WITH_SYSTEMD
+         if (listener->priv->have_systemd) {
+-                char *t;
+-                int r;
++                dbus_uint32_t pid = getpid();
+ 
+-                r = sd_pid_get_session (0, &t);
+-                if (r < 0) {
+-                        gs_debug ("Couldn't determine our own session id: %s", strerror (-r));
++                message = dbus_message_new_method_call (SYSTEMD_LOGIND_SERVICE, SYSTEMD_LOGIND_PATH, SYSTEMD_LOGIND_INTERFACE, "GetSessionByPID");
++                if (message == NULL) {
++                        gs_debug ("Couldn't allocate the dbus message");
+                         return NULL;
+                 }
+ 
+-                /* t is allocated with malloc(), we need it with g_malloc() */
+-                ssid = g_strdup(t);
+-                free (t);
++                if (dbus_message_append_args (message, DBUS_TYPE_UINT32, &pid, DBUS_TYPE_INVALID) == FALSE) {
++                        gs_debug ("Couldn't add args to the dbus message");
++                        return NULL;
++                }
++
++                /* FIXME: use async? */
++                reply = dbus_connection_send_with_reply_and_block (listener->priv->system_connection,
++                                                                   message,
++                                                                   -1, &error);
++                dbus_message_unref (message);
++
++                if (dbus_error_is_set (&error)) {
++                        gs_debug ("%s raised:\n %s\n\n", error.name, error.message);
++                        dbus_error_free (&error);
++                        return NULL;
++                }
++
++                dbus_message_iter_init (reply, &reply_iter);
++                dbus_message_iter_get_basic (&reply_iter, &ssid);
++
++                dbus_message_unref (reply);
+ 
+-                return ssid;
++                return g_strdup (ssid);
+         }
+ #endif
+ 
+-- 
+1.8.4
+
+
-- 
1.9.0

_______________________________________________
Frugalware-devel mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-devel

Reply via email to