diff --git a/dock.js b/dock.js index d3202ad..15da31e 100644 --- a/dock.js +++ b/dock.js @@ -581,6 +581,17 @@ export let Dock = GObject.registerClass( } catch (err) { // ignore } + if (this.dash && c == this.dash._showAppsIcon) { + if (stIcon._defaultIconName === undefined) { + stIcon._defaultIconName = stIcon.icon_name; + } + // themed override; missing names fall back to the stock grid icon + stIcon.fallback_icon_name = stIcon._defaultIconName; + let appsIconName = this.extension.apps_icon_name || ''; + stIcon.icon_name = appsIconName.length + ? appsIconName + : stIcon._defaultIconName; + } } } @@ -658,6 +669,10 @@ export let Dock = GObject.registerClass( } _cleanupIcon(c) { + if (c._icon && c._icon._defaultIconName !== undefined) { + c._icon.icon_name = c._icon._defaultIconName; + delete c._icon._defaultIconName; + } if (c._image && c._image.get_parent()) { c._image.get_parent().remove_child(c._image); } diff --git a/extension.js b/extension.js index 15a7410..6df3a70 100644 --- a/extension.js +++ b/extension.js @@ -530,6 +530,7 @@ export default class Dash2DockLiteExt extends Extension { break; case 'apps-icon': case 'apps-icon-front': + case 'apps-icon-name': case 'calendar-icon': case 'clock-icon': case 'favorites-only': { diff --git a/preferences/keys.js b/preferences/keys.js index 868dd33..d891b22 100644 --- a/preferences/keys.js +++ b/preferences/keys.js @@ -168,6 +168,10 @@ export const SettingsKeys = () => { default_value: false, widget_type: 'switch', }, + 'apps-icon-name': { + default_value: '', + widget_type: 'string', + }, 'trash-icon': { default_value: false, widget_type: 'switch', diff --git a/preferences/prefKeys.js b/preferences/prefKeys.js index 9173087..4b6ae59 100644 --- a/preferences/prefKeys.js +++ b/preferences/prefKeys.js @@ -69,6 +69,10 @@ export let PrefKeys = class { settings.set_double(name, value); break; } + case 'string': { + settings.set_string(name, value); + break; + } case 'color': { settings.set_value(name, new GLib.Variant('(dddd)', value)); break; @@ -146,7 +150,7 @@ export let PrefKeys = class { } case 'string': { key.value = settings.get_string(name); - if (key.object) key.object.set_value(key.value); + if (key.object && key.object.set_text) key.object.set_text(key.value); break; } case 'color': { @@ -264,6 +268,16 @@ export let PrefKeys = class { }); break; } + case 'string': { + signal_id = key.object.connect('changed', (w) => { + let value = w.get_text(); + self.setValue(name, value); + if (key.callback) { + key.callback(value); + } + }); + break; + } case 'color': { signal_id = key.object.connect('color-set', (w) => { let rgba = w.get_rgba(); diff --git a/schemas/gschemas.compiled b/schemas/gschemas.compiled index fe036ce..58f1b84 100644 Binary files a/schemas/gschemas.compiled and b/schemas/gschemas.compiled differ diff --git a/schemas/org.gnome.shell.extensions.dash2dock-lite.gschema.xml b/schemas/org.gnome.shell.extensions.dash2dock-lite.gschema.xml index f743596..ad7e7c7 100644 --- a/schemas/org.gnome.shell.extensions.dash2dock-lite.gschema.xml +++ b/schemas/org.gnome.shell.extensions.dash2dock-lite.gschema.xml @@ -331,6 +331,11 @@ Apps icon at front Position the apps icon at the front. + + '' + Apps icon name + Themed icon name for the apps icon. Leave empty for the default grid icon. + 0 Preferred monitor to dock diff --git a/ui/others.ui b/ui/others.ui index d1991ed..63f2c02 100644 --- a/ui/others.ui +++ b/ui/others.ui @@ -44,6 +44,11 @@ + + + Apps Icon Name (themed icon, empty for default) + +