シェルスクリプトから自分の画面解像度を調べるにはどうすればいいですか?
51 dave4420 2010-10-06
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
コマンド xdpyinfo
は X サーバに関する様々な情報を表示します。標準出力に多くの情報を書き出しますが、dimensions
で始まる行だけが必要なので、grep
を使います。最後に sed
を使って結果をきれいにします
58 None 2010-10-06
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)
Output:
Xaxis = 1280
Yaxis = 1024
マイナスの窓飾り(多かれ少なかれ)
MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))
Output:
MaxRes = 1275x999
rDesktopの最大解像度はどれかというと、全画面表示にしないといけません
End command:
rdesktop -u $User -P -z -5 -g $MaxRes $Host &
今のところ問題なく動作していますが、十分なテストはしていません
他の例としては、avconv
を使ったスクリーンキャストの場合があります
avconv -f x11grab -r 15 -s `xrandr --current | grep '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4
29 Eliezer E. Vargas 2011-09-22
xrandr -q
コマンドを使うことができます。そこから必要に応じてシェルスクリプトを作成することができます
コマンドの詳細については、こちら または man xrandr と入力してください
5 ricbax 2010-10-06
############################################# ## I use this with a Video Recording Program. # window size --root option - information on the screen's root window echo $(xwininfo -root | grep 'geometry' | awk '{print $2;}') # output(s): 1024x768+0+0 # height x width + x + y positions. ###################### ## Reference Manual ## man xwininfo
2 JimmyLandStudios 2015-11-07
xdpyinfo
は、いくつかの解析を行います。これは多くの情報を提供してくれるので、画面番号や寸法を調べる必要があります
1 Rich Homolka 2010-10-06
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
eliezer-e-vargas から grep '*' | uniq
を使うと、xrandr の出力は別の行になります (例: ” 1440×900 59.90*+ 59.89″ ) 一方、grep ‘connected ‘ はシンプルな行になります (例: “LVDS1 connected 1440×900+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)
1 campisano 2017-05-09
モニター画面のデータを読み取る
vesa規格では、モニタ画面の解像度を読み取る方法を提供しています
Extended Display Identification Data (EDID)。ディスプレイの最適な利用を可能にするため、構成情報を伝送するデータフォーマットを定義しています
モニタは、通常、複数の解像度とリフレッシュレートをサポートしています。もちろん、誰かが最大の(物理的な)ものを好むでしょう
このモニターデータを読み取るには、これらのソリューションのいずれかを試してみてください
edid-decode
インストールされていない場合は、タイプします
sudo apt install edid-decode
そして、
edid
ファイルを読み込んでくださいedid-decode /sys/class/drm/card0-eDP-1/edid
read-edid
Install with
sudo apt install read-edid
そして、画面モニターのデータをi2c経由で読み込んで解析します
sudo get-edid | parse-edid
edidデータをヘキサダンプします
edid-toolsがインストールされていない場合は、
edid
の16進数ファイルをダンプすることができますhd /sys/class/drm/card0-eDP-1/edid
1 abu_bua 2018-09-26
受け入れられた答えのように、しかし、それほど複雑ではありません
xdpyinfo | grep dimensions
出力例
dimensions: 1366x768 pixels (361x203 millimeters)
0 Billal Begueradj 2017-11-20
非常に簡単な方法は、sys-directoryにあるmodes
ファイルを読み出すことです
cat /sys/class/graphics/*/modes
or respectively
cat /sys/class/graphics/*/virtual_size
0 abu_bua 2020-07-08