xrandr 출력 전환 스크립트를 만드는 방법은 무엇입니까?

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 증가).

답변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로 평가되므로 실행됩니다. 이 논리 또는 절이 참인지 확인하기 위해 쉘은 오른쪽을 평가해야 합니다. 반면에 왼쪽이 이미 true로 평가된 경우 오른쪽은 평가할 필요가 없으므로 실행되지 않습니다.

간략한 글입니다논리적 조건에 따라 제어 흐름이 조정됩니다.

답변2

꼭 필요한 경우가 아니면 tmpfile 사용을 피하고 싶다면 다음을 시도해 보세요( LVDS-1:laptop monitor, VGA-1:external monitor):

#!/bin/sh

switchDisplay() {
  /usr/bin/xrandr --auto && /usr/bin/xrandr --output "$1" --off
}

case "$0" in
*-off)
  switchDisplay "VGA-1";
;;
*-on)
  switchDisplay "LVDS-1";
;;
*-toggle)
  ### Debian Buster xrandr man page is missing critical information.
  ### xrandr --listactivemonitors
  ### Monitors: 1
  ###  0: +VGA-1 1920/509x1080/286+0+0  VGA-1
  /usr/bin/xrandr --listactivemonitors | /bin/grep -q "VGA-1" 1>/dev/null 2>&1
  if test "$?" -eq 0; then
    switchDisplay "VGA-1"; ### VGA active, turn it off.
  else
    switchDisplay "LVDS-1"; ### VGA inactive, turn it on.
  fi;
;;
esac;

스크립트는 (ie)에서 호출되며 ext-onext-on에 대한 심볼릭 링크입니다. 귀하의 요구에 적응하십시오.$PATH~/.local/binext-offext-toggle

Fn+i3wm 사용자가 -key 조합을 쉽게 사용하려면 다음에 추가하십시오 ~/.config/i3/config.

bindsym XF86Display             exec --no-startup-id ~/.local/bin/ext-toggle

기적적으로 작동합니다. 결코 나를 실망시키지 마세요 ;)

건배

답변3

다음 링크를 확인하세요:

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

이 스크립트는 bash로 작성되었으며 i3 구성 파일에 단축키를 설정하는 방법을 보여줍니다.

관련 정보