Comuta automaticamente a exibição no docking e linux da lenovo

7

Eu tenho um thinkpad da lenovo com nvidia optimus e uma mini-estação de estação de série 3 .

Eu quero que, enquanto estiver encaixado, ele possa alternar automaticamente para um monitor externo, se possível, e se eu o desancorar, ele deverá alternar para o lcd do thinkpad automaticamente.

Isso também deve funcionar no estágio de inicialização porque eu tenho que 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 novamente chmod a+x thinkpad-dock.sh .

Executar os dois scripts manualmente funciona.

Então 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

Depois, recarreguei o daemon de acpi com /etc/init.d/acpid reload . No entanto, se eu encaixar ou desacoplar o laptop, ele não faz nada.

Eu obtive o número do evento acima executando acpi_listen e, em seguida, acoplando e desacoplar o laptop.

Então, há alguma ideia de como fazer isso funcionar?

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

Estou executando o Ubuntu 16.04 com a versão do kernel 4.4.0-22.

Eu também tentei adicionar uma regra do udev como segue, 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 dock sempre tem o valor 0, independentemente de o laptop estar encaixado ou desacoplado.

    
por student 09.06.2016 / 16:33

3 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
    
por 27.06.2016 / 17:18
0

Tive sorte ao definir DISPLAY e XAUTHORITY , além de adicionar uma pequena suspensão, por exemplo,

export DISPLAY=:0
export XAUTHORITY=/home/user/.Xauthority
sleep 3
xrandr ...
    
por 28.11.2017 / 14:34
0

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

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

Ter isso no console (arrancar de 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 inicializa automaticamente no monitor externo (tudo, incluindo as telas do BIOS, o lote). Se a tampa estiver aberta, ela será trocada apenas após o login no GDM.

    
por 20.02.2018 / 00:01