콘솔 tty를 통해 디스플레이를 활성화하시겠습니까?

콘솔 tty를 통해 디스플레이를 활성화하시겠습니까?

외부 모니터를 활성화하고 랩탑 모니터를 비활성화하는 사용자 정의 xrandr 스크립트가 있습니다. 외부 모니터 연결을 끊으면 화면이 비어 있기 때문에 모니터를 활성화할 수 없습니다.

나는 내 콘솔 tty(ctrl-alt-f1)에 액세스하고 xrandr을 계속 실행(예: xrandr --output eDP1 --auto)할 수 있기를 원합니다. 내 tty에서 실행하면 "디스플레이를 열 수 없습니다"라고 표시됩니다. 어떻게 할 수 있는지에 대한 조언이 있나요?

답변1

콘솔로 이동할 필요 없이 내부 화면을 다시 활성화하는 사용자 정의 키보드 단축키를 추가하여 동일한 결과를 얻을 수 있습니다.

시스템 설정 > 키보드 > 단축키 > 사용자 정의 단축키를 선택하고 +를 클릭한 후 원하는 단축키에 명령을 추가합니다.

xrandr --output <screenname> --auto

방금 내 시스템(노트북, 15.10)에서 테스트했습니다. 내 화면을 끄고 키보드 단축키로 명령을 실행하여 성공적으로 다시 활성화했습니다. :)

대안으로

편집된 버전을 사용할 수 있습니다.이 스크립트. 아래 버전(작은 배경 스크립트, 외부 화면이 연결되어 있는지 4초에 한 번씩 확인)은 내부 화면이 켜져 있는지 확인합니다.

#!/usr/bin/env python3
import subprocess
import time
# --- set your internal screen below (the example is my primary screen)
internal = "DVI-I-1"
#---

# don't change anything below
scr_info1 = 0

while True:
    time.sleep(4)
    # read the current screen setup from xrandr
    get_screens = subprocess.check_output("xrandr").decode("utf-8").splitlines()
    scr_data = [l for l in get_screens if " connected " in l]
    # count the number of connected screens
    scr_info2  = len(scr_data)
    # if the number of connected screens changes, 
    # switch off the internal one if there are two screens
    if scr_info2 != scr_info1:
        if scr_info2 == 2:
            ext = [s.split()[0] for s in scr_data if not internal in s][0]
            subprocess.Popen(["xrandr", "--output", internal, "--off", "--output", ext, "--auto"])
        else:
            subprocess.Popen(["xrandr", "--output", internal, "--auto"])

    scr_info1 = scr_info2

설정 방법

  1. 위 스크립트를 빈 파일에 복사하고 다른 이름으로 저장하세요.switch_screens.py
  2. 스크립트의 헤드 섹션에서 이름을 설정하십시오.내부화면. 알아내려면 터미널 창을 열고 명령을 실행하십시오 (외부 화면이 연결되지 않음). "connected"가 있는 줄은 첫 번째 문자열에 다음과 같은 xrandr화면 이름을 표시합니다 .VGA-1
  3. 터미널 창을 열고 다음 명령을 입력하여 테스트를 실행합니다.

    python3 /path/to/switch_screens.py
    

    스크립트가 실행되는 동안 외부 화면을 연결하고 내부 화면이 전환될 때까지 기다렸다가 다시 연결을 끊습니다.

  4. 모든 것이 제대로 작동하면 시작 응용 프로그램에 아래 명령을 추가하십시오. Dash > 시작 응용 프로그램 > 추가를 엽니다. 다음 명령을 추가합니다.

    /bin/bash -c "sleep 15 && python3 /path/to/switch_screens.py"
    

로그아웃했다가 다시 로그인하세요. 이제 외부 화면이 연결되어 있으면 내부 화면이 자동으로 꺼지고, 연결을 끊으면 다시 활성화됩니다.

스크립트는 시스템에 눈에 띄는 부담을 전혀 추가하지 않습니다.

관련 정보