xrandr出力切り替えスクリプトを作成するには?

xrandr出力切り替えスクリプトを作成するには?

2つの出力が並んでおり、i3-wmを使用しています。以下を実行するシェルスクリプトを作成したいと思います。

# if output <BBB> is connected, but off
xrandr --output <BBB> --right-of <AAA> --mode 1920x1080

# if output <BBB> is connected, and on
xrandr --output <BBB> --off

より良いゲームパフォーマンスのためにモニター構成を切り替えています(〜5〜15%FPS増加)。

ベストアンサー1

これは働きます:

xrandr --listactivemonitors | grep <BBB> >/dev/null && xrandr --output <BBB> --off || xrandr --output <BBB> --right-of <AAA> --mode 1920x1080

説明する:

  • xrandr --listactivemonitors現在開いているモニターのみを印刷します。
  • grep <BBB> >/dev/null切り替えたいモニターの名前の前の出力を検索します。見つかった場合、grep はシェルが true と解釈する終了コードを返します。見つからない場合、シェルが false と解釈する終了コードを返します。画面が複雑になるのを防ぐために、出力は/ dev / nullに送信されます。
  • && xrandr --output <BBB> --offgrep がアクティブ・モニター・リストでモニターを検索すると、実行され、モニターがクローズされます。ただし、grep が無効な終了コードで終了すると、評価対象が何であれ、論理 AND 句全体が既に無効であることがわかっているため実行されません。
  • || xrandr --output <BBB> --right-of <AAA> --mode 1920x1080grepがそれを見つけられない場合、この句が実行されてモニタが開きます。前の句(grep ... && xrandr ...)はfalseと評価されているため実行されます。このロジックまたは句が真であることを確認するには、シェルは右側を評価する必要があります。一方、左がすでに真と評価されている場合、右は評価する必要がないため実行されません。

簡単な記事です論理条件に応じて制御フローが調整される。

おすすめ記事