Как создать сценарий переключения вывода xrandr?

У меня есть два выхода (бок о бок), и я использую 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)

Проверьте эту ссылку:

https://faq.i3wm.org/question/5312/how-to-toggle-onoff-external-and-internal-monitors.1.html

Сценарий написан в bash и дает также способ установки ключевого ярлыка в вашем конфигурационном файле i3.

Это должно работать:

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 вернет код выхода, который интерпретатор интерпретирует как истинный. Если он не найден, он вернет код выхода, который интерпретатор интерпретирует как false. Выходной сигнал отправляется в / dev / null, чтобы избежать загромождения экрана.
  • && xrandr --output <BBB> --off Если grep нашел монитор в списке активных мониторов, это запустится, выключив монитор. Но если grep выйдет с кодом выхода с ложью, то это не будет выполняться, потому что независимо от того, что он оценивает, логическое и предложение в целом уже известно как ложное.
  • || xrandr --output <BBB> --right-of <AAA> --mode 1920x1080 || xrandr --output <BBB> --right-of <AAA> --mode 1920x1080 Если grep не нашел его, то этот раздел будет запущен, включив монитор. Он запускается, потому что предыдущее предложение ( grep ... && xrandr ... ) оценивается как false. Чтобы узнать, истинно ли это логическое или предложение, оболочка должна оценивать правую сторону. С другой стороны, если левая сторона уже оценивается как истина, тогда нет необходимости оценивать правую часть, и поэтому это не будет выполнено.

Вот краткая запись о потоке управления, опосредуемая логическими условностями.