【发布时间】:2014-02-04 21:12:54
【问题描述】:
我多年来一直在 Linux 中编程,但在显示方面没有太多知识。现在我被要求编写一个单独的进程来监视用户关注的窗口(可能不是我的进程创建的窗口)并执行一些简单的操作,例如移动和调整大小。
有可能吗?有没有一种通用的方法来实现这一目标?有人可以给我任何提示吗?谢谢!
【问题讨论】:
-
也许你只需要
wmctrl?
标签: linux x11 window-management
我多年来一直在 Linux 中编程,但在显示方面没有太多知识。现在我被要求编写一个单独的进程来监视用户关注的窗口(可能不是我的进程创建的窗口)并执行一些简单的操作,例如移动和调整大小。
有可能吗?有没有一种通用的方法来实现这一目标?有人可以给我任何提示吗?谢谢!
【问题讨论】:
wmctrl?
标签: linux x11 window-management
使用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 在幕后也是这样做的,但这些命令级别相当低,很可能默认安装。
参考资料:
【讨论】: