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 @@
+
+
+