ubuntu – どのようにシェルスクリプトから自分の画面解像度を見つけることができますか?

gnome resolution ubuntu xorg

シェルスクリプトから自分の画面解像度を調べるにはどうすればいいですか?

  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
    

    この16進数ファイルを暗号化するには、 wikiを見るか、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


タイトルとURLをコピーしました