Cambia automáticamente la pantalla en lenovo docking y linux


8

Tengo un thinkpad lenovo con nvidia optimus y una mini estación de acoplamiento serie 3 .

Quiero que mientras esté acoplado, debería cambiar automáticamente a un monitor externo, si es posible, y si lo desacople, debería cambiar al thinkpad lcd automáticamente.

Esto también debería funcionar en la etapa de arranque porque allí tengo que escribir una contraseña para el disco cifrado (dm-crypt).

Intenté lo siguiente pero no funciona:

Creé un archivo /etc/acpi/thinkpad-undock.sh(+ chmod a+x thinkpad-undock.sh) que contiene las siguientes líneas:

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

Y también /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

Y de nuevo chmod a+x thinkpad-dock.sh.

Ejecutar ambos scripts funciona manualmente.

Luego creé dos archivos para manejar los eventos:

thinkpad-dock-lenovo

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

y también thinkpad-undock-lenovo

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

Luego recargué el acpi daemon con /etc/init.d/acpid reload. Sin embargo, si acople o desacople la computadora portátil, no hará nada.

Obtuve el número de evento anterior al ejecutar acpi_listeny luego acoplar y desacoplar la computadora portátil.

Entonces, ¿hay alguna idea de cómo hacer que funcione?

Tal vez el problema sea resuelto por algún entorno de escritorio, por ejemplo kde, pero estoy usando xmonad y, sin embargo, como se indicó anteriormente, debería funcionar incluso en la etapa de arranque independientemente del entorno de escritorio.

Estoy ejecutando ubuntu 16.04 con la versión de kernel 4.4.0-22.

Intenté también agregar una regla de udev como sigue pero no funcionó:

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

Acabo de notar que el archivo docksiempre tiene el valor 0, independientemente de si la computadora portátil está acoplada o no.

Respuestas:


0

Su script no establece la variable de entorno DISPLAY. Debe tener un aspecto como este:

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

Gracias. Lo intenté pero no funciona. Tampoco veo por qué este debería ser el error ya que el script funciona (con y sin la declaración de exportación) si lo ejecuto directamente. Supongo que el script no es ejecutado por acpid.
estudiante

0

He tenido suerte con la configuración de ambos DISPLAYy con la XAUTHORITYadición de un pequeño sueño, p. Ej.

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

0

Tengo una configuración similar, sin embargo, nunca perseguí la solución de reaccionar al muelle. Es interesante

En cambio, lo que hago es usar el administrador de pantalla de Gnome para configurar la pantalla LCD en 'apagado' y la pantalla externa sea la principal. De esta manera, cada vez que coloco la computadora portátil en la base, cambia a la pantalla externa. Cuando lo levanto, vuelve a la pantalla LCD.

Tener esto en la consola (arrancar desde una instalación de dm-crypt) también funciona pero tiene sus matices. Si la tapa está cerrada, configuro el portátil en la base y lo enciendo, se inicia automáticamente en la pantalla externa (todo, incluidas las pantallas del BIOS, el lote). Si la tapa está abierta, solo se cambiará después de iniciar sesión en GDM.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.