本质上,我想从命令行启动一个应用程序并有办法存储该 ID 以供以后使用,以便我可以使用 wmctrl 操作该窗口。像这样的东西
openandgetID "vlc" > ~/.IDofVLC
所以我总是可以读取这个文件来获取它所在窗口的数字 ID,以便我可以操作它。
一般来说,这是不可能的。但是,行为良好_NET_WM_PID
的客户端会为其窗口设置属性,因此一旦获得进程 pid,您就可以等到创建主窗口并遍历所有窗口树检查每个窗口_NET_WM_PID
属性。
您还可以利用启动通知协议 - 简而言之,一些客户端可能会使用包含 pid 和启动状态的启动通知编码的有效负载广播 ClientMessage(将其发送到 root,但您也可以收听它们)。