diff options
| author | nippy <you@example.com> | 2026-04-18 13:49:56 +0200 |
|---|---|---|
| committer | nippy <you@example.com> | 2026-04-18 13:49:56 +0200 |
| commit | 5d94c0a7d44a2255b81815a52a7056a94a39842d (patch) | |
| tree | 759bdea9645c6a62f9e1e4c001f7d81cccd120d2 /raveos-theme/gnome/theme-data/extensions/installed/user-theme@gnome-shell-extensions.gcampax.github.com/extension.js | |
| parent | e79cdf210b267f21a186255ce1a4d50029439d54 (diff) | |
| download | RaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.tar.gz RaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.zip | |
update Raveos themes
Diffstat (limited to 'raveos-theme/gnome/theme-data/extensions/installed/user-theme@gnome-shell-extensions.gcampax.github.com/extension.js')
| -rw-r--r-- | raveos-theme/gnome/theme-data/extensions/installed/user-theme@gnome-shell-extensions.gcampax.github.com/extension.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/raveos-theme/gnome/theme-data/extensions/installed/user-theme@gnome-shell-extensions.gcampax.github.com/extension.js b/raveos-theme/gnome/theme-data/extensions/installed/user-theme@gnome-shell-extensions.gcampax.github.com/extension.js new file mode 100644 index 0000000..9501335 --- /dev/null +++ b/raveos-theme/gnome/theme-data/extensions/installed/user-theme@gnome-shell-extensions.gcampax.github.com/extension.js @@ -0,0 +1,58 @@ +// SPDX-FileCopyrightText: 2011 John Stowers <john.stowers@gmail.com> +// SPDX-FileCopyrightText: 2011 Giovanni Campagna <gcampagna@src.gnome.org> +// SPDX-FileCopyrightText: 2011 Elad Alfassa <el.il@doom.co.il> +// SPDX-FileCopyrightText: 2014 Florian Müllner <fmuellner@gnome.org> +// +// SPDX-License-Identifier: GPL-2.0-or-later + +import Gio from 'gi://Gio'; + +import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js'; + +import * as Main from 'resource:///org/gnome/shell/ui/main.js'; + +import {getThemeDirs, getModeThemeDirs} from './util.js'; + +const SETTINGS_KEY = 'name'; + +export default class ThemeManager extends Extension { + enable() { + this._settings = this.getSettings(); + this._settings.connectObject(`changed::${SETTINGS_KEY}`, + this._changeTheme.bind(this), this); + this._changeTheme(); + } + + disable() { + this._settings?.disconnectObject(); + this._settings = null; + + Main.setThemeStylesheet(null); + Main.loadTheme(); + } + + _changeTheme() { + let stylesheet = null; + const themeName = this._settings.get_string(SETTINGS_KEY); + + if (themeName) { + const stylesheetPaths = getThemeDirs() + .map(dir => `${dir}/${themeName}/gnome-shell/gnome-shell.css`); + + stylesheetPaths.push(...getModeThemeDirs() + .map(dir => `${dir}/${themeName}.css`)); + + stylesheet = stylesheetPaths.find(path => { + const file = Gio.file_new_for_path(path); + return file.query_exists(null); + }); + } + + if (stylesheet) + log(`loading user theme: ${stylesheet}`); + else + log('loading default theme (Adwaita)'); + Main.setThemeStylesheet(stylesheet); + Main.loadTheme(); + } +} |