[gnome] Update extensions
This commit is contained in:
@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env gjs -m
|
||||
|
||||
import GLib from 'gi://GLib';
|
||||
import Gio from 'gi://Gio';
|
||||
import GioUnix from 'gi://GioUnix';
|
||||
|
||||
import * as DBusUtils from '../dbusUtils.js';
|
||||
|
||||
async function seekStatusNotifierItems() {
|
||||
// Some indicators (*coff*, dropbox, *coff*) do not re-register again
|
||||
// when the plugin is enabled/disabled, thus we need to manually look
|
||||
// for the objects in the session bus that implements the StatusNotifierItem
|
||||
// interface...
|
||||
const cancellable = null;
|
||||
const bus = Gio.DBus.session;
|
||||
const uniqueNames = await DBusUtils.getBusNames(bus, cancellable);
|
||||
|
||||
const stdErrOutputStream = new GioUnix.OutputStream({fd: 1, closeFd: true});
|
||||
const introspectName = async name => {
|
||||
const nodes = DBusUtils.introspectBusObject(bus, name, cancellable,
|
||||
['org.kde.StatusNotifierItem']);
|
||||
const services = [...uniqueNames.get(name)];
|
||||
|
||||
for await (const node of nodes) {
|
||||
const {path} = node;
|
||||
stdErrOutputStream.write(`${JSON.stringify({services, name, path})}\n`,
|
||||
cancellable);
|
||||
}
|
||||
};
|
||||
await Promise.allSettled([...uniqueNames.keys()].map(n => introspectName(n)));
|
||||
}
|
||||
|
||||
function main(_argv) {
|
||||
const loop = new GLib.MainLoop(null, false);
|
||||
|
||||
let exitCode = 0;
|
||||
seekStatusNotifierItems().catch(e => {
|
||||
logError(e);
|
||||
exitCode = 1;
|
||||
}).finally(() => loop.quit());
|
||||
loop.run();
|
||||
|
||||
return exitCode;
|
||||
}
|
||||
|
||||
imports.system.exit(main(ARGV));
|
||||
Reference in New Issue
Block a user