重要なポイント
-
xrandr コマンドを使用して画面解像度をクエリおよび設定すると、出力を awk で解析して現在の解像度を取得できます (
xrandr | awk -F'[ +]' '/primary/{print $4}'など)。xrandr | awk -F'[ +]' '/primary/{print $4}' - xdpyinfo コマンドは画面に関する詳細情報を提供し、awk を使用して現在の解像度の行を分離できます。また、もう少し操作することで、X および Y 解像度を変数として抽出できます。
Linux コンピュータの現在の画面解像度を確認する必要がある場合は、いくつかのコマンドから選択できます。その機能を Bash スクリプトに組み込むと便利な場合があります。
画面解像度を変更する理由
場合によっては、スクリプトでアプリケーションを起動したり、さらなる処理を実行したりする前に、画面の解像度を知る必要があることがあります。起動しようとしているアプリケーションに解像度をコマンド ライン パラメーターとして渡す必要がある場合や、解像度をリセットし、解像度の変更が成功したかどうかを確認する必要がある場合があります。
解像度を下げると、古い、性能の低いハードウェアで一部のゲームをプレイできるようになります。解像度を手動で前後に変更するのはすぐに面倒になるため、明らかな答えはスクリプト内から変更することです。
これから説明するコマンドは、チェックしたすべてのディストリビューションに標準としてインストールされているため、何もインストールする必要はありません。これらの手法はすぐに使用でき、スクリプトはさまざまなディストリビューション間で移植可能である必要があります。
xrandr コマンドの使用
xrandr コマンドを使用して、画面解像度を設定および照会できます。デフォルトでは、パラメータを指定しないと、画面でサポートされているビデオ モードのリストが生成されます。
xrandr
優先ビデオ モードの後にはプラス記号「+」が続き、現在のビデオ モードの後にはアスタリスク「*」が続きます。
この画面には優先ビデオ モードが 1 つだけあり、それが現在のビデオ モードになります。複数の優先モードを設定できますが、現在のモードは 1 つだけです。つまり、アスタリスクの付いた行を見つけることができれば、現在のビデオ モード設定が何であるかを判断できるということです。
これが実際に行われている例をオンラインで見ることができるかもしれません。彼らは grep を使用してアスタリスクが含まれる行を見つけ、次に sed または awk を使用して関心のある情報を解析します。
しかし、もっと簡単な方法があります。 xrandr からの出力の情報には、現在のビデオ モードの解像度を含む、「接続されたプライマリ」画面の詳細が含まれます。 grep をまったく使用せずに、awk を使用してこれを解析できます。
xrandr | awk -F '[ +]' '/primary/{print $4}'
これが仕組みです。 -F (フィールド区切り文字) オプションを使用して、スペースとプラス記号「+」をフィールド区切り文字として扱うように awk に指示します。 「primary」という単語が含まれる行を検索しています。この単語が選択されたのは、この単語が関心のある行に出現し、xrandr からの出力の他のどこにも出現しないためです。
その行をスペースとプラス記号「+」でフィールドに分割すると、現在の解像度がフィールド 4 にあることを意味します。
awk print コマンドを使用して 4 番目のフィールドを出力します。プラス記号でもフィールドを分割しているため、解像度の後ろの「+0+0」が切り取られ、フィールド 5 と 6 になります。私たちはそれらには興味がありません。
xdpyinfo コマンドの使用
デフォルトでは、xdpyinfo コマンドは、画面および利用可能なビデオ モードに関する多くの情報を表示します。テスト マシンでは 1000 行をはるかに超える出力が生成されます。
xdpyinfo
現在のモードは、他の利用可能なモードよりも詳しく説明されています。現在のモードの解像度を説明する行には、「次元」という単語が含まれています。この単語は出力内の他のどこにも表示されないため、awk を使用して対象の行を分離するために使用できます。
xdpyinfo | awk '/dimensions/ {print $2}'
フィールド区切り文字を指定する必要がないため、xrandr で使用したコマンドよりも単純なコマンドです。 awk はデフォルトでフィールド区切り文字として空白を使用します。xdpyinfo からの出力で対処する必要があるのはそれだけです。解像度は出力行の 2 番目のフィールドで、{print $2} がそれを端末ウィンドウに書き込みます。
スクリプトに組み込む
スクリプトでこれらの手法のいずれかを使用する場合、特別な労力はほとんど必要ありません。現在の画面解像度が特定のニーズを満たしていない場合に処理を続行するか終了するかをスクリプト内で判断できるように、検出した解像度を保持する変数が必要です。
これらの行をエディタにコピーし、ファイルを「get_res.sh」として保存して、エディタを閉じます。
#!/bin/bash
current_res=$(xdpyinfo | awk '/dimensions/ {print $2}' )
echo $current_res
chmod コマンドを使用してスクリプトを実行可能にする必要があります。
chmod + x get_res .sh
これにより、awk コマンドの出力が current_res という変数に割り当てられ、その変数の値がターミナル ウィンドウにエコーされます。スクリプトを実行してみましょう。
./get_res.sh
嬉しいことに、ターミナル ウィンドウでコマンドを手動で実行したときと同じ結果が表示されます。
X 解像度と Y 解像度の分離
X 解像度と Y 解像度を分離したい場合は、そのために数行を追加します。これらの行をエディタにコピーし、ファイルを get_x_y.sh として保存し、エディタを閉じます。
#!/bin/bash
current_res=$(xdpyinfo | awk '/dimensions/ {print $2}' )
current_x=$( echo $current_res | awk -F '[ x]' '{print $1}' )
current_y=$( echo $current_res | awk -F '[ x]' '{print $2}' )
echo $current_res
echo $current_x
echo $current_y
awk を使用して、current_res 変数に格納されている値から X 解像度を抽出し、その結果を current_x という変数に格納できます。このプロセスを繰り返して Y 解像度を抽出し、それを current_y という変数に割り当てます。最後に、3 つの変数すべてを出力します。
繰り返しますが、chmod を使用して実行可能にする必要があります。
chmod + x get_x_y .sh
以下は、テスト マシン上のスクリプトからの出力です。
./get_x_y.sh
X および Y の解像度を個別の変数として指定すると、各次元で比較できるようになります。おそらく、重要なのは水平解像度だけであり、それが最小値を満たしているか、それを超えている限り、スクリプトは続行できます。
甘くてシンプルに保ちましょう
垂直解像度と水平解像度を分離できるため、どちらか一方、または両方をテストして、解像度に依存するスクリプトが続行できるかどうかを確認できます。また、その情報を使用して起動する必要がある他のアプリケーションのコマンド ライン パラメーターとして値を使用することもできます。
これらの値を取得するのに複雑な作業は必要ありません。 awk などの標準 Linux ユーティリティについて少しでも知識があれば、学習に費やした時間は何倍にもなります。





