У меня есть 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, независимо от того, подключен ли ноутбук или нет.
Я имел счастье с установкой как
DISPLAY
иXAUTHORITY
, а также добавление небольшого сна, например ,источник
У меня похожая настройка, однако я никогда не гонялся за решением реакции на док. Это интересный.
Вместо этого я использую диспетчер дисплея Gnome, чтобы отключить ЖК-дисплей, а внешний дисплей должен быть основным. Таким образом, когда я ставлю ноутбук на док-станцию, он переключается на внешний дисплей. Когда я поднимаю его, он переключается обратно на ЖК-дисплей.
Наличие этого на консоли (загрузка с установки dm-crypt) также работает, но имеет свои нюансы. Если крышка закрыта, я ставлю ноутбук на док-станцию и включаю его, он автоматически загружается на внешний дисплей (все, включая экраны BIOS, лот). Если крышка открыта, она будет меняться только после входа в GDM.
источник