Linux puskom-ProLiant-DL385-Gen10 5.4.0-150-generic #167~18.04.1-Ubuntu SMP Wed May 24 00:51:42 UTC 2023 x86_64
/
usr
/
share
/
gnome-shell
/
extensions
/
ubuntu-appindicators@ubuntu.com
/
//usr/share/gnome-shell/extensions/ubuntu-appindicators@ubuntu.com/interfaces.js
// 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. var StatusNotifierItem = loadInterfaceXml("StatusNotifierItem.xml") const Properties = loadInterfaceXml("Properties.xml") var StatusNotifierWatcher = loadInterfaceXml("StatusNotifierWatcher.xml") var DBusMenu = loadInterfaceXml("DBusMenu.xml") // loads a xml file into an in-memory string function loadInterfaceXml(filename) { let extension = imports.misc.extensionUtils.getCurrentExtension() let interfaces_dir = extension.dir.get_child("interfaces-xml") let file = interfaces_dir.get_child(filename) let [ 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). return "<node>" + contents + "</node>" } else { throw new Error("AppIndicatorSupport: Could not load file: "+filename) } }