Como alternar automaticamente os monitores com o dock do meu laptop
11
Eu tenho um Dell Precision M4300 com um Dell Dock PRO1X executando o Ubuntu Natty.
Quando o laptop está acoplado, a tela de LCD está desligada e eu uso dois monitores externos; no entanto, quando desacopro o laptop, ele não muda para a tela do laptop. O mesmo acontece quando encaixo o laptop, ele não muda para os monitores externos.
Se eu reiniciar o laptop, ele escolherá a configuração correta, mas não mudará automaticamente de monitor com o Ubuntu em execução.
Finalmente, montei uma configuração completa de script que detectará o status do meu dock e trocará os monitores automaticamente.
A primeira coisa que fiz foi me livrar do meu Xorg.conf, pois causava mais problemas do que resolvia. Como estou usando uma placa nvdia, finalmente descobri que usar o disper era o melhor caminho a percorrer. Eu já o havia desconsiderado antes, pois seus comandos padrão não conseguiam minha configuração de visualização dupla, mas descobri que podia criar um metamodo personalizado para usar com o disper.
Para criar o metamodo personalizado, usei os valores armazenados no Xorg.conf juntamente com os testes anteriores com nv-control-dpy e xrandr como um guia. Este metamodo e outros valores twinview foram adicionados a um arquivo que pode ser passado para dispersar através do stdin .
Devido a ter monitores de tamanhos diferentes com o Twinview, preciso usar o XCreateMouseVoid , conforme descrito nesta pergunta .
Abaixo está uma descrição completa dos scripts e arquivos com seu conteúdo.
#!/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
Defina apenas como executável pelo usuário: chmod 700 ~/.export_x_info
Em seguida, coloque-o em Aplicativos de inicialização:
Name: X Environment Variables
Command: /home/your_user/.export_x_info
A menos que você reinicie, você precisa executar ~ / .export_x_info para criar o arquivo .Xdbus
Crie a regra do udev que será executada em um evento de dock:
Nome do script: /etc/udev/rules.d/81-dell-dock.rules
#!/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
Crie o script de desencaixe (altere seu_usuário para corresponder ao seu nome de usuário):
$ cat /sys/devices/platform/dock.0/docked cat: /sys/devices/platform/dock.0/docked: No such file or directory
Você pode usar o autorandr .
Veja também:
fonte