Xorg下的xwd截屏功能

X Window dump

xwd指令是Xorg自带的, 自然是在Xorg中使用, Wayland中则不同.

当然, 日常使用中应该不会有太多人会选择用xwd进行截屏操作, 市面上有太多"用户友好"的截屏软件了. xwd只是非常基础的实现了截屏功能, 而且是直接从Xserver进行的操作. 觉得比较有意思, 所以决定还是记录一下.

最初是想看Xserver是否提供了API, 进而可以实现从代码上获取窗口图形. 然而一下子并没有找到相关资料.

截取选定窗口

xwd > filename.xwd
xwd -out filename.xwd

运行指令后, 鼠标会变成十字状, 需要手动选择想要截取的窗口.

截取全屏

xwd -root -out full-screen.xwd

使用id截取窗口

xwd -id id -out filename.xwd

窗口id可以使用指令xwininfo获得. 使用xwininfo需要用户手动选取窗口.

xwininfo除了窗口id, 还会输出许多别的窗口信息.

选取窗口与鼠标事件的冲突

当截取窗口的时候, 因为需要手动选取指定窗口, 所以存在潜在的鼠标事件冲突. 如果截取时有未完成的鼠标时间, xwd就会报错.

可以采用一定的延迟来大概率规避冲突的发生. 但因为日常使用中不太会直接使用xwd, 所以并不是很关心这一方面. 详细了解可以阅读本文末的引用文章.

Reference

简单的图形化屏幕和窗口捕获
Screen capture: xwd