Cómo cambiar monitores automáticamente con la base de mi computadora portátil
11
Tengo un Dell Precision M4300 con un Dell Dock PRO1X que ejecuta Ubuntu Natty.
Cuando tengo el portátil conectado, la pantalla LCD está apagada y uso dos monitores externos, sin embargo, cuando desacople el portátil, no cambiará a la pantalla del portátil. Lo mismo sucede cuando conecto la computadora portátil, no cambia a los monitores externos.
Si reinicio la computadora portátil, elegirá la configuración correcta, pero no cambiará automáticamente los monitores con Ubuntu ejecutándose.
Finalmente reuní una configuración completa de script que detectará el estado de mi base y cambiará los monitores automáticamente.
Lo primero que hice fue deshacerme de mi Xorg.conf ya que causó más problemas que resolvió. Como estoy usando una tarjeta nvdia, eventualmente descubrí que usar disper era la mejor manera de hacerlo. Lo había descontado antes, ya que sus comandos estándar no podían lograr mi configuración de doble vista, pero luego descubrí que podía crear un metamodo personalizado para usar con Disper.
Para crear el metamodo personalizado, utilicé los valores almacenados en Xorg.conf junto con pruebas anteriores con nv-control-dpy y xrandr como guía. Este metamodo y otros valores de vista gemela se agregaron a un archivo que se puede pasar a Disper mediante stdin .
Debido a que tengo monitores de diferentes tamaños con Twinview, necesito usar XCreateMouseVoid , como se describe en esta pregunta .
A continuación se muestra un desglose completo de los scripts y archivos con sus contenidos.
#!/bin/bash
# Export the dbus session address on startup so it can be used by any other environment
sleep 5
touch $HOME/.Xdbus
chmod 600 $HOME/.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.Xdbus
# Export XAUTHORITY value on startup so it can be used by cron
env | grep XAUTHORITY >> $HOME/.Xdbus
echo 'export XAUTHORITY' >> $HOME/.Xdbus
Establecer solo para el usuario ejecutable: chmod 700 ~/.export_x_info
Luego póngalo en Aplicaciones de inicio:
Name: X Environment Variables
Command: /home/your_user/.export_x_info
A menos que reinicie, debe ejecutar ~ / .export_x_info para crear el archivo .Xdbus
Cree la regla de udev que se ejecutará en un evento de acoplamiento:
Nombre del guión: /etc/udev/rules.d/81-dell-dock.rules
Cree el script que está asociado con la regla udev:
Nombre del guión: /usr/local/sbin/dell-dock
#!/bin/sh
# wait for the dock state to change
sleep 0.5
DOCKED=$(cat /sys/devices/platform/dock.0/docked)
case "$DOCKED" in
"0")
echo "Run UnDocking Script..."
/usr/local/sbin/undock
;;
"1")
echo "Run Docking Script..."
/usr/local/sbin/dock
;;
esac
exit 0
chmod +x /usr/local/sbin/dell-dock
Cree el script de desacoplamiento (cambie your_user para que coincida con su nombre de usuario):
$ cat /sys/devices/platform/dock.0/docked cat: /sys/devices/platform/dock.0/docked: No such file or directory
Puedes usar autorandr .
Ver también:
fuente