xwd指令是Xorg自带的, 自然是在Xorg中使用, Wayland中则不同.
当然, 日常使用中应该不会有太多人会选择用xwd进行截屏操作, 市面上有太多"用户友好"的截屏软件了. xwd只是非常基础的实现了截屏功能, 而且是直接从Xserver进行的操作. 觉得比较有意思, 所以决定还是记录一下.
最初是想看Xserver是否提供了API, 进而可以实现从代码上获取窗口图形. 然而一下子并没有找到相关资料.
xwd > filename.xwd
xwd -out filename.xwd
运行指令后, 鼠标会变成十字状, 需要手动选择想要截取的窗口.
xwd -root -out full-screen.xwd
xwd -id id -out filename.xwd
窗口id可以使用指令xwininfo获得. 使用xwininfo需要用户手动选取窗口.
xwininfo除了窗口id, 还会输出许多别的窗口信息.
当截取窗口的时候, 因为需要手动选取指定窗口, 所以存在潜在的鼠标事件冲突. 如果截取时有未完成的鼠标时间, xwd就会报错.
可以采用一定的延迟来大概率规避冲突的发生. 但因为日常使用中不太会直接使用xwd, 所以并不是很关心这一方面. 详细了解可以阅读本文末的引用文章.