我多年来一直在 Linux 中编程,但在显示方面没有太多知识。现在我被要求编写一个单独的进程来监视用户关注的窗口(可能不是我的进程创建的窗口)并执行一些简单的操作,例如移动和调整大小。
可能吗?有没有一种通用的方法来实现这一目标?有人可以给出我可以调查的任何提示吗?谢谢!
我多年来一直在 Linux 中编程,但在显示方面没有太多知识。现在我被要求编写一个单独的进程来监视用户关注的窗口(可能不是我的进程创建的窗口)并执行一些简单的操作,例如移动和调整大小。
可能吗?有没有一种通用的方法来实现这一目标?有人可以给出我可以调查的任何提示吗?谢谢!
使用xdotool。它可以模拟击键、鼠标操作、查找活动窗口等。
示例:在您的(非最大化)终端窗口中运行此命令,它将向下和向右跳 10 个像素:
xdotool windowmove --relative $(xdotool getwindowfocus) 10 10
它应该在大多数发行版中都可用,即sudo apt-get install xdotool
或类似的其他包管理器。
本质上是它的 XWindow 系统完成了这一切。但是,您可以使用简单的实用程序来控制其中的很多内容。例如,如果我想更改 VLC 窗口的标题,我可以这样做:
# this will ask me to point to a window and I will point to VLC player
$ xwininfo -all | grep 'xwininfo: Window id:'
xwininfo: Window id: 0x2000011 (has no name)
这0x2000011
是在我的系统上运行的 VLC Player 的窗口 ID。我们可以使用这个窗口来获取或设置属性。为此,我们可以使用xprop
实用程序:
for p in _NET_WM_VISIBLE_NAME _NET_WM_NAME; \
do xprop -id 0x2000011 -format $p 8s -set $p "MyVLC"; done
这会将 VLC Player 的窗口标题更改为MyVLC。
尽管这xdotool
也是幕后的工作,但这些命令级别相当低,很可能默认安装。
参考: