[gnome-shell-extensions] user-themes: Support session mode styles



commit 5b2bdd138af1d0b1bf1f1a7ad0754cf8b895c612
Author: Florian Müllner <fmuellner gnome org>
Date:   Sat Apr 11 01:31:10 2020 +0200

    user-themes: Support session mode styles
    
    Session mode stylesheets are installed in gnome-shell's theme
    directory instead of a subdirectory of the global themes direc-
    tory.
    
    https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/118

 extensions/user-theme/extension.js |  3 +++
 extensions/user-theme/prefs.js     | 12 ++++++++++++
 extensions/user-theme/util.js      |  7 ++++++-
 3 files changed, 21 insertions(+), 1 deletion(-)
---
diff --git a/extensions/user-theme/extension.js b/extensions/user-theme/extension.js
index dff00f8..9986626 100644
--- a/extensions/user-theme/extension.js
+++ b/extensions/user-theme/extension.js
@@ -40,6 +40,9 @@ class ThemeManager {
             const stylesheetPaths = Util.getThemeDirs()
                 .map(dir => `${dir}/${themeName}/gnome-shell/gnome-shell.css`);
 
+            stylesheetPaths.push(...Util.getModeThemeDirs()
+                .map(dir => `${dir}/${themeName}.css`));
+
             stylesheet = stylesheetPaths.find(path => {
                 let file = Gio.file_new_for_path(path);
                 return file.query_exists(null);
diff --git a/extensions/user-theme/prefs.js b/extensions/user-theme/prefs.js
index 2f52af5..e22b6a3 100644
--- a/extensions/user-theme/prefs.js
+++ b/extensions/user-theme/prefs.js
@@ -74,6 +74,18 @@ class UserThemePrefsWidget extends Gtk.ScrolledWindow {
                 }
             }
         }
+
+        for (const dirName of Util.getModeThemeDirs()) {
+            const dir = Gio.File.new_for_path(dirName);
+            for (const filename of await this._enumerateDir(dir)) {
+                if (!filename.endsWith('.css'))
+                    continue;
+
+                const name = filename.slice(0, -4);
+                if (!this._rows.has(name))
+                    this._addTheme(name);
+            }
+        }
     }
 
     _addTheme(name) {
diff --git a/extensions/user-theme/util.js b/extensions/user-theme/util.js
index c0833b0..e57a99f 100644
--- a/extensions/user-theme/util.js
+++ b/extensions/user-theme/util.js
@@ -1,4 +1,4 @@
-/* exported getThemeDirs */
+/* exported getThemeDirs getModeThemeDirs */
 const { GLib } = imports.gi;
 
 const fn = (...args) => GLib.build_filenamev(args);
@@ -10,3 +10,8 @@ function getThemeDirs() {
         ...GLib.get_system_data_dirs().map(dir => fn(dir, 'themes')),
     ];
 }
+
+function getModeThemeDirs() {
+    return GLib.get_system_data_dirs()
+        .map(dir => fn(dir, 'gnome-shell', 'theme'));
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]