Linux

如何截屏另一個 Xorg 顯示器?

  • June 16, 2016

我從目前的會話開始了另一個 X 會話,如下所示:

xinit xterm -- :128

X 會話在 display 開始:128xterm在其中執行,一切都很好。

不過,我切換回螢幕: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)

請注意,由於它未綁定到終端,因此使用者可能更難獲得此顯示。

引用自:https://unix.stackexchange.com/questions/44821