问题描述
我想编写一个简单的 gnome 扩展,从文本文件中在我的顶部栏上打印一些文本。我设法打印了文本,但我无法每 60 秒更新一次。甚至可以使用 gjs 吗?
这是我想出来的:
const {St,clutter} = imports.gi;
const Main = imports.ui.main;
const GLib = imports.gi.GLib;
let panelButton;
function init () {
// Create a Button with "Hello World" text
panelButton = new St.Bin({
style_class : "panel-button",});
let fileContents = String(GLib.file_get_contents("path/to/myfile.txt")[1]);
let panelButtonText = new St.Label({
text : fileContents,y_align: clutter.ActorAlign.CENTER,});
panelButton.set_child(panelButtonText);
}
function enable () {
// Add the button to the panel
Main.panel._centerBox.insert_child_at_index(panelButton,2);
}
function disable () {
// Remove the added button from panel
Main.panel._centerBox.remove_child(panelButton);
}
解决方法
您需要使用 GLib.timeout_add_seconds()
:
GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT,60,() => {
updateLabel(newText);
});
顺便说一下,您可能应该使用 ByteArray.toString()
将从文件中获取的 Uint8Array 转换为字符串。