Alternar automaticamente a exibição no lenovo docking e linux

8

Eu tenho um thinkpad lenovo com nvidia optimus e uma mini docking station série 3 .

Quero que, enquanto acoplado, ele mude automaticamente para um monitor externo, se possível, e se eu desencaixá-lo, mude automaticamente para o thinkpad lcd.

Isso também deve funcionar no estágio de inicialização, porque é preciso digitar uma senha para o disco criptografado (dm-crypt).

Eu tentei o seguinte, mas não funciona:

Eu criei um arquivo /etc/acpi/thinkpad-undock.sh(+ chmod a+x thinkpad-undock.sh) que contém as seguintes linhas:

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

E também /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

E mais uma vez chmod a+x thinkpad-dock.sh.

A execução dos dois scripts funciona manualmente.

Depois, criei dois arquivos para manipular os eventos:

thinkpad-dock-lenovo

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

e também thinkpad-undock-lenovo

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

Então recarreguei o daemon acpi com /etc/init.d/acpid reload. No entanto, se eu acoplar ou desacoplar o laptop, ele não fará nada.

Obtive o número do evento acima executando acpi_listene, em seguida, encaixando e desencaixando o laptop.

Portanto, existem idéias de como fazê-lo funcionar.

Talvez o problema seja resolvido por algum ambiente de desktop, por exemplo, kde, mas eu estou usando o xmonad e, no entanto, conforme indicado acima, ele deve funcionar mesmo no estágio de inicialização, independentemente do ambiente de desktop.

Estou executando o ubuntu 16.04 com o kernel versão 4.4.0-22.

Tentei também adicionar uma regra do udev da seguinte forma, mas não funcionou:

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

Acabei de notar que o arquivo docksempre tem o valor 0, independentemente de o laptop estar encaixado ou desencaixado.

aluna
fonte

Respostas:

0

Seu script não define a variável de ambiente DISPLAY. Deve ficar assim:

#!/bin/sh
export DISPLAY=:0
xrandr --output LVDS-1 --auto --output DP-5.8 --off
hackerb9
fonte
Obrigado. Eu tentei, mas não funciona. Também não vejo por que esse deve ser o erro, pois o script funciona (com e sem a instrução de exportação) se eu o executar diretamente. Acho que o script não é executado pelo acpid.
estudante de
0

Tive sorte em definir as duas coisas DISPLAYe XAUTHORITYtambém adormecer um pouco, por exemplo

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

Eu tenho uma configuração semelhante, no entanto, nunca persegui a solução de reagir à doca. É interessante.

O que eu faço é usar o gerenciador de exibição do Gnome para definir o display LCD como 'off' (desligado) e o monitor externo como o principal. Dessa forma, sempre que eu coloco o laptop no dock, ele passa para o monitor externo. Quando o levanto, ele volta ao LCD.

Ter isso no console (inicializando em uma instalação dm-crypt) também funciona, mas tem suas nuances. Se a tampa estiver fechada, eu coloco o laptop no dock e o ligo, ele é inicializado automaticamente no monitor externo (tudo, incluindo as telas da BIOS, muito). Se a tampa estiver aberta, ela somente será trocada após o login no GDM.

Pedro
fonte