Linux
如何截屏另一個 Xorg 顯示器?
我從目前的會話開始了另一個 X 會話,如下所示:
xinit xterm -- :128
X 會話在 display 開始
:128
,xterm
在其中執行,一切都很好。不過,我切換回螢幕
:0
(預設),並嘗試screencap
使用新的顯示:$ xwd -root -screen -out screencap.xwd -display :128
結果文件只是一個黑色的大矩形。我也嘗試使用 imagemagick
import
,但無濟於事。出了什麼問題?
看起來
scrot
可以做到,經過測試:xinit thunar -- :128 DISPLAY=:128 scrot
給了我正確的截圖。
(但不幸的是,scrot 已經有一段時間沒有維護了)
事實證明,一旦 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)
請注意,由於它未綁定到終端,因此使用者可能更難獲得此顯示。