Xorg
自動截取 X 中特定顯示的螢幕截圖
為了在執行 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 表示該工具理想地在命令行中執行。
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
可以在這個問題中找到 mapfile 和 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
這是我知道的唯一方法。希望有更少成本的方法。