랩탑 독으로 모니터를 자동으로 전환하는 방법


11

Ubuntu Natty를 실행하는 Dell Dock PRO1X가 장착 된 Dell Precision M4300이 있습니다.

랩톱을 도킹하면 LCD 디스플레이가 꺼져 있고 두 개의 외부 모니터를 사용하지만 랩톱을 도킹 해제하면 랩톱 화면으로 전환되지 않습니다. 랩톱을 도킹 할 때도 마찬가지이며 외부 모니터로 전환되지 않습니다.

랩톱을 재부팅하면 올바른 설정이 선택되지만 Ubuntu가 실행중인 모니터는 자동으로 변경되지 않습니다.

Xorg.conf

답변:


10

Dock / UnDock 스크립트

마침내 도크 상태를 감지하고 모니터를 자동으로 전환하는 완전한 스크립트 설정을 구성했습니다.

내가 한 첫 번째 일은 해결 된 더 많은 문제를 일으켜 Xorg.conf를 제거하는 것이 었습니다. 내가 엔비디아 카드를 사용하고 있기 때문에 나는 결국 사용하는 것을 발견 디스하면 갈 수있는 가장 좋은 방법이었다. 표준 명령으로 dualview 설정을 수행 할 수 없었기 때문에 이전에 할인을 받았지만 disper와 함께 사용할 사용자 지정 메타 모드를 만들 수 있다는 것을 알았습니다.

커스텀 메타 모드를 만들기 위해 Xorg.conf에 저장된 값과 nv-control-dpyxrandr 를 가이드로 한 이전 테스트와 함께 사용했습니다. 이 메타 모드 및 기타 twinview 값은 stdin을 통해 disper로 전달 될 수있는 파일에 추가되었습니다 .

Twinview에서 다른 크기의 모니터를 사용하기 때문에이 질문에 설명 된대로 XCreateMouseVoid 를 사용해야 합니다.

아래는 스크립트와 파일의 내용을 완전히 정리 한 것입니다.


스크립트

  1. XCreateMouseVoid 스크립트를 작성하십시오.

    스크립트 이름 : ~/.mousevoid

    #!/bin/bash
    echo "Mouse Void"
    /opt/XCreateMouseVoid/XCreateMouseVoid 0 1112 1280 88 &
    /opt/XCreateMouseVoid/XCreateMouseVoid 0 0 1280 88 &
    

    chmod +x ~/.mousevoid

  2. Disper 설정 파일을 작성하십시오.

    파일 이름: ~/.disperDocked

    backend: nvidia
    associated displays: CRT-0, DFP-0, DFP-1
    metamode: CRT-0: 1280x1024_60 @1280x1024 +0+88, DFP-1: 1920x1200 @1920x1200 +1280+0
    scaling: default, default, stretched
    xinerama info order: DFP-1, CRT-0, DFP-0
    
  3. 내보내기 dbus 세션 스크립트를 작성하십시오.

    스크립트 이름 : ~/.export_x_info

    #!/bin/bash
    # Export the dbus session address on startup so it can be used by any other environment
    sleep 5
    touch $HOME/.Xdbus
    chmod 600 $HOME/.Xdbus
    env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.Xdbus
    echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.Xdbus
    # Export XAUTHORITY value on startup so it can be used by cron
    env | grep XAUTHORITY >> $HOME/.Xdbus
    echo 'export XAUTHORITY' >> $HOME/.Xdbus
    

    사용자 실행 파일로만 설정하십시오. chmod 700 ~/.export_x_info

    그런 다음 시작 응용 프로그램에 넣으십시오.

    Name: X Environment Variables
    Command: /home/your_user/.export_x_info
    

    다시 시작하지 않으면 ~ / .export_x_info를 실행하여 .Xdbus 파일 을 만들어야 합니다.

  4. 도킹 이벤트와 함께 실행될 udev 규칙을 작성하십시오.

    스크립트 이름 : /etc/udev/rules.d/81-dell-dock.rules

    KERNEL=="dock.0", ACTION=="change", RUN+="/usr/local/sbin/dell-dock"

    chmod +x /etc/udev/rules.d/81-dell-dock.rules

  5. udev 규칙과 연관된 스크립트를 작성하십시오.

    스크립트 이름 : /usr/local/sbin/dell-dock

    #!/bin/sh
    # wait for the dock state to change
    sleep 0.5
    DOCKED=$(cat /sys/devices/platform/dock.0/docked)
    case "$DOCKED" in
       "0")
           echo "Run UnDocking Script..."
            /usr/local/sbin/undock
            ;;
        "1") 
            echo "Run Docking Script..."
            /usr/local/sbin/dock
            ;;
    esac
    exit 0
    

    chmod +x /usr/local/sbin/dell-dock

  6. 도킹 해제 스크립트를 만듭니다 ( 사용자 이름과 일치하도록 your_user 변경 ).

    스크립트 이름 : /usr/local/sbin/undock

    #!/bin/bash
    USER=your_user
    export HOME=/home/$USER
    source $HOME/.Xdbus
    export DISPLAY=:0
    echo "UnDocking Script"
    echo "Switch primary monitor"
    sudo -u $USER disper -s
    echo "Killall XCreateMouseVoid"
    pkill XCreate
    echo "Restart conky"
    pkill conky
    sudo -u $USER conky &
    

    chmod +x /usr/local/sbin/undock

  7. 독 스크립트를 작성하십시오 ( 사용자 이름과 일치하도록 your_user 를 변경 하십시오).

    스크립트 이름 : /usr/local/sbin/dock

    #!/bin/bash
    USER=your_user
    export HOME=/home/$USER
    source $HOME/.Xdbus
    export DISPLAY=:0
    echo "Docking Script"
    echo "Switch to Dualview"
    sudo -u $USER disper -i < $HOME/.disperDocked
    echo "Start XCreateMouseVoid"
    pkill XCreate
    sudo -u $USER $HOME/.mousevoid
    echo "Restart conky"
    pkill conky
    sudo -u $USER conky &
    

    chmod +x /usr/local/sbin/dock


디버그

도크 스크립트를 디버깅하려면 udev 디버그 로깅을 활성화해야합니다.

udevadm control --log-priority=debug

그런 다음 로그 파일 뷰어 에서 syslog 를여십시오.


자원

nVidia 추가 정보 : 구성 Twinview , X 구성 옵션
Autorandr Disper
PPA
nv-control-dpy
우분투 포럼 -Un / Dock 스크립트
Thinkwiki
udevadm


: 카스, 그것은 당신의 게시물에 내가 코멘트 내가이와 데 그 문제에 대해 물어 것을 제안했다 askubuntu.com/questions/68737/auto-switching-with-dock
토비 소목

dell-dock.sh 스크립트가 있습니까?
Cas

1
네, 그 파일이 존재하지 않는 것 같습니다 : $ cat /sys/devices/platform/dock.0/docked cat: /sys/devices/platform/dock.0/docked: No such file or directory
Toby Joiner

3

autorandr 을 사용할 수 있습니다 .

xrandr 또는 disper를 사용하여 연결 디스플레이 하드웨어 자동 감지 및 적절한 X11 설정로드

연결된 장치를 기반으로 디스플레이 구성을 자동으로 선택

또한보십시오:


이 솔루션은 고통스럽지 않고 훌륭하게 작동합니다.
식료품 점
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.