2つの画面(実際には2つの「モニター」に1つの「画面」)を持つXを実行しているシステムで時間の経過を生成するには、いずれかの画面のスクリーンショットを撮りますか?
xrandr
出力は次のとおりです(省略)。
画面0:最小320 x 200、現在3840 x 1080、最大16384 x 16384 DFP1の切断(標準左反転右x軸y軸) DFP2の切断(標準左反転右x軸y軸) DFP3の切断(標準左反転右x軸y軸) DFP4の切断(標準左反転右x軸y軸) DFP5接続1920x1080+0+0(標準左反転右x軸y軸)598mm x 336mm 1920x1080 60.00*+ 50.00 59.94 50.00 60.00 59.94 [...] DFP6の切断(標準左反転右x軸y軸) DFP7接続1920x1080+1920+0(標準左反転右x軸y軸)598mm x 336mm 1920x1080 60.00*+ 50.00 59.94 50.00 60.00 59.94 [...] CRT1が切断された(通常の左右のx軸とy軸)
必要:
- 最小限のオーバーヘッド
- デスクトップ環境に依存しない
- 自動
- 名前で画面を選択
1、2、3は、ツールがコマンドラインで最もよく実行されることを意味します。
答え1
ImageMagickはimport
Xorgルートディレクトリのスクリーンショットを自動的に撮影し、-crop
必要な部分だけを使用できます。xrandr
パラメータを提供してくださいcrop
。
import
オーバーヘッドを最小限に抑えるには、スクリーンショットを撮るたびに表示名でコマンドをクエリするのではなく、コマンドを一度設定する必要があります。
mapfile -t displays < <(xrandr | grep ' connected')
get_date='`date +"%Y%m%d-%H%M%S"`'
for (( i=0; i<${#displays[@]}; i++)); do
name=`echo ${displays[i]} | cut -d " " -f 1`
crop=`echo ${displays[i]} | cut -d " " -f 3`
echo import -silent -window root -crop ${crop} \"${name}-${get_date}.png\"
done
ファイルマッピングとforループの手順は次のとおりです。この問題。
これにより、次のコマンドが提供されます。
import -silent -window root -crop 1920x1080+0+0 "DFP5-`date +"%Y%m%d-%H%M%S"`.png"
import -silent -window root -crop 1920x1080+1920+0 "DFP7-`date +"%Y%m%d-%H%M%S"`.png"
whileループでこれを使用して時間の経過(停止ctrl+c
)を実行できるようになりました。
while [ 1 ]; do
import ...
sleep 1 # for 1 second delay between screenshots
done
これが私が知っている唯一の方法です。オーバーヘッドが少ない方法があることを願っています。