diff options
| author | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
|---|---|---|
| committer | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
| commit | 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch) | |
| tree | ab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-gnome-theme/theme-data/extensions/installed/appindicatorsupport@rgcjonas.gmail.com/interfaces.js | |
| parent | 5d94c0a7d44a2255b81815a52a7056a94a39842d (diff) | |
| download | RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip | |
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-gnome-theme/theme-data/extensions/installed/appindicatorsupport@rgcjonas.gmail.com/interfaces.js')
| -rw-r--r-- | raveos-gnome-theme/theme-data/extensions/installed/appindicatorsupport@rgcjonas.gmail.com/interfaces.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/raveos-gnome-theme/theme-data/extensions/installed/appindicatorsupport@rgcjonas.gmail.com/interfaces.js b/raveos-gnome-theme/theme-data/extensions/installed/appindicatorsupport@rgcjonas.gmail.com/interfaces.js new file mode 100644 index 0000000..0a97907 --- /dev/null +++ b/raveos-gnome-theme/theme-data/extensions/installed/appindicatorsupport@rgcjonas.gmail.com/interfaces.js @@ -0,0 +1,52 @@ +// This file is part of the AppIndicator/KStatusNotifierItem GNOME Shell extension +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +export let StatusNotifierItem = null; +export let StatusNotifierWatcher = null; +export let DBusMenu = null; + +// loads a xml file into an in-memory string +function loadInterfaceXml(extension, filename) { + const interfacesDir = extension.dir.get_child('interfaces-xml'); + const file = interfacesDir.get_child(filename); + const [result, contents] = imports.gi.GLib.file_get_contents(file.get_path()); + + if (result) { + // HACK: The "" + trick is important as hell because file_get_contents returns + // an object (WTF?) but Gio.makeProxyWrapper requires `typeof() === "string"` + // Otherwise, it will try to check `instanceof XML` and fail miserably because there + // is no `XML` on very recent SpiderMonkey releases (or, if SpiderMonkey is old enough, + // will spit out a TypeError soon). + let nodeContents = contents; + if (contents instanceof Uint8Array) + nodeContents = imports.byteArray.toString(contents); + return `<node>${nodeContents}</node>`; + } else { + throw new Error(`AppIndicatorSupport: Could not load file: ${filename}`); + } +} + +export function initialize(extension) { + StatusNotifierItem = loadInterfaceXml(extension, 'StatusNotifierItem.xml'); + StatusNotifierWatcher = loadInterfaceXml(extension, 'StatusNotifierWatcher.xml'); + DBusMenu = loadInterfaceXml(extension, 'DBusMenu.xml'); +} + +export function destroy() { + StatusNotifierItem = null; + StatusNotifierWatcher = null; + DBusMenu = null; +} |