当鼠标在 GNOME 中进入屏幕上的特定像素范围时激活方法



我正在尝试制作一个功能类似于扩展坞的 GNOME 扩展,除了它显示状态信息(时间、电池等(。我在这里停留的是,当光标进入特定像素区域时,如何显示信息?就像,如果屏幕是 1600x900 像素(只是一个例子(,它应该在x>1550800>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的事情。可能会调查。

最新更新