From 5d94c0a7d44a2255b81815a52a7056a94a39842d Mon Sep 17 00:00:00 2001 From: nippy Date: Sat, 18 Apr 2026 13:49:56 +0200 Subject: update Raveos themes --- .../extension.js | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 raveos-theme/gnome/theme-data/extensions/installed/user-theme@gnome-shell-extensions.gcampax.github.com/extension.js (limited to 'raveos-theme/gnome/theme-data/extensions/installed/user-theme@gnome-shell-extensions.gcampax.github.com/extension.js') 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 +// SPDX-FileCopyrightText: 2011 Giovanni Campagna +// SPDX-FileCopyrightText: 2011 Elad Alfassa +// SPDX-FileCopyrightText: 2014 Florian Müllner +// +// 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(); + } +} -- cgit v1.3