我正在尝试制作一个功能类似于扩展坞的 GNOME 扩展,除了它显示状态信息(时间、电池等(。我在这里停留的是,当光标进入特定像素区域时,如何显示信息?就像,如果屏幕是 1600x900 像素(只是一个例子(,它应该在x>1550
和800>y>850
时激活。这不是实际的像素范围,而是一般区域的东西。我的问题是,我怎样才能让它经常检查光标是否在该区域?我可以做一段时间循环,但我认为这将是资源密集型的,必须有更好的方法。有吗?到目前为止,我已经查看了其他扩展以及在线 API,但似乎我找不到任何有用的东西。我看到了关于主循环的一件事,它看起来很有前途,但我并不真正理解它。
提前感谢!
注意,你不能使用无限的while循环,因为它会阻塞shell;你必须使用mainloop。
您可以使用指针观察器(更方便,因为他们添加了空闲监视器检测(:
https://gitlab.gnome.org/GNOME/gnome-shell/blob/master/js/ui/pointerWatcher.js
例:
let PointerWatcher = imports.ui.pointerWatcher;
let watcher = new PointerWatcher.PointerWatcher();
let watch = watcher.addWatch(50, (x, y) => {
let m = Main.layoutManager.currentMonitor;
if ((m.height - y) < 200 && (m.width - x) < 200) {
Main.notify("asdf");
}
});
// watch.remove();
还有那个Meta.Barrier的事情。可能会调查。