File gnome-shell-fate324570-Make-GDM-background-image-configurable.patch of Package gnome-shell.11201
From 5039e3ba630ecfcd1b7db70696d4251f53e65cd5 Mon Sep 17 00:00:00 2001
From: Chingkai <qkzhu@suse.com>
Date: Thu, 15 Nov 2018 13:14:08 +0800
Subject: [PATCH] screenShield: Make login and lock screen background
configurable
Add a background for lockDialogGroup to make login/lock background
configurable. The default behavior will be retained to what it is
currently, you can change the wallpaper via schema keys.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/680
---
js/ui/screenShield.js | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index 9f3ff84..d5642ab 100644
--- a/js/ui/screenShield.js
+++ b/js/ui/screenShield.js
@@ -37,6 +37,9 @@ const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
const DISABLE_LOCK_KEY = 'disable-lock-screen';
const LOCKED_STATE_STR = 'screenShield.locked';
+
+const LOCKDIALOG_BACKGROUND_SCHEMA = 'org.gnome.desktop.background.lockdialog';
+
// fraction of screen height the arrow must reach before completing
// the slide up automatically
var ARROW_DRAG_THRESHOLD = 0.1;
@@ -511,6 +514,16 @@ var ScreenShield = new Lang.Class({
this._onStatusChanged(status);
}));
+ // Add background for this._lockDialogGroup
+ this._bgLockDialogGroup = new Clutter.Actor();
+
+ this._lockDialogGroup.add_actor(this._bgLockDialogGroup);
+ this._bgLockDialogGroup.lower_bottom();
+ this._bgManagersLockDialogGroup = [];
+
+ this._updateBgLockDialogGroup();
+ Main.layoutManager.connect('monitors-changed', this._updateBgLockDialogGroup.bind(this));
+
this._screenSaverDBus = new ShellDBus.ScreenSaverDBus(this);
this._smartcardManager = SmartcardManager.getSmartcardManager();
@@ -588,6 +601,35 @@ var ScreenShield = new Lang.Class({
this._syncInhibitor();
},
+ _createBgLockDialogGroup(monitorIndex) {
+ let monitor = Main.layoutManager.monitors[monitorIndex];
+ let widget = new St.Widget({ style_class: 'screen-shield-background',
+ x: monitor.x,
+ y: monitor.y,
+ width: monitor.width,
+ height: monitor.height });
+
+ let bgManager = new Background.BackgroundManager({ container: widget,
+ monitorIndex: monitorIndex,
+ controlPosition: false,
+ settingsSchema: LOCKDIALOG_BACKGROUND_SCHEMA });
+
+ this._bgManagersLockDialogGroup.push(bgManager);
+
+ this._bgLockDialogGroup.add_child(widget);
+ },
+
+ _updateBgLockDialogGroup() {
+ for (let i = 0; i < this._bgManagersLockDialogGroup.length; i++)
+ this._bgManagersLockDialogGroup[i].destroy();
+
+ this._bgManagersLockDialogGroup = [];
+ this._bgLockDialogGroup.destroy_all_children();
+
+ for (let i = 0; i < Main.layoutManager.monitors.length; i++)
+ this._createBgLockDialogGroup(i);
+ },
+
_createBackground: function(monitorIndex) {
let monitor = Main.layoutManager.monitors[monitorIndex];
let widget = new St.Widget({ style_class: 'screen-shield-background',
--
2.16.4