他のXorgディスプレイのスクリーンショットを撮るには?

他のXorgディスプレイのスクリーンショットを撮るには?

次のように、現在のXセッションから別のXセッションを開始しました。

xinit xterm -- :128

Xセッションはディスプレイから開始して実行され、すべてが正常です:128xterm

しかし、画面:0(デフォルト)に戻り、screencap新しいディスプレイを試してみました。

$ xwd -root -screen -out screencap.xwd -display :128

結果ファイルは大きな黒い長方形です。私もimagemagickを使ってみましたが、import役に立ちませんでした。何が間違っていますか?

答え1

良いscrotこれを行うことができ、テストされました。

xinit thunar -- :128
DISPLAY=:128 scrot

私に正しいスクリーンショットを与えました。

(しかし残念ながらscrotはしばらく維持されませんでした)

答え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)

ディスプレイが端末に縛られていないため、ユーザーがディスプレイを見るのが難しいことがあることに注意してください。

関連情報