But it was failing on the third step for Gnome 44.
Applied my own like so, but no luck in making it work and show up with background image for GDM.
diff --git a/data/com.ubuntu.login-screen.gschema.xml.in b/data/com.ubuntu.login-screen.gschema.xml.in
new file mode 100644
index 000000000..360929417
--- /dev/null
+++ b/data/com.ubuntu.login-screen.gschema.xml.in
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemalist gettext-domain="@GETTEXT_PACKAGE@">
+ <enum id="com.ubuntu.login-screen.BackgroundRepeat">
+ <value value="1" nick="default"/>
+ <value value="2" nick="repeat"/>
+ <value value="3" nick="repeat-x"/>
+ <value value="4" nick="repeat-y"/>
+ <value value="5" nick="no-repeat"/>
+ <value value="6" nick="space"/>
+ <value value="7" nick="round"/>
+ </enum>
+ <enum id="com.ubuntu.login-screen.BackgroundSize">
+ <value value="1" nick="default"/>
+ <value value="2" nick="auto"/>
+ <value value="3" nick="cover"/>
+ <value value="4" nick="contain"/>
+ </enum>
+ <schema id="com.ubuntu.login-screen" path="/com/ubuntu/login-screen/">
+ <key name="background-picture-uri" type="s">
+ <default>''</default>
+ <summary>
+ Sets the background image for the login screen.
+ </summary>
+ <description>
+ URI to use for the background image. Note that the backend only
+ supports local (file://) URIs.
+ It overrides the value defined in the default style sheet.
+ </description>
+ </key>
+ <key name="background-color" type="s">
+ <default>''</default>
+ <summary>
+ The background-color property sets the background color.
+ </summary>
+ <description>
+ The background-color property sets the background color to use when
+ the background picture URI is missing or when it doesn't cover the whole background.
+ It overrides the value defined in the default style sheet.
+ </description>
+ </key>
+ <key name="background-repeat" enum="com.ubuntu.login-screen.BackgroundRepeat">
+ <default>'default'</default>
+ <summary>
+ The background-repeat property sets if/how the background image will be repeated.
+ </summary>
+ <description>
+ The background-repeat property sets if/how a background image will be repeated.
+ By default, a background-image is repeated both vertically and horizontally.
+
+ It overrides the value defined in the default style sheet.
+ </description>
+ </key>
+ <key name="background-size" enum="com.ubuntu.login-screen.BackgroundSize">
+ <default>'default'</default>
+ <summary>
+ The background-size property specifies the size of the background image.
+ </summary>
+ <description>
+ The background-size property specifies the size of the background images.
+
+ There are three keywords you can use with this property:
+ auto: The background image is displayed in its original size;
+ cover: Resize the background image to cover the entire container, even if it has to stretch the image or cut a little bit off one of the edges;
+ contain: Resize the background image to make sure the image is fully visible.
+
+ It overrides the value defined in the default style sheet.
+ </description>
+ </key>
+ </schema>
+</schemalist>
\ No newline at end of file
diff --git a/data/meson.build b/data/meson.build
index a31efcc79..4fdf1d37d 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -97,6 +97,12 @@ schema = configure_file(
configuration: schemaconf,
install_dir: schemadir
)
+schemaubuntu = configure_file(
+ input: 'com.ubuntu.login-screen.gschema.xml.in',
+ output: 'com.ubuntu.login-screen.gschema.xml',
+ configuration: schemaconf,
+ install_dir: schemadir
+)
install_data('00_org.gnome.shell.gschema.override', install_dir: schemadir)
if have_systemd
@@ -125,7 +131,7 @@ endif
# for unit tests - gnome.compile_schemas() only looks in srcdir
custom_target('compile-schemas',
- input: schema,
+ input: [schema, schemaubuntu],
output: 'gschemas.compiled',
command: [find_program('glib-compile-schemas'), data_builddir],
build_by_default: true)
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index f8c59fa97..d502c2563 100644
--- a/js/ui/screenShield.js
+++ b/js/ui/screenShield.js
@@ -32,6 +32,12 @@ const DISABLE_LOCK_KEY = 'disable-lock-screen';
const LOCKED_STATE_STR = 'screenShield.locked';
+const LOGINSCREEN_SCHEMA = 'com.ubuntu.login-screen';
+const LOGINSCREEN_BACKGROUND_COLOR_KEY = 'background-color';
+const LOGINSCREEN_BACKGROUND_PICTURE_URI_KEY = 'background-picture-uri';
+const LOGINSCREEN_BACKGROUND_REPEAT_KEY = 'background-repeat';
+const LOGINSCREEN_BACKGROUND_SIZE_KEY = 'background-size';
+
// ScreenShield animation time
// - STANDARD_FADE_TIME is used when the session goes idle
// - MANUAL_FADE_TIME is used for lowering the shield when asked by the user,
@@ -114,6 +120,13 @@ export class ScreenShield extends Signals.EventEmitter {
this._lockSettings = new Gio.Settings({schema_id: LOCKDOWN_SCHEMA});
this._lockSettings.connect(`changed::${DISABLE_LOCK_KEY}`, this._syncInhibitor.bind(this));
+ this._loginscreenSettings = new Gio.Settings({ schema_id: LOGINSCREEN_SCHEMA });
+ this._loginscreenSettings.connect('changed::%s'.format(LOGINSCREEN_BACKGROUND_COLOR_KEY), this._refreshBackground.bind(this));
+ this._loginscreenSettings.connect('changed::%s'.format(LOGINSCREEN_BACKGROUND_PICTURE_URI_KEY), this._refreshBackground.bind(this));
+ this._loginscreenSettings.connect('changed::%s'.format(LOGINSCREEN_BACKGROUND_REPEAT_KEY), this._refreshBackground.bind(this));
+ this._loginscreenSettings.connect('changed::%s'.format(LOGINSCREEN_BACKGROUND_SIZE_KEY), this._refreshBackground.bind(this));
+ this._refreshBackground()
+
this._isModal = false;
this._isGreeter = false;
this._isActive = false;
@@ -214,6 +227,26 @@ export class ScreenShield extends Signals.EventEmitter {
return this._isModal;
}
+ _refreshBackground() {
+ let inline_style = [];
+
+ let backgroundColor = this._loginscreenSettings.get_string(LOGINSCREEN_BACKGROUND_COLOR_KEY);
+ let backgroundPictureUri = this._loginscreenSettings.get_string(LOGINSCREEN_BACKGROUND_PICTURE_URI_KEY);
+ let backgroundRepeat = this._loginscreenSettings.get_string(LOGINSCREEN_BACKGROUND_REPEAT_KEY);
+ let backgroundSize = this._loginscreenSettings.get_string(LOGINSCREEN_BACKGROUND_SIZE_KEY);
+
+ if (backgroundColor != "")
+ inline_style.push("background-color: " + backgroundColor);
+ if (backgroundPictureUri != "")
+ inline_style.push("background-image: url(" + backgroundPictureUri + ")");
+ if (backgroundRepeat != "default")
+ inline_style.push("background-repeat: " + backgroundRepeat);
+ if (backgroundSize != "default")
+ inline_style.push("background-size: " + backgroundSize);
+
+ this._lockDialogGroup.set_style(inline_style.join('; '));
+ }
+
async _syncInhibitor() {
const lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY);
const lockLocked = this._lockSettings.get_boolean(DISABLE_LOCK_KEY);
That looks correct to me and I tried it in a VM as well and could not make it work either. I also tried passing the setting using the new programs.dconf.profiles.gdm.databases option in case extraGSettingsOverrides did not filter through but nada.
Perhaps the layout of the login screen changed since the patch was written so while it applies, it no longer has any effect. Would be nice to get a confirmation from people who used it in the past.