我想编写一个与 GNOME Shell 中的“焦点跟随鼠标”设置相反的扩展:我想让我的指针移动到当前焦点窗口的中心。
这可以在 GNOME Shell 扩展中完成吗?我看到一些包含xfixes cursor的 GNOME 代码,但我在核心 Javascript 或任何现有扩展中都找不到对编程指针更新的任何引用。(我只是不擅长谷歌吗?)
有效答案包括 (1) 执行此操作的示例代码或 (2) 引用说明无法完成的规范来源。
我想编写一个与 GNOME Shell 中的“焦点跟随鼠标”设置相反的扩展:我想让我的指针移动到当前焦点窗口的中心。
这可以在 GNOME Shell 扩展中完成吗?我看到一些包含xfixes cursor的 GNOME 代码,但我在核心 Javascript 或任何现有扩展中都找不到对编程指针更新的任何引用。(我只是不擅长谷歌吗?)
有效答案包括 (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 中。完全可以理解。您可以在 GNOME js 中调用xdotool
(这是更改屏幕上光标位置的最有效方法),方法是:
const Util = imports.misc.util;
Util.spawn(['/bin/bash', '-c', "xrandr --query | awk 'something'"]) # replace the code here wih your own