web-dev-qa-db-ja.com

シェルスクリプトから画面解像度を確認するにはどうすればよいですか?

シェルスクリプトから画面解像度を確認するにはどうすればよいですか?

49
dave4420
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'

コマンドxdpyinfoは、Xサーバーに関するさまざまな情報を表示します。それは多くのことを標準出力に書き込みますが、Word dimensionsで始まる行だけが必要なので、grepを使用します。最後に、sedを使用して結果をクリーンアップします。

56
user31752

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
29

xrandr -qコマンド。必要に応じて、そこからシェルスクリプトを作成できます。

コマンドの詳細については、 ここ またはタイプman xrandrを入力してください

5
ricbax
 ############################################# 
 ##これをビデオ録画プログラムで使用します。
#ウィンドウサイズ--rootオプション-画面のルートウィンドウに関する情報
 echo $(xwininfo -root | grep 'geometry '| awk' {print $ 2;} ')
#出力:1024x768 + 0 + 0 
#高さx幅+ x + y位置。
 ### ################### 
 ##リファレンスマニュアル## 
 man xwininfo 
2

@ 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)
1
campisano

モニター画面データの読み取り

Vesa標準は、モニター画面の解像度を読み取る方法を提供します。

拡張ディスプレイ識別データ(EDI​​D):この規格は、構成情報を伝送するためのデータ形式を定義し、ディスプレイの最適な使用を可能にします。

通常、モニターは複数の解像度とリフレッシュレートをサポートしています。もちろん、誰かが最大の(物理的な)ものを好むでしょう。

このモニターデータを読み取るには、次の解決策のいずれかを試してください。

  • 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
    

    このhexファイルを暗号化するには、 wiki を参照するか、 edid仕様 をダウンロードしてください。

1
abu_bua

xdpyinfoは、いくつかの解析を行います。画面番号と寸法を掘る必要がある多くの情報を提供します

1
Rich Homolka

受け入れられた答えのように、それほど複雑ではありません:

xdpyinfo | grep dimensions

出力例:

dimensions:    1366x768 pixels (361x203 millimeters)
0