如何截取非活动窗口的屏幕截图?如果我有 2 个窗口,我想捕获在后台运行的窗口的屏幕截图。
答案1
为了详细说明之前的答案和评论,捕获非活动窗口(如完全或部分隐藏)的屏幕截图的能力似乎取决于窗口管理器。
使用以下(已给出)命令:
import -window <windowid> image.png
或者
xwd -id <windowid> | convert xwd:- image.png
(-
ofconvert
用于使用来自管道的标准输入,xwd:
告诉输入的格式)似乎可以在启示(e17,使用 Fedora 19 进行测试)捕获以下屏幕截图:
- 完全或部分隐藏的窗口;
- 最小化窗口;
- 其他工作区上的窗口。
我检查过开箱(相同配置)和凯德(使用旧的 Scientific Linux 4.8 和最新版本ImageMagick
(是的,令人难以置信的是它编译了......))并且在这两种情况下,屏幕截图仅显示显示层顶部的内容 - 也就是说,仅显示屏幕上已经可见的内容。
要点是该import
命令检查to bemap_state
返回的字段,如果不是,则返回错误。例如可以使用以下命令进行检查:XGetWindowAttributes
IsViewable
map_state
xwininfo -id <windowid> | grep 'Map State'
它似乎总是IsViewable
在 e17 下,而IsUnMapped
一旦窗口最小化或其他什么,它就会在 openbox 和 KDE 下。
虽然不确定为什么当使用其他 WM 部分恢复窗口时,e17 的屏幕截图总是干净的,而它与其他窗口混合,但显然这也与 WM 处理显示的方式有关。
无论如何,显然这是 WM 的问题。如果能有一个 WM 能够和不能对隐藏窗口进行屏幕截图的列表就好了——我不会这样做。
答案2
“不活跃”是什么意思? “没有焦点”或“被其他窗口隐藏”?在第一种情况下,gimp 会毫无问题地执行此操作(文件 -> 创建 -> 屏幕截图)。在第二种情况下,它更困难(如果可能的话)。
答案3
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。并使用
微信信息能够找到窗口的标签或名称或标题。
答案4
kde的解决方案
系统设置->显示和监视器->合成器->始终保留窗口缩略图