我正在尝试制作一个功能类似于扩展坞的 GNOME 扩展,只是它会向您显示状态信息(时间、电池等)。我在这里遇到的问题是,当光标进入特定像素区域时,如何显示信息?比如,如果屏幕是 1600x900 像素(仅举个例子),它应该在 x>1550
和 800>y>850
时激活。那不是实际的像素范围,而是该一般区域中的某些内容。我的问题是,我怎样才能让它经常检查光标是否在那个区域?我可以只做一个 while 循环,但我认为这会占用大量资源,必须有更好的方法。有没有?到目前为止,我已经查看了其他扩展以及在线 API,但似乎找不到任何有用的东西。我看到关于主循环的一件事看起来很有前途,但我并没有真正理解它。
提前致谢!
最佳答案
请注意,您不能使用无限循环,因为它会阻塞 shell;你必须使用主循环。
您可以使用 pointerWatcher(更方便,因为他们添加了空闲监视器检测):
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 的东西。可能会调查。
关于javascript - GNOME 中鼠标进入屏幕特定像素范围时的激活方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50670853/