Secara otomatis beralih tampilan pada lenovo docking dan linux

8

Saya memiliki lenovo thinkpad dengan nvidia optimus dan mini docking station seri 3 .

Saya ingin itu sementara merapat, itu harus secara otomatis beralih ke monitor eksternal jika memungkinkan dan jika saya melepasnya, itu harus beralih ke lcd thinkpad secara otomatis.

Ini juga harus bekerja pada tahap boot karena di sana saya harus mengetikkan kata sandi untuk disk terenkripsi (dm-crypt).

Saya mencoba yang berikut tetapi tidak berhasil:

Saya membuat file /etc/acpi/thinkpad-undock.sh(+ chmod a+x thinkpad-undock.sh) yang berisi baris-baris berikut:

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

Dan juga /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

Dan lagi chmod a+x thinkpad-dock.sh.

Menjalankan kedua skrip secara manual berfungsi.

Daripada saya membuat dua file untuk menangani acara:

thinkpad-dock-lenovo

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

dan juga thinkpad-undock-lenovo

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

Lalu aku mengisi ulang daemon acpi dengan /etc/init.d/acpid reload. Namun jika saya dok atau melepas laptop itu tidak melakukan apa-apa.

Saya mendapatkan nomor acara di atas dengan menjalankan acpi_listendan kemudian memasang dan melepas laptop.

Jadi, apakah ada ide bagaimana membuatnya bekerja.

Mungkin masalahnya diselesaikan oleh beberapa lingkungan desktop misalnya kde, tetapi saya menggunakan xmonad dan meskipun demikian, seperti yang ditunjukkan di atas, ia harus bekerja bahkan pada tahap boot terlepas dari lingkungan desktop.

Saya menjalankan ubuntu 16.04 dengan kernel versi 4.4.0-22.

Saya mencoba juga menambahkan aturan udev sebagai tindak lanjut tetapi tidak berhasil:

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

Saya hanya memperhatikan bahwa file docktersebut selalu bernilai 0, terlepas dari apakah laptopnya merapat atau tidak terpasang.

siswa
sumber

Jawaban:

0

Script Anda tidak mengatur variabel lingkungan DISPLAY. Seharusnya terlihat seperti ini:

#!/bin/sh
export DISPLAY=:0
xrandr --output LVDS-1 --auto --output DP-5.8 --off
hackerb9
sumber
Terima kasih. Saya mencobanya tetapi tidak berhasil. Saya juga tidak melihat mengapa ini harus menjadi kesalahan karena skrip bekerja (dengan dan tanpa pernyataan ekspor) jika saya menjalankannya secara langsung. Saya lebih suka menebak bahwa skrip tidak dijalankan oleh acpid.
siswa
0

Saya beruntung dengan pengaturan keduanya DISPLAYdan XAUTHORITYjuga menambahkan sedikit tidur, misalnya

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

Saya memiliki pengaturan yang serupa, namun saya tidak pernah mengejar solusi untuk bereaksi terhadap dok. Itu yang menarik.

Yang saya lakukan adalah menggunakan manajer tampilan Gnome untuk mengatur tampilan LCD ke 'off' dan tampilan eksternal menjadi yang utama. Dengan cara ini setiap kali saya meletakkan laptop di dermaga, itu beralih ke layar eksternal. Ketika saya mengangkatnya, itu beralih kembali ke LCD.

Memiliki ini di konsol (boot dari instalasi dm-crypt) juga berfungsi tetapi memiliki nuansa. Jika tutupnya tertutup, saya mengatur laptop di dermaga dan menyalakannya, secara otomatis boot pada layar eksternal (semuanya, termasuk layar BIOS, lot). Jika tutupnya terbuka, itu hanya akan bertukar setelah masuk pada GDM.

Pedro
sumber