Commuta automaticamente la visualizzazione su lenovo docking e linux


8

Ho un thinkpad lenovo con nvidia optimus e una mini docking station serie 3 .

Voglio che, quando ancorato, dovrebbe passare automaticamente a un monitor esterno, se possibile, e se lo sgancio, dovrebbe passare automaticamente al thinkpad lcd.

Questo dovrebbe funzionare anche nella fase di avvio perché lì devo digitare una password per il disco crittografato (dm-crypt).

Ho provato quanto segue ma non funziona:

Ho creato un file /etc/acpi/thinkpad-undock.sh(+ chmod a+x thinkpad-undock.sh) che contiene le seguenti righe:

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

E anche /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 ancora chmod a+x thinkpad-dock.sh.

L'esecuzione manuale di entrambi gli script funziona manualmente.

Quindi ho creato due file per la gestione degli eventi:

thinkpad-dock-lenovo

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

e anche thinkpad-undock-lenovo

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

Quindi ho ricaricato il demone acpi con /etc/init.d/acpid reload. Tuttavia, se aggancio o sgancio il laptop non fa nulla.

Ho ottenuto il numero dell'evento sopra eseguendo acpi_listene quindi agganciando e sganciando il laptop.

Quindi ci sono idee su come farlo funzionare.

Forse il problema è risolto da alcuni ambienti desktop come ad esempio kde, ma sto usando xmonad e tuttavia, come indicato sopra, dovrebbe funzionare anche in fase di avvio indipendentemente dall'ambiente desktop.

Sto eseguendo Ubuntu 16.04 con la versione del kernel 4.4.0-22.

Ho anche provato ad aggiungere una regola udev come segue ma non ha funzionato:

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

Ho appena notato che il file dockha sempre il valore 0, indipendentemente dal fatto che il laptop sia agganciato o sganciato.

Risposte:


0

Lo script non imposta la variabile di ambiente DISPLAY. Dovrebbe sembrare come questo:

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

Grazie. L'ho provato ma non funziona. Inoltre non vedo perché questo dovrebbe essere l'errore poiché lo script funziona (con e senza la dichiarazione di esportazione) se lo eseguo direttamente. Immagino piuttosto che lo script non sia eseguito da acpid.
studente

0

Ho avuto fortuna con l'impostazione di entrambi DISPLAYe XAUTHORITYcon l'aggiunta di un piccolo sonno, ad es

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

0

Ho una configurazione simile, tuttavia non ho mai inseguito la soluzione di reagire al dock. È interessante.

Quello che faccio invece è usare il display manager di Gnome per impostare il display LCD su "off" e il display esterno come principale. In questo modo ogni volta che poso il laptop sul dock, passa al display esterno. Quando lo sollevo, torna al display LCD.

Avere questo sulla console (l'avvio di un'installazione di dm-crypt) funziona anche ma ha le sue sfumature. Se il coperchio è chiuso, posiziono il laptop sul dock e lo accendo, si avvia automaticamente sul display esterno (tutto, compresi gli schermi del BIOS, il lotto). Se il coperchio è aperto, cambierà solo dopo aver effettuato l'accesso su GDM.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.