lenovo Dock 및 Linux에서 자동으로 디스플레이 전환

lenovo Dock 및 Linux에서 자동으로 디스플레이 전환

나는 Nvidia Optimus가 설치된 lenovo Thinkpad를 가지고 있습니다.미니 도킹 스테이션 시리즈 3.

도킹되면 가능하면 외부 모니터로 자동 전환되고, 도킹 해제하면 자동으로 Thinkpad LCD로 전환되기를 원합니다.

암호화된 디스크(dm-crypt)에 대한 비밀번호를 입력해야 하므로 부팅 단계에서도 작동합니다.

다음을 시도했지만 작동하지 않습니다.

다음 줄을 사용하여 파일 /etc/acpi/thinkpad-undock.sh(+ )을 만들었습니다.chmod a+x thinkpad-undock.sh

#!/bin/sh
xrandr --output LVDS-1 --auto --output DP-5.8 --off

그리고/etc/acpi/thinkpad-dock.sh

#!/bin/sh
prime-select nvidia # ensures that nvidia card is selected
xrandr --output LVDS-1 --off --output DP-5.8 --auto

그리고 다시 chmod a+x thinkpad-dock.sh.

두 스크립트를 모두 수동으로 실행하면 작동합니다.

그런 다음 이벤트를 처리하기 위해 두 개의 파일을 만들었습니다.

thinkpad-dock-lenovo

event=ibm/hotkey LEN0068:00 00000080 00004010
action=/etc/acpi/thinkpad-dock.sh

그리고thinkpad-undock-lenovo

event=ibm/hotkey LEN0068:00 00000080 00004011
action=/etc/acpi/thinkpad-undock.sh

그런 다음 /etc/init.d/acpid reload. 그러나 노트북을 도킹하거나 도킹 해제하면 아무 작업도 수행되지 않습니다.

acpi_listen랩톱을 실행한 다음 도킹하고 연결을 끊으면 위의 이벤트 번호를 얻습니다.

그럼 어떻게 작동하게 만들 수 있을지 어떤 아이디어가 있나요?

어쩌면 문제는 일부 데스크탑 환경(예: kde)으로 해결될 수 있지만 xmonad를 사용하고 있습니다. 위에서 언급한 것처럼 부팅 단계에서는 xmonad가 데스크탑 환경과 독립적으로 작동해야 합니다.

저는 커널 버전 4.4.0-22로 우분투 16.04를 실행하고 있습니다.

또한 아래와 같이 udev 규칙을 추가하려고 시도했지만 작동하지 않습니다.

ENV{EVENT}=="undock", KERNEL=="dock.0", SUBSYSTEM=="platform", RUN+="disper -s"
ENV{EVENT}=="dock", KERNEL=="dock.0", SUBSYSTEM=="platform", RUN+="disper -s"

dock랩톱이 도킹되어 있는지 여부에 관계없이 이 파일의 값은 항상 0이라는 것을 방금 확인했습니다.

답변1

스크립트가 DISPLAY 환경 변수를 설정하지 않습니다. 다음과 같아야 합니다.

#!/bin/sh
export DISPLAY=:0
xrandr --output LVDS-1 --auto --output DP-5.8 --off

답변2

나는 둘 다 설정 DISPLAY하고 XAUTHORITY작은 잠을 추가하는 데 행운을 빕니다.

export DISPLAY=:0
export XAUTHORITY=/home/user/.Xauthority
sleep 3
xrandr ...

답변3

비슷한 설정이 있지만 도커 반응형 솔루션을 추구한 적이 없습니다. 이것은 흥미로운 일입니다.

내가 한 일은 Gnome의 디스플레이 관리자를 사용하여 LCD 디스플레이를 "끄기"로 설정하고 외부 디스플레이를 기본 디스플레이로 설정하는 것이었습니다. 이렇게 하면 노트북을 도크에 올려놓을 때마다 외부 모니터로 전환됩니다. 들어 올리면 다시 LCD 화면으로 전환됩니다.

콘솔에 배치하는 것(dm-crypt 설치에서 시작)도 작동하지만 미묘한 차이가 있습니다. 덮개를 닫으면 노트북을 도킹 스테이션에 올려놓고 전원을 켜면 외부 모니터(BIOS 화면 등을 포함한 모든 것)에서 자동으로 부팅됩니다. 덮개가 열려 있으면 GDM에 로그인할 때까지 전환이 발생하지 않습니다.

답변4

다음과 같은 것이 필요합니다.

udev(lsusb에서 idVendor 변경)

    ACTION=="add", ATTRS{idVendor}=="05e3", ATTRS{idProduct}=="****", RUN+="/local/run.sh /local/udev-dplink-on.sh"
    ACTION=="remove", ATTRS{idVendor}=="05e3", ATTRS{idProduct}=="****", RUN+="/local/run.sh /local/udev-dplink-off.sh"

apt-get은 다음에 설치됩니다.

실행 sh

    #!/bin/bash

    echo $1 | at now

에 대해 더 자세히https://www.eovao.com/en/a/Display%20Link%20Dock%20Ubuntu%20Linux/6/displaylink-dock-in-ubuntu-with-kvm-switch-usb-3.0

관련 정보