settings: Add use-default-background preference

Does not support timed backgrounds.

fixes #122
This commit is contained in:
Tor Hedin Brønner
2019-10-10 18:40:28 +02:00
parent 1ff9a6497b
commit dd9b577e29
5 changed files with 29 additions and 49 deletions
+3 -27
View File
@@ -659,6 +659,7 @@
<object class="GtkGrid" id="workspace_default_background_grid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Only supports static backgrounds</property>
<property name="margin_left">12</property>
<property name="margin_right">12</property>
<property name="margin_top">12</property>
@@ -669,7 +670,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Default background</property>
<property name="label" translatable="yes">Use default background</property>
<property name="xalign">0</property>
</object>
<packing>
@@ -678,24 +679,9 @@
</packing>
</child>
<child>
<object class="GtkButton" id="workspace_button_delete_default_background">
<property name="label">Clear</property>
<object class="GtkSwitch" id="use-default-background">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Clear default background</property>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkFileChooserButton" id="workspace_chooser_default_background">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="create_folders">False</property>
<property name="title" translatable="yes">Choose default background</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -796,15 +782,6 @@
<property name="position">2</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="position">1</property>
@@ -846,7 +823,6 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">never</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
+7 -21
View File
@@ -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');
Binary file not shown.
@@ -302,6 +302,11 @@
<summary>Default background image</summary>
</key>
<key type="b" name="use-default-background">
<default>false</default>
<summary>Use the default gnome shell background</summary>
</key>
<key type="b" name="default-show-top-bar">
<default>true</default>
<summary>Show the top bar on workspaces by default</summary>
+14 -1
View File
@@ -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;