diff --git a/Settings.ui b/Settings.ui index ae7ba07..2d71429 100644 --- a/Settings.ui +++ b/Settings.ui @@ -659,6 +659,7 @@ True False + Only supports static backgrounds 12 12 12 @@ -669,7 +670,7 @@ True False True - Default background + Use default background 0 @@ -678,24 +679,9 @@ - - Clear + True True - True - Clear default background - - - 2 - 0 - - - - - True - False - False - Choose default background 1 @@ -796,15 +782,6 @@ 2 - - - - - - - - - 1 @@ -846,7 +823,6 @@ True True never - in True diff --git a/prefs.js b/prefs.js index c1a769b..e6a0490 100644 --- a/prefs.js +++ b/prefs.js @@ -138,29 +138,15 @@ class SettingsWidget { // Workspaces - const defaultBackground = this.builder.get_object('workspace_chooser_default_background'); - const deleteDefaultBackground = this.builder.get_object('workspace_button_delete_default_background'); - - let filename = this._settings.get_string('default-background'); - if (filename === ''){ - defaultBackground.unselect_all(); - deleteDefaultBackground.sensitive = false; - } else { - defaultBackground.set_filename(filename); - deleteDefaultBackground.sensitive = true; - } - - defaultBackground.connect('file-set', () => { - let filename = defaultBackground.get_filename(); - this._settings.set_string('default-background', filename); - deleteDefaultBackground.sensitive = true; + const defaultBackgroundSwitch = this.builder.get_object('use-default-background'); + defaultBackgroundSwitch.state = + this._settings.get_boolean('use-default-background'); + defaultBackgroundSwitch.connect('state-set', (obj, state) => { + this._settings.set_boolean('use-default-background', + state); }); - deleteDefaultBackground.connect('clicked', () => { - this._settings.set_string('default-background', ''); - defaultBackground.unselect_all(); - deleteDefaultBackground.sensitive = false; - }); + let useDefault = this._settings.get_boolean('use-default-background'); const workspaceCombo = this.builder.get_object('workspace_combo_text'); const workspaceStack = this.builder.get_object('workspace_stack'); diff --git a/schemas/gschemas.compiled b/schemas/gschemas.compiled index 2677b0f..7043ea0 100644 Binary files a/schemas/gschemas.compiled and b/schemas/gschemas.compiled differ diff --git a/schemas/org.gnome.shell.extensions.org-scrollwm.gschema.xml b/schemas/org.gnome.shell.extensions.org-scrollwm.gschema.xml index 7426249..29b2d57 100644 --- a/schemas/org.gnome.shell.extensions.org-scrollwm.gschema.xml +++ b/schemas/org.gnome.shell.extensions.org-scrollwm.gschema.xml @@ -302,6 +302,11 @@ Default background image + + false + Use the default gnome shell background + + true Show the top bar on workspaces by default diff --git a/tiling.js b/tiling.js index 283e465..1c2c1df 100644 --- a/tiling.js +++ b/tiling.js @@ -34,6 +34,10 @@ var Me = Extension.imports.tiling; var prefs = Settings.prefs; +var backgroundSettings = new Gio.Settings({ + schema_id: 'org.gnome.desktop.background' +}) + var borderWidth = 8; // Mutter prevints windows from being placed further off the screen than 75 pixels. var stack_margin = 75; @@ -258,6 +262,10 @@ class Space extends Array { const settings = Convenience.getSettings(); this.signals.connect(settings, 'changed::default-background', this.updateBackground.bind(this)); + this.signals.connect(settings, 'changed::use-default-background', + this.updateBackground.bind(this)); + this.signals.connect(backgroundSettings, 'changed::picture-uri', + this.updateBackground.bind(this)); } layoutGrabColumn(column, x, y0, targetWidth, availableHeight, time, grabWindow) { @@ -931,9 +939,14 @@ box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, .7); updateBackground() { let path = this.settings.get_string('background') || prefs.default_background; - let file = Gio.File.new_for_path(path); + let useDefault = Settings.settings.get_boolean('use-default-background'); const BackgroundStyle = imports.gi.GDesktopEnums.BackgroundStyle; let style = BackgroundStyle.ZOOM; + if (!path && useDefault) { + path = backgroundSettings.get_string('picture-uri'); + } + + let file = Gio.File.new_for_commandline_arg(path); if (path === '' || !file.query_exists(null)) { file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/noise-texture.png'); style = BackgroundStyle.WALLPAPER;