Я боролся с документацией ужасающую Gnome API и пришел с этим расширением:Как сделать Gnome Shell Extension запрос для изменения
const St = imports.gi.St;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
const GLib = imports.gi.GLib;
let label;
function init() {
label = new St.Bin({ style_class: 'panel-label' });
let stuff = GLib.spawn_command_line_sync("cat /home/user/temp/hello")[1].toString();
let text = new St.Label({ text: stuff });
label.set_child(text);
}
function enable() {
Main.panel._rightBox.insert_child_at_index(label, 0);
}
function disable() {
Main.panel._rightBox.remove_child(label);
}
Это следует читать то, что находится в файле hello
и отобразить его в верхняя панель. Однако, если я изменяю содержимое файла hello
, я должен перезапустить Gnome для этого нового контента, который будет показан. Теперь, конечно, есть способ сделать это динамически, но я просто ничего не нашел в документации. Сообщение в панели должно в основном всегда отражать все, что есть в файле. Есть идеи, как это сделать?
Это здорово! Я хочу, чтобы этот материал был где-то документально зафиксирован: Еще один вопрос: как бы вы отслеживали вывод команды? Предположим, я хочу запустить ping и отобразить время каждого пакета в верхней панели? Спасибо за вашу помощь! – mart1n
Это стоит целый вопрос и ответ сам по себе, но этот код C может начать вас: https://github.com/ptomato/gnome-inform7/blob/master/src/spawn.c#L215 Говоря о коде C , к сожалению, ваша лучшая альтернатива надлежащей документации GJS - прочитать C API: https://developer.gnome.org/gio/stable/GFileMonitor.html#GFileMonitor-changed – ptomato