GNOME Shell扩展可以移动指针吗? 如果是这样,怎么样?

我想写一个与GNOME Shell中的“focus-follow mouse”设置相反的扩展:我想让我的指针移动到当前焦点窗口的中心。

这可以在GNOME Shell扩展中完成吗? 我看到一些包装xfixes游标的GNOME代码,但是在核心Javascript或任何现有的扩展中找不到任何对程序指针更新的引用。 (我对Google很不好?)

有效的答案包括(1)实现它的示例代码或(2)引用无法完成的规范源代码。


overview.js找到此代码

Gdk = imports.gi.Gdk
let display = Gdk.Display.get_default();
let deviceManager = display.get_device_manager();
let pointer = deviceManager.get_client_pointer();
let [screen, pointerX, pointerY] = pointer.get_position();
pointer.warp(screen, 10, 10);

你是否愿意编写自己的脚本? 如果你是,我找到了三种工具,如果一起使用,可以为你完成工作。

首先,使用xprop来获取您点击的窗口的PID。

接下来,使用xwininfo根据其进程ID获取窗口的维度和位置信息。

最后,使用xdotool计算所述窗口的中心位置并将光标移动到该确切位置。

希望这可以帮助。 我现在没有足够的时间写下脚本(对不起),但这应该足以让你开始。

编辑:根据你的评论,你想留在GNOME js中。 完全可以理解。 您可以使用xdotool内容的方式在GNOME js中调用xdotool (这是在屏幕上更改光标位置的最有效方法):

const Util = imports.misc.util;
Util.spawn(['/bin/bash', '-c', "xrandr --query | awk 'something'"]) # replace the code here wih your own

此代码在此主题中找到。

链接地址: http://www.djcxy.com/p/37773.html

上一篇: Can GNOME Shell extensions move the pointer? If so, how?

下一篇: Can you optimize imports in functions using closures?