複数のXserverのスクリーンショット

複数のXserverのスクリーンショット

デスクトップコンピュータの複数のXサーバーで同時にスクリーンショットを撮りたいです。

tty1複数のユーザーが異なる端末(、、、、tty2tty3にログインしており、それらはtty4それぞれ(および、)を使用して複数のXserverを起動します。このようにして、、を使用してそれぞれにアクセスできます。startx /usr/bin/openbox-session -- :1:2:3:4Ctrl+Alt+F8+F9+F10+F11

このデスクトップにはモニターが1つしかありません。

可能であれば、を使用して各Xサーバーのスクリーンショットを撮りたいのですが、scrot現在試しているたびに黒/空の画像が表示されます。そのXサーバーで活動している場合にのみ正しいスクリーンショットを取得できます。

たとえば、開いてCtrl+Alt+F8実行すると正しいスクリーンショットが得られます。正しく理解したら、>を取得した後にscrot test.png設定する必要はありません。しかし、走っていくと黒い画像が現れます。$DISPLAYCtrl+Alt+F8echo $DISPLAY:1sleep 10; scrot test.pngCtrl+Alt+F7

各端末で同時に複数のスクリーンショットを撮るには?

私にとって有益なのは、このソリューションの唯一の問題は、非常に高速なコマンドを実行してもXほど速く応答しないことXephyrです。xdotool

後で参照できるように、4人のユーザーと端末のそれぞれに対して私が行ったことは次のとおりです。

では、~/.profileシステムの起動後に各ユーザーが自動的にログインするように設定しました。たとえば、次のようになります。

if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
     sleep 30 # for some reason it crashes if I do not let 
              # it sleep for a while, not necessarily so long. 
              # I guess it has to do with my "normal" X at DISPLAY=:0 . 
              # Thus for tty2 I let it sleep 40 seconds, 
              # for tty3 50 seconds and so on.
     startx
fi

私はXserver / client(ブラックボックスを含む)とXepyr(オープンボックスを~/.Xsession含む)を次のように始めました。

Xephyr -fullscreen -screen 1920x1200 :11 &
exec blackbox & 
sleep 3 # Perhaps sleeping is redundant.
DISPLAY=:11 /usr/bin/openbox-session

私が望むのは「最終」ウィンドウマネージャですopenbox-sessionopenboxXserverとXserverを同時に使用したいのですが、Xephyr動作 exec openbox & DISPLAY=:11 /usr/bin/openbox-sessionが中断されexec openbox & DISPLAY=:11 /usr/bin/openbox 動作しません。

これにより、ユーザーは:11モニターに表示されている間にスクリーンショットを撮ることができます:0。 (または:13など:14)。

私はそれを試していませんがXVncXephyr私が間違っている場合は訂正してください。

ベストアンサー1

方法#1 - xwdを使用する

コマンドラインツールを使用して、xwd次のようにXディスプレイをインポートできます。

$ xwd -display :1 -root -out 1.xwd

次のように1から4まで繰り返すことができます。

$ for i in {1..4};do xwd -display :$i -root $i.xwd; done

メモ:結果.xwdファイルは特別な種類のX Windowsダンプファイルです。

$ file 1.xwd 
1.xwd: XWD X Window Dump image data, "xwdump", 4160x1440x24

xwud次のように表示できます。

$ xwud -in 1.xwd

あるいは、ImageMagickのdisplayコマンドを使用して表示することもできます。

$ display 1.xwd

方法 #2 - インポートの使用

ImagMagickのimportコマンドを使用して同様の操作を実行することもできます。

$ import -window root -display :0.0 -screen /tmp/0.png

方法#3 - scrotの使用

または、@mikeservがコメントで提案したようにActive Xディスプレイを正しく見つけることができる$DISPLAYように設定してください。scrot

$ DISPLAY=:1 scrot 1.png

これは次のように繰り返すことができます。

$ for i in {1..4};do DISPLAY=:$i scrot $i.png; done

引用する

おすすめ記事