非活动窗口的屏幕截图

spe*_*ala 8 command-line x11 screenshot

如何拍摄非活动窗口的屏幕截图?如果我有 2 个窗口,我想捕获在后台运行的那个的屏幕截图。

Ski*_*rou 9

为了详细说明以前的答案和评论,捕获非活动窗口(如完全或部分隐藏)的屏幕截图的能力似乎取决于窗口管理器。

使用以下(已经给出)命令:

import -window <windowid> image.png
Run Code Online (Sandbox Code Playgroud)

或者

xwd -id <windowid> | convert xwd:- image.png
Run Code Online (Sandbox Code Playgroud)

(the -ofconvert用于使用来自管道的标准输入,xwd:告诉输入的格式)似乎可以在Enlightenment(e17,用 Fedora 19 测试)下捕获以下屏幕截图:

  • 完全或部分隐藏的窗口;
  • 最小化窗口;
  • 其他工作区的窗口。

我检查了Openbox(相同的配置)和KDE(使用旧的 Scientific Linux 4.8 和最新版本的ImageMagick(是的,它编译得令人难以置信……)),在这两种情况下,屏幕截图都只显示显示层顶部的内容——也就是说,只有屏幕上已经可见的内容。

关键是该import命令检查map_stateXGetWindowAttributesto be返回的字段IsViewable,如果没有,则返回错误。可以检查map_state例如使用:

xwininfo -id <windowid> | grep 'Map State'
Run Code Online (Sandbox Code Playgroud)

它似乎总是IsViewable在 e17 下,而IsUnMapped一旦窗口最小化或其他什么,它就在 openbox 和 KDE 下。

不确定为什么当窗口与其他 WM 部分恢复时,屏幕截图总是使用 e17 保持干净,而它与其他窗口混合,但显然这也与 WM 处理显示的方式有关。

无论如何,显然这是WM的问题。最好有一个 WMs 列表能够和不能做隐藏窗口的屏幕截图——我没有这样做。


spe*_*ala 0

for i in `xprop -root|grep "_NET_CLIENT_LIST_STACKING(WINDOW): 窗口 id" |tr '#' ','|tr ',' '\n'| grep 0x`;do xwininfo -id $i|grep "窗口 ID" ;完成

使用上面的内容我能够获取 Windows id。并使用

微信信息
能够找到窗口的标签或名称或标题。

  • `导入-window &lt;window_ID&gt; 截图.png` (2认同)