我从当前的 X 会话开始了另一个 X 会话,如下所示:
xinit xterm -- :128
X 会话在 display 中启动:128
,xterm
在其中运行,一切都很好。
不过,我切换回屏幕:0
(默认),并尝试screencap
新的显示:
$ xwd -root -screen -out screencap.xwd -display :128
生成的文件只是一个黑色的大矩形。我也尝试过使用 imagemagick import
,但无济于事。出了什么问题?
答案1
答案2
事实证明,一旦 tty 失去焦点,x 就会显示空白屏幕并停止重绘,目的是节省 CPU 时间和 RAM。看起来没有办法禁用此功能。
Xvfb
,“X Virtual Framebuffer”是一种特殊的实现,它不将此行为作为其设计和目的的一部分。
我没有启动新的“正常”xsession,而是在虚拟帧缓冲区中运行客户端软件:
xvfb-run <client software> --server-args="-screen 0 [width]x[height]x[bitdepth]"
并截屏如下:
xwd -root -d :99 # (the default for xvfb)
请注意,由于该显示未与终端绑定,因此用户可能很难看到该显示。