- - 上下文 - -
我正在使用 Openbox 为我的浏览器创建一个专用的工作区/桌面 - 浏览器仅在该工作区上打开,并且在其上创建的任何其他窗口都会被踢到不同的工作区上。
这适用于我的大部分浏览,但对于支持全屏的内容(例如流媒体视频或 Flash 应用程序),切换到“全屏模式”实际上会创建一个新窗口供内容播放......因此 Openbox 将其从专用工作区中踢出。这意味着,当我退出全屏模式时,我会进入随机混乱的工作区,而不是回到浏览器。
我需要编写一个例外,以便 Openbox 让全屏内容保留在专用工作区上。
- - 问题 - -
我想使用xprop
(或只是wmctrl -l
)来获取全屏网页内容播放的窗口的一些信息,但窗口一旦失去焦点就会自动关闭(据我所知),所以我不能只是切换到我的终端并手动执行。我需要某种方法在后台记录信息。理想情况下,我想要某种后台监视器来记录每个打开的窗口的名称。
有没有一种相对简单的方法来编写这个脚本?我确信我可以找到一个可以做到这一点的监控软件包,但这对于我的需要来说似乎有点过分了。
sleep 10; xprop
编辑添加答案:只需按照吉尔斯的建议使用计时器( )即可。为了将来参考,相关行是_OB_APP_CLASS(UTF8_STRING) = "Plugin-container"
答案1
没有想到监视窗口创建的程序,但您不需要它。
您可以wmctrl -l
循环运行或在计时器上运行(例如sleep 10; wmctrl -l
),然后启动全屏应用程序并记录其窗口属性。如果您想要更多信息,您可以执行类似的操作
sleep 10; xprop
10秒后,鼠标光标会发生变化;单击应该xprop
显示有关前台窗口的信息。
或者,使用xdotool
(再次在计时器上或在循环中)及其窗口匹配功能来查找窗口 ID,例如,xdotool --pid
如果全屏窗口位于预先存在的进程中,或者xdotool getwindowfocus
获取getactivewindow
该窗口的窗口 ID有焦点。请注意,前台窗口实际上可能没有输入焦点(某些全屏应用程序在前台显示一个附加的全屏窗口,但将焦点保留在其“正常”窗口中;您可以而是在某个屏幕位置查询窗口,或仅xdotool getmouselocation
用于全屏窗口(对于多显示器设置,如果鼠标光标已位于右侧显示器上)。
或者,在 Linux 上,切换到文本控制台(例如Ctrl++ ),登录,运行Alt,然后您可以访问 GUI(运行、等)。通过一些设置F1export DISPLAY=:0
xprop
xdotool
XAUTHORITY
你可能还需要设置。