iag*_*ito 5 scripting process x11 window wmctrl
我想检索在后台启动的 GUI 程序的 X id,以便处理它们的 Windows 属性。到目前为止我一直在使用这个解决方法:
myprogram &
sleep 1
winID=$(wmctrl -l | awk '/./{line=$0} END{print $1;}')
Run Code Online (Sandbox Code Playgroud)
但这依赖于三个重要假设:
wmctrl该窗口将附加在列表的末尾myprogram打开窗口后是否会发送任何信号?我怎样才能拦截它?
为了在我的程序中获取窗口 ID,我让程序将标题设置为唯一的内容,然后让程序启动wmctrl并解析其输出(而不是启动程序的 shell 脚本),然后报告窗口 ID(大多数通常通过文件)。
由于程序在窗口打开后才会继续,因此您永远不必等待太久。
这当然要求您可以更改myprogram(即从源代码编译)。