シェルスクリプトから画面解像度を確認するにはどうすればよいですか?
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
コマンドxdpyinfo
は、Xサーバーに関するさまざまな情報を表示します。それは多くのことを標準出力に書き込みますが、Word dimensions
で始まる行だけが必要なので、grep
を使用します。最後に、sed
を使用して結果をクリーンアップします。
xdpyinfo | grep dimensions
は、全体の解像度を提供します。複数のモニターがある場合は、それらすべての合計になります。 xrandr --current
は、各モニターの解像度を示します。
このスニペットを使用して、フルスクリーンに移動せずにrDesktopの最大解像度を見つけます。
Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)
Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)
出力:
Xaxis = 1280
Yaxis = 1024
マイナスウィンドウの装飾(多かれ少なかれ):
MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))
出力:
MaxRes = 1275x999
これは、フルスクリーンにならない場合のrDesktopの最大解像度です。
終了コマンド:
rdesktop -u $User -P -z -5 -g $MaxRes $Host &
今のところ問題なく動作しますが、十分なテストは行っていません。
もう1つの例は、avconv
を使用したスクリーンキャストです。
avconv -f x11grab -r 15 -s `xrandr --current | grep '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4
xrandr -q
コマンド。必要に応じて、そこからシェルスクリプトを作成できます。
コマンドの詳細については、 ここ またはタイプman xrandrを入力してください
############################################# ##これをビデオ録画プログラムで使用します。 #ウィンドウサイズ--rootオプション-画面のルートウィンドウに関する情報 echo $(xwininfo -root | grep 'geometry '| awk' {print $ 2;} ') #出力:1024x768 + 0 + 0 #高さx幅+ x + y位置。 ### ################### ##リファレンスマニュアル## man xwininfo
@ user31752と@ eliezer-e-vargasの回答を組み合わせた2つの可能な選択肢
より単純な正規表現:
$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p'
1440x900
またはカットを使用:
$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900
の用法 grep '*' | uniq
from @ eliezer-e-vargasはxrandr出力の別の行(例: "1440x900 59.90 * + 59.89")を取得しますが、grep 'connected'は単純な行を取得します(例: "LVDS1 connected 1440x900 + 0 + 0。 .... ")。
@ user31752による正規表現の使用は素晴らしいので、私が使用している行はより単純な正規表現を必要とするか、より単純なcutコマンドで置き換えることができます。
Xrandrの出力例
$ xrandr --current
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 8192 x 8192
LVDS1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
1440x900 59.90*+ 59.89
1360x768 59.80 59.96
1152x864 60.00
1024x768 60.00
800x600 60.32 56.25
640x480 59.94
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
Vesa標準は、モニター画面の解像度を読み取る方法を提供します。
拡張ディスプレイ識別データ(EDID):この規格は、構成情報を伝送するためのデータ形式を定義し、ディスプレイの最適な使用を可能にします。
通常、モニターは複数の解像度とリフレッシュレートをサポートしています。もちろん、誰かが最大の(物理的な)ものを好むでしょう。
このモニターデータを読み取るには、次の解決策のいずれかを試してください。
edid-decode
インストールされていない場合は、次のように入力します
Sudo apt install edid-decode
次に、edid
ファイルを読み取ります
edid-decode /sys/class/drm/card0-eDP-1/edid
read-edid
でインストール
Sudo apt install read-edid
次に、i2cを介して画面モニターデータを読み取り、解析します。
Sudo get-edid | parse-edid
edidデータをhexdump
Edid-toolsがインストールされていない場合は、edid
hex-fileをダンプできます。例:
hd /sys/class/drm/card0-eDP-1/edid
xdpyinfo
は、いくつかの解析を行います。画面番号と寸法を掘る必要がある多くの情報を提供します
受け入れられた答えのように、それほど複雑ではありません:
xdpyinfo | grep dimensions
出力例:
dimensions: 1366x768 pixels (361x203 millimeters)