回答:
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
コマンドxdpyinfo
は、Xサーバーに関するさまざまな情報を表示します。それは多くのことを標準出力に書きますが、単語dimensions
で始まる行だけが必要なので、使用しますgrep
。最後にsed
、結果のクリーニングに使用します。
xdpyinfo
情報にアクセスできない場合はエラーメッセージを出力するため、エラーのリダイレクト先は/dev/null
です。このため、エラーリダイレクトを追加することができますxdpyinfo 2> /dev/null
。したがって、完全なパイプラインは次のようになりますxdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
。これにより、スクリプトがより強固になります。
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 &
今のところうまくいきますが、私は徹底的にテストしていません。
別の例は、次のスクリーンキャストavconv
です:
avconv -f x11grab -r 15 -s `xrandr --current | grep '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4
xdpyinfo: Unable to open display "".
rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}')
。
xrandr --current | grep '*' | awk -v line="$SCREEN" 'NR==line{print $1}' | cut -d 'x' -f1
画面を指定する場合(マルチモニター設定)(SCREEN
1インデックス付き)
############################################# ##ビデオ録画プログラムでこれを使用します。 #ウィンドウサイズ--rootオプション-画面のルートウィンドウに関する情報 echo $(xwininfo -root | grep 'geometry' | awk '{print $ 2;}') #出力:1024x768 + 0 + 0 #高さx幅+ x + yの位置。 ###################### ## 参考マニュアル ## 男xwininfo
xwininfo -root|sed '/Height/!d;s/.* //'
高さとxwininfo -root|sed '/Width/!d;s/.* //'
幅に使用しました。
@ 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
@はエリエゼル-E-バルガスからは(例:「1440×900 59.90 * + 59.89」)を別の行を取得するxrandrを出力で、「接続」のgrepは、(元の簡単なものを取得しながら。「LVDS1は、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)
vesa標準は、モニター画面の解像度を読み取る方法を提供します。
拡張ディスプレイ識別データ(EDID):この規格は、構成情報を伝達するデータ形式を定義し、ディスプレイの最適な使用を可能にします。
モニターは通常、複数の解像度とリフレッシュレートをサポートしています。もちろん、誰かが最大(物理)を好むでしょう。
このモニターデータを読み取るには、次のいずれかのソリューションを試してください。
edid-decode
インストールされていない場合は、次を入力します
sudo apt install edid-decode
次に、edid
ファイルを読む
edid-decode /sys/class/drm/card0-eDP-1/edid
既読
でインストール
sudo apt install read-edid
次に、i2cを介して画面モニターデータを読み取り、解析します
sudo get-edid | parse-edid
edidデータをHexdump
edid-toolsがインストールされていない場合、次のようにedid
16進ファイルをダンプできます。
hd /sys/class/drm/card0-eDP-1/edid
$( )
構文(つまりDIMENSIONS=$(xdpyinfo ...
)を使用して変数に入れます。次に使うsed
2を取得するために、もう一度:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')
とHEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
。