summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhii Riznychenko2021-04-08 21:03:00 +0300
committerSerhii Riznychenko2021-04-08 21:10:51 +0300
commit3f2228f7a2bedf5192ea34ce338ef0714321b6ab (patch)
tree2758ca54f1d06b9b41222815169ce24409a7dcab
downloadaur-3f2228f7a2bedf5192ea34ce338ef0714321b6ab.tar.gz
init package
-rw-r--r--.SRCINFO40
-rw-r--r--PKGBUILD89
-rw-r--r--disable_watchdog.patch25
-rw-r--r--fix-autoconf.patch12
-rw-r--r--fix-systemd-support.patch91
-rw-r--r--gnome-desktop-3.36.patch13
-rw-r--r--gnome-screensaver.pam3
-rw-r--r--lightdm_switch_user.patch100
-rw-r--r--lock_screen_on_suspend.patch51
-rw-r--r--move-desktop-file.patch34
-rw-r--r--recenter.patch16
-rw-r--r--use-screensaver-background.patch53
12 files changed, 527 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..8b383c0edf00
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,40 @@
+pkgbase = gnome-screensaver-no-watchdog
+ pkgdesc = Legacy GNOME screensaver
+ pkgver = 3.6.1
+ pkgrel = 17
+ url = https://wiki.gnome.org/Projects/GnomeScreensaver
+ arch = x86_64
+ license = GPL
+ makedepends = intltool
+ makedepends = gnome-common
+ depends = dbus-glib
+ depends = libgnomekbd
+ depends = gnome-desktop
+ optdepends = gnome-backgrounds: default background
+ provides = gnome-screensaver
+ backup = etc/pam.d/gnome-screensaver
+ source = https://download.gnome.org/sources/gnome-screensaver-no-watchdog/3.6/gnome-screensaver-no-watchdog-3.6.1.tar.xz
+ source = gnome-screensaver.pam
+ source = move-desktop-file.patch
+ source = fix-autoconf.patch
+ source = fix-systemd-support.patch
+ source = lock_screen_on_suspend.patch
+ source = lightdm_switch_user.patch
+ source = use-screensaver-background.patch
+ source = recenter.patch
+ source = gnome-desktop-3.36.patch
+ source = disable_watchdog.patch
+ sha256sums = f39b78d4f7fed748c7f0a31d694112fb907c6d3c4e63db22eb858df07e962cd0
+ sha256sums = b6ea9e2eb586d94bcabb617a8f1c2958111df87afdbb51f645882bccdc15cbda
+ sha256sums = 4bb96f62aa069c83b629204a79a3f63b146bcaf773569aee8b5dd23fbcd88974
+ sha256sums = c4da9c18b543ecbc781c1f103321b324a855bdd0979fd36b437f6033736ad4bb
+ sha256sums = 8aa387578c1756e573f6558a66be25fc96d7e8567fb7bee580159479841f5f45
+ sha256sums = 516c479558576c6c5a2509abfcbf4fdafb5953d252e7a4ab972f9db6137daca8
+ sha256sums = 5d40bd6e1843150912dc52932eaa94c0f6d57931fd45a3769ef40e2335fe3c6f
+ sha256sums = 7161ff962801d9e34ea564c372de4b5f93b30180b83c13aadbc9a8a1cd73ff65
+ sha256sums = 6c428b9296376e4b5e2aaf503a754a1ba58333aab50c82279b7c5615d8dd9e69
+ sha256sums = 412acd14cf665c43a6e2831ed9941fc034174b8beb454210bca8b6068e1239c3
+ sha256sums = f849718a2927276840106a1d3d1bb3ffd713b7ddbe009311935d9ee8134da887
+
+pkgname = gnome-screensaver-no-watchdog
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..7810aaab27d1
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,89 @@
+# Maintainer: Serhii Riznychenko <magnesijium @@ gmail .. com>
+# Contributor: Balló György <ballogyor+arch at gmail dot com>
+# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-screensaver-no-watchdog
+pkgver=3.6.1
+pkgrel=17
+pkgdesc="Legacy GNOME screensaver"
+arch=('x86_64')
+license=('GPL')
+url="https://wiki.gnome.org/Projects/GnomeScreensaver"
+backup=(etc/pam.d/gnome-screensaver)
+depends=('dbus-glib' 'libgnomekbd' 'gnome-desktop')
+makedepends=('intltool' 'gnome-common')
+optdepends=('gnome-backgrounds: default background')
+provides=('gnome-screensaver')
+source=(https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
+ gnome-screensaver.pam
+ move-desktop-file.patch
+ fix-autoconf.patch
+ fix-systemd-support.patch
+ lock_screen_on_suspend.patch
+ lightdm_switch_user.patch
+ use-screensaver-background.patch
+ recenter.patch
+ gnome-desktop-3.36.patch
+ disable_watchdog.patch)
+sha256sums=('f39b78d4f7fed748c7f0a31d694112fb907c6d3c4e63db22eb858df07e962cd0'
+ 'b6ea9e2eb586d94bcabb617a8f1c2958111df87afdbb51f645882bccdc15cbda'
+ '4bb96f62aa069c83b629204a79a3f63b146bcaf773569aee8b5dd23fbcd88974'
+ 'c4da9c18b543ecbc781c1f103321b324a855bdd0979fd36b437f6033736ad4bb'
+ '8aa387578c1756e573f6558a66be25fc96d7e8567fb7bee580159479841f5f45'
+ '516c479558576c6c5a2509abfcbf4fdafb5953d252e7a4ab972f9db6137daca8'
+ '5d40bd6e1843150912dc52932eaa94c0f6d57931fd45a3769ef40e2335fe3c6f'
+ '7161ff962801d9e34ea564c372de4b5f93b30180b83c13aadbc9a8a1cd73ff65'
+ '6c428b9296376e4b5e2aaf503a754a1ba58333aab50c82279b7c5615d8dd9e69'
+ '412acd14cf665c43a6e2831ed9941fc034174b8beb454210bca8b6068e1239c3'
+ 'f849718a2927276840106a1d3d1bb3ffd713b7ddbe009311935d9ee8134da887')
+
+prepare() {
+ cd $pkgname-$pkgver
+
+ # Upstream patch that moves gnome-screensaver desktop file out of autostart
+ patch -Np1 -i ../move-desktop-file.patch
+
+ # Fix build
+ patch -Np1 -i ../fix-autoconf.patch
+
+ # Fix systemd support
+ patch -Np1 -i ../fix-systemd-support.patch
+
+ # Lock screen on suspend with systemd
+ patch -Np1 -i ../lock_screen_on_suspend.patch
+
+ # Add support for user switch with LightDM
+ patch -Np1 -i ../lightdm_switch_user.patch
+
+ # Honour background setting of the lock screen
+ patch -Np1 -i ../use-screensaver-background.patch
+
+ # Restore the original position after shake
+ patch -Np1 -i ../recenter.patch
+
+ # Fix built with gnome-desktop 3.36
+ patch -Np1 -i ../gnome-desktop-3.36.patch
+
+ # Disable watchdog that drops x11 settings
+ patch -Np1 -i ../disable_watchdog.patch
+
+ # Fix build with systemd support
+ sed -i 's/libsystemd-login libsystemd-daemon/libsystemd/' configure.ac
+
+ autoreconf -fi
+}
+
+build() {
+ cd $pkgname-$pkgver
+ CFLAGS+=" -Wno-error=return-type"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib/$pkgname \
+ --with-mit-ext --without-console-kit --with-systemd
+ make
+}
+
+package() {
+ cd $pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+ install -Dm644 ../gnome-screensaver.pam "$pkgdir/etc/pam.d/gnome-screensaver"
+}
diff --git a/disable_watchdog.patch b/disable_watchdog.patch
new file mode 100644
index 000000000000..407c96d8ca09
--- /dev/null
+++ b/disable_watchdog.patch
@@ -0,0 +1,25 @@
+diff --git a/src/gs-watcher-x11.c b/src/gs-watcher-x11.c
+index f0b0d83..89cfc66 100644
+--- a/src/gs-watcher-x11.c
++++ b/src/gs-watcher-x11.c
+@@ -492,7 +492,7 @@ gs_watcher_init (GSWatcher *watcher)
+ /* time before idle signal to send notice signal */
+ watcher->priv->delta_notice_timeout = 10000;
+
+- add_watchdog_timer (watcher, 600000);
++ // add_watchdog_timer (watcher, 600000);
+ }
+
+ static void
+@@ -606,7 +606,7 @@ static gboolean
+ watchdog_timer (GSWatcher *watcher)
+ {
+
+- disable_builtin_screensaver (watcher, FALSE);
++ // disable_builtin_screensaver (watcher, FALSE);
+
+ return TRUE;
+ }
+--
+2.31.1
+
diff --git a/fix-autoconf.patch b/fix-autoconf.patch
new file mode 100644
index 000000000000..653b42bc8e55
--- /dev/null
+++ b/fix-autoconf.patch
@@ -0,0 +1,12 @@
+diff -Naur gnome-screensaver-3.6.1.orig/configure.ac gnome-screensaver-3.6.1/configure.ac
+--- gnome-screensaver-3.6.1.orig/configure.ac 2012-10-16 04:28:59.000000000 +0200
++++ gnome-screensaver-3.6.1/configure.ac 2013-04-10 14:24:44.844833193 +0200
+@@ -10,7 +10,7 @@
+ AM_INIT_AUTOMAKE([1.10 no-dist-gzip dist-xz tar-ustar])
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADERS(config.h)
+
+ AM_MAINTAINER_MODE([enable])
+
diff --git a/fix-systemd-support.patch b/fix-systemd-support.patch
new file mode 100644
index 000000000000..61db060291b8
--- /dev/null
+++ b/fix-systemd-support.patch
@@ -0,0 +1,91 @@
+From cac2c0ad8f4f40b6b175b9fbcde06935859f1bbc Mon Sep 17 00:00:00 2001
+From: Peter de Ridder <peter@xfce.org>
+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
+@@ -25,6 +25,7 @@
+ #include <stdio.h>
+ #include <time.h>
+ #include <string.h>
++#include <unistd.h>
+
+ #include <glib/gi18n.h>
+
+@@ -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
+
diff --git a/gnome-desktop-3.36.patch b/gnome-desktop-3.36.patch
new file mode 100644
index 000000000000..58d92e463a3f
--- /dev/null
+++ b/gnome-desktop-3.36.patch
@@ -0,0 +1,13 @@
+diff -Naur gnome-screensaver-3.6.1.orig/src/gs-manager.c gnome-screensaver-3.6.1/src/gs-manager.c
+--- gnome-screensaver-3.6.1.orig/src/gs-manager.c 2020-03-08 08:53:46.408431578 +0000
++++ gnome-screensaver-3.6.1/src/gs-manager.c 2020-03-08 08:54:31.875738732 +0000
+@@ -788,8 +788,7 @@
+ surface = gnome_bg_create_surface (manager->priv->bg,
+ gdk_window,
+ width,
+- height,
+- FALSE);
++ height);
+ gs_window_set_background_surface (window, surface);
+ cairo_surface_destroy (surface);
+ }
diff --git a/gnome-screensaver.pam b/gnome-screensaver.pam
new file mode 100644
index 000000000000..8d3baf0851c2
--- /dev/null
+++ b/gnome-screensaver.pam
@@ -0,0 +1,3 @@
+#%PAM-1.0
+auth substack system-login
+-auth optional pam_gnome_keyring.so
diff --git a/lightdm_switch_user.patch b/lightdm_switch_user.patch
new file mode 100644
index 000000000000..27f67efc7683
--- /dev/null
+++ b/lightdm_switch_user.patch
@@ -0,0 +1,100 @@
+Description: Under lightdm, use dbus to switch to greeter instead of
+ calling gdmflexiserver
+Author: Marc Deslauriers <marc.deslauriers@canonical.com>
+Forwarded: No, upstream uses GDM
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-screensaver/+bug/950583
+
+Index: gnome-screensaver-3.4.2/src/gs-lock-plug.c
+===================================================================
+--- gnome-screensaver-3.4.2.orig/src/gs-lock-plug.c 2012-06-28 10:50:53.955326278 +1200
++++ gnome-screensaver-3.4.2/src/gs-lock-plug.c 2012-06-28 10:50:58.055326137 +1200
+@@ -148,28 +148,60 @@
+ static void
+ do_user_switch (GSLockPlug *plug)
+ {
+- GAppInfo *app;
+- GAppLaunchContext *context;
+- GError *error;
+- char *command;
+-
+- command = g_strdup_printf ("%s %s",
+- GDM_FLEXISERVER_COMMAND,
+- GDM_FLEXISERVER_ARGS);
++ GError *error = NULL;
+
+- error = NULL;
+- context = (GAppLaunchContext*)gdk_app_launch_context_new ();
+- app = g_app_info_create_from_commandline (command, "gdmflexiserver", 0, &error);
+- if (app)
+- g_app_info_launch (app, NULL, context, &error);
+-
+- g_free (command);
+- g_object_unref (context);
+- g_object_unref (app);
++ /* If running under LightDM switch to the greeter using dbus */
++ if (g_getenv("XDG_SEAT_PATH")) {
++ GDBusConnection *bus;
++ GVariant *result = NULL;
++
++ bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
++ if (error)
++ g_warning ("Failed to get system bus: %s", error->message);
++ g_clear_error (&error);
++
++ if (bus)
++ result = g_dbus_connection_call_sync (bus,
++ "org.freedesktop.DisplayManager",
++ g_getenv ("XDG_SEAT_PATH"),
++ "org.freedesktop.DisplayManager.Seat",
++ "SwitchToGreeter",
++ g_variant_new ("()"),
++ G_VARIANT_TYPE ("()"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL,
++ &error);
++ if (error)
++ g_warning ("Failed to switch to greeter: %s", error->message);
++ g_clear_error (&error);
+
+- if (error != NULL) {
+- gs_debug ("Unable to start GDM greeter: %s", error->message);
+- g_error_free (error);
++ if (result)
++ g_variant_unref (result);
++ } else {
++
++ GAppInfo *app;
++ GAppLaunchContext *context;
++ char *command;
++
++ command = g_strdup_printf ("%s %s",
++ GDM_FLEXISERVER_COMMAND,
++ GDM_FLEXISERVER_ARGS);
++
++ error = NULL;
++ context = (GAppLaunchContext*)gdk_app_launch_context_new ();
++ app = g_app_info_create_from_commandline (command, "gdmflexiserver", 0, &error);
++ if (app)
++ g_app_info_launch (app, NULL, context, &error);
++
++ g_free (command);
++ g_object_unref (context);
++ g_object_unref (app);
++
++ if (error != NULL) {
++ gs_debug ("Unable to start GDM greeter: %s", error->message);
++ g_error_free (error);
++ }
+ }
+ }
+
+@@ -1026,7 +1058,7 @@
+ if (switch_enabled) {
+ gboolean found;
+ found = is_program_in_path (GDM_FLEXISERVER_COMMAND);
+- if (found) {
++ if (found || g_getenv("XDG_SEAT_PATH")) {
+ gtk_widget_show (plug->priv->auth_switch_button);
+ } else {
+ gs_debug ("Waring: GDM flexiserver command not found: %s", GDM_FLEXISERVER_COMMAND);
diff --git a/lock_screen_on_suspend.patch b/lock_screen_on_suspend.patch
new file mode 100644
index 000000000000..5c273c70e4c0
--- /dev/null
+++ b/lock_screen_on_suspend.patch
@@ -0,0 +1,51 @@
+From f8f9beb6a3bf81240d36bfec43e5db9b102ea91e Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martinpitt@gnome.org>
+Date: Wed, 1 May 2013 10:55:49 -0700
+Subject: [PATCH] Lock screen on suspend
+
+Listen for logind's PrepareForSleep signal, and lock the screen (if configured
+to do so). This mirrors what gnome-shell's screensaver does.
+---
+ src/gs-listener-dbus.c | 28 ++++++++++++++++++++++++++++
+ src/gs-listener-dbus.h | 1 +
+ src/gs-monitor.c | 20 ++++++++++++++++++++
+ 3 files changed, 49 insertions(+)
+
+diff --git a/src/gs-listener-dbus.c b/src/gs-listener-dbus.c
+index 7f718fa..49586fd 100644
+--- a/src/gs-listener-dbus.c
++++ b/src/gs-listener-dbus.c
+@@ -871,6 +872,17 @@ listener_dbus_handle_system_message (DBusConnection *connection,
+ }
+
+ return DBUS_HANDLER_RESULT_HANDLED;
++ } else if (dbus_message_is_signal (message, SYSTEMD_LOGIND_INTERFACE, "PrepareForSleep")) {
++ gboolean active;
++ if (dbus_message_get_args (message, NULL,
++ DBUS_TYPE_BOOLEAN, &active,
++ DBUS_TYPE_INVALID) && active) {
++ gs_debug ("systemd notified that system is about to sleep");
++ g_signal_emit (listener, signals [LOCK], 0);
++ } else {
++ gs_debug ("cannot parse PrepareForSleep");
++ }
++ return DBUS_HANDLER_RESULT_HANDLED;
+ } else if (dbus_message_is_signal (message, DBUS_INTERFACE_PROPERTIES, "PropertiesChanged")) {
+
+ if (_listener_message_path_is_our_session (listener, message)) {
+@@ -1370,6 +1392,12 @@ gs_listener_acquire (GSListener *listener,
+ ",interface='"DBUS_INTERFACE_PROPERTIES"'"
+ ",member='PropertiesChanged'",
+ NULL);
++ dbus_bus_add_match (listener->priv->system_connection,
++ "type='signal'"
++ ",sender='"SYSTEMD_LOGIND_SERVICE"'"
++ ",interface='"SYSTEMD_LOGIND_INTERFACE"'"
++ ",member='PrepareForSleep'",
++ NULL);
+
+ return (res != -1);
+ }
+--
+1.8.1.2
+
diff --git a/move-desktop-file.patch b/move-desktop-file.patch
new file mode 100644
index 000000000000..d918405adbc8
--- /dev/null
+++ b/move-desktop-file.patch
@@ -0,0 +1,34 @@
+From 1940dc6bc8ad5ee2c029714efb1276c05ca80bd4 Mon Sep 17 00:00:00 2001
+From: Tim Lunn <tim@feathertop.org>
+Date: Thu, 18 Oct 2012 23:08:56 +0000
+Subject: move gnome-screensaver desktop file out of autostart
+
+https://bugzilla.gnome.org/show_bug.cgi?id=683060
+---
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 1dd5d46..97ffa07 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -47,7 +47,7 @@ noinst_PROGRAMS = \
+ test-window \
+ $(NULL)
+
+-desktopdir = $(sysconfdir)/xdg/autostart
++desktopdir = $(datadir)/applications
+ desktop_in_files = gnome-screensaver.desktop.in
+ desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+ @INTLTOOL_DESKTOP_RULE@
+diff --git a/src/gnome-screensaver.desktop.in.in b/src/gnome-screensaver.desktop.in.in
+index fae80c4..82d6d6f 100644
+--- a/src/gnome-screensaver.desktop.in.in
++++ b/src/gnome-screensaver.desktop.in.in
+@@ -5,7 +5,6 @@ _Comment=Launch screensaver and locker program
+ Icon=preferences-desktop-screensaver
+ Exec=gnome-screensaver
+ OnlyShowIn=GNOME;
+-AutostartCondition=GNOME3 if-session gnome-fallback
+ NoDisplay=true
+ X-GNOME-Autostart-Phase=Application
+ X-GNOME-Autostart-Notify=true
+--
+cgit v0.9.1
diff --git a/recenter.patch b/recenter.patch
new file mode 100644
index 000000000000..e2cdf19a0f00
--- /dev/null
+++ b/recenter.patch
@@ -0,0 +1,16 @@
+diff --git a/src/gs-window-x11.c b/src/gs-window-x11.c
+index d267f59..fbfbd8a 100644
+--- a/src/gs-window-x11.c
++++ b/src/gs-window-x11.c
+@@ -1283,6 +1283,11 @@ shake_dialog (GSWindow *window)
+ g_usleep (10000);
+ }
+
++ gtk_alignment_set_padding (GTK_ALIGNMENT (window->priv->lock_box),
++ 0, 0,
++ 0,
++ 0);
++
+ window->priv->dialog_shake_in_progress = FALSE;
+ maybe_kill_dialog (window);
+ }
diff --git a/use-screensaver-background.patch b/use-screensaver-background.patch
new file mode 100644
index 000000000000..431bb675037c
--- /dev/null
+++ b/use-screensaver-background.patch
@@ -0,0 +1,53 @@
+diff -Naur gnome-screensaver-3.6.1.orig/src/gs-manager.c gnome-screensaver-3.6.1/src/gs-manager.c
+--- gnome-screensaver-3.6.1.orig/src/gs-manager.c 2012-08-20 19:12:39.000000000 +0200
++++ gnome-screensaver-3.6.1/src/gs-manager.c 2014-10-08 03:49:37.877178771 +0200
+@@ -555,40 +555,8 @@
+ gint n_keys,
+ GSManager *manager)
+ {
+-#if 0
+- /* FIXME: since we bind user settings instead of system ones,
+- * watching for changes is no longer valid.
+- */
+ gnome_bg_load_from_preferences (manager->priv->bg,
+ manager->priv->settings);
+-#endif
+-
+- return FALSE;
+-}
+-
+-static GSettings *
+-get_system_settings (void)
+-{
+- GSettings *settings;
+- gchar **keys;
+- gchar **k;
+-
+- /* FIXME: we need to bind system settings instead of user but
+- * that's currently impossible, not implemented yet.
+- * Hence, reset to system default values.
+- */
+- /* TODO: Ideally we would like to bind some other key, screensaver-specific. */
+- settings = g_settings_new ("org.gnome.desktop.background");
+-
+- g_settings_delay (settings);
+-
+- keys = g_settings_list_keys (settings);
+- for (k = keys; *k; k++) {
+- g_settings_reset (settings, *k);
+- }
+- g_strfreev (keys);
+-
+- return settings;
+ }
+
+ static void
+@@ -599,7 +567,7 @@
+ manager->priv->fade = gs_fade_new ();
+ manager->priv->grab = gs_grab_new ();
+
+- manager->priv->settings = get_system_settings ();
++ manager->priv->settings = g_settings_new ("org.gnome.desktop.screensaver");
+ manager->priv->bg = gnome_bg_new ();
+
+ g_signal_connect (manager->priv->bg,