HDMI가 연결되거나 연결 해제되었을 때 모니터를 구성하기 위해 bash 스크립트를 어떻게 작성합니까?

HDMI가 연결되거나 연결 해제되었을 때 모니터를 구성하기 위해 bash 스크립트를 어떻게 작성합니까?

저는 가끔 비디오를 보는 데 사용하는 Kubuntu Precise(12.04)를 실행하는 노트북을 가지고 있습니다. 이를 위해 A/V 리시버에 연결된 HDMI 케이블을 연결하고 HDMI 모니터를 연결합니다.

이런 방식으로 비디오를 볼 때 재생 등을 제어하기 위해 시스템과 상호 작용할 때 여전히 노트북 모니터를 사용해야 합니다. 내가 앉은 자리에서 HDMI 모니터의 텍스트를 읽기가 어렵습니다.

HDMI 케이블을 연결하면 쿠분투는 이를 감지하지만 매번 비디오와 오디오를 올바르게 설정하려면 이상한 댄스 시퀀스(작동하지만 복잡함)를 거쳐야 합니다. 이 문제를 해결하기 위해 xrandr처음에 제대로 완료되도록 bash 스크립트를 작성해 보았습니다 .

U&L 퀴즈 질문에 대한 Peoro의 답변에서 기본 아이디어를 얻었습니다.외부 모니터를 연결할 때 RandR 구성을 자동으로 적용하는 도구.

내 스크립트 정보

내 스크립트(아래 포함)는 작동하지만 개선이 필요합니다.

HDMI 모니터에 맞게 비디오 모드를 설정했지만 노트북의 LVDS1 모니터는 바탕 화면의 왼쪽 상단 부분만 표시하도록 변경됩니다. 이는 화면 오른쪽과 하단의 창 스크롤 막대가 잘리기 때문에 문제가 됩니다. 작업 표시줄.

문제를 해결하려고 시도했지만 --scale첫 번째 시도에서 문제가 발생하여 디스플레이가 다시 작동하도록 하려면 재부팅해야 했습니다.

두 대의 모니터에 동일한 콘텐츠를 표시하면서 각 모니터가 각자 선호하는 해상도를 사용하도록 하는 방법이 있습니까?

아니면 HDMI 모니터를 사용할 때 전체 데스크탑에 계속 액세스할 수 있도록 노트북 모니터를 설정하는 방법이 있습니까?

스크립트를 디버깅하는 중이므로 아직 정리되지 않았습니다. 나중에 더 해보고 싶을 수도 있겠네요.

내 스크립트

#!/bin/bash
## hdmi_set
## Copyleft 11/13/2013 JPmicrosystems
## Adapted from
## https://unix.stackexchange.com/questions/4489/a-tool-for-automatically-applying-randr-configuration-when-external-display-is-p
## Answer by peoro

# setting up new mode for my VGA
##xrandr --newmode "1920x1080" 148.5 1920 2008 2052 2200 1080 1089 1095 1125 +hsync +vsync
##xrandr --addmode VGA1 1920x1080

##source $HOME/bin/bash_trace
# default monitor is LVDS1
MONITOR=LVDS1

# functions to switch from LVDS1 to HDMI and vice versa
function ActivateHDMI {
    echo "Switching to HDMI"
    ##xrandr --output HDMI1 --mode 1920x1080 --dpi 160 --output LVDS1 --off
    ##xrandr --output HDMI1 --same-as LVDS1
    xrandr --output HDMI1 --mode 1920x1080
    xrandr --output LVDS1 --mode 1366x768
    MONITOR=HDMI1
}
function DeactivateHDMI {
    echo "Switching to LVDS1"
    xrandr --output HDMI1 --off --output LVDS1 --auto
    MONITOR=LVDS1
}

# functions to check if VGA is connected and in use
function HDMIActive {
    [ $MONITOR = "HDMI1" ]
}
function HDMIConnected {
    ! xrandr | grep "^HDMI1" | grep disconnected
}

## MONITOR doesn't do anything because it's not preserved between script executions
# actual script
##while true
##do
    if HDMIConnected
    then
        ActivateHDMI
    fi

    if ! HDMIConnected
    then
        DeactivateHDMI
    fi

    ##sleep 1s
##done

xrandr의 출력

이것이 xrandr이 보는 것입니다:

bigbird@ramdass:~$ xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   1366x768       60.0*+
   1360x768       59.8     60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected (normal left inverted right x axis y axis)
   1920x1080      60.0 +
   1680x1050      60.0  
   1280x1024      60.0  
   1440x900       59.9  
   1280x720       60.0  
   1024x768       60.0  
   800x600        60.3  
   720x480        59.9  
   640x480        60.0  
   720x400        70.1  
DP1 disconnected (normal left inverted right x axis y axis)

답변1

아마도 단순히 사용해야 할 것입니다화면대신, 이것이 모든 문제를 해결해 줄 것입니다. 이전에 연결한 화면의 설정을 기억하고 다시 연결하면 복원됩니다.

kscreen을 사용할 때 여전히 이와 같은 문제가 발생한다면 시도해 볼 가치가 있습니다.오류 보고서.

쿠분투 12.04는 꽤 오래되었기 때문에 아마도 다음을 살펴봐야 할 것입니다.이것.

관련 정보