У меня есть Lenovo ThinkPad с NVIDIA Optimus и мини-док-станция серии 3 .
Я хочу, чтобы во время пристыковки он автоматически переключался на внешний монитор, если это возможно, и если я отстыковываю его, он должен автоматически переключаться на ЖК-монитор ThinkPad.
Это также должно работать на этапе загрузки, потому что там я должен ввести пароль для зашифрованного диска (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
Затем я перезагрузил демон acpi с помощью /etc/init.d/acpid reload
. Однако, если я подключаю или отсоединяю ноутбук, он ничего не делает.
Я получил номер события выше, выполнив, acpi_listen
а затем установив и отсоединив ноутбук.
Так есть ли идеи, как заставить это работать.
Возможно, проблема решается с помощью некоторой среды рабочего стола, например, kde, но я использую xmonad и, тем не менее, как указано выше, он должен работать даже на этапе загрузки независимо от среды рабочего стола.
Я использую Ubuntu 16.04 с версией ядра 4.4.0-22.
Я также попытался добавить правило 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, независимо от того, подключен ли ноутбук или нет.