Scripts Dock / UnDock
Eu finalmente reuni uma configuração de script completa que detectará o status da minha estação e alternará os monitores automaticamente.
A primeira coisa que fiz foi me livrar do meu Xorg.conf, pois causou mais problemas que ele resolveu. Como estou usando um cartão nvdia, acabei descobrindo que usar disper foi o melhor caminho a percorrer. Eu tinha descontado antes, já que seus comandos padrão não conseguiam atingir minha configuração de dualview, mas depois descobri que poderia criar um metamodo personalizado para usar com o disperador.
Para criar o metamodo personalizado eu usei os valores armazenados no Xorg.conf junto com testes anteriores com nv-control-dpy e xrandr como um guia. Este metamodo e outros valores de twinview foram adicionados a um arquivo que pode ser passado para dispersar através de stdin .
Devido a ter monitores de tamanhos diferentes com o Twinview, eu preciso usar XCreateMouseVoid , conforme descrito neste question .
Abaixo está um detalhamento completo dos scripts e arquivos com seus conteúdos.
Scripts
-
Criar script XCreateMouseVoid:
Nome do script:
~/.mousevoid
#!/bin/bash echo "Mouse Void" /opt/XCreateMouseVoid/XCreateMouseVoid 0 1112 1280 88 & /opt/XCreateMouseVoid/XCreateMouseVoid 0 0 1280 88 &
chmod +x ~/.mousevoid
-
Crie o arquivo de configurações do Disper:
Nome do arquivo:
~/.disperDocked
backend: nvidia associated displays: CRT-0, DFP-0, DFP-1 metamode: CRT-0: 1280x1024_60 @1280x1024 +0+88, DFP-1: 1920x1200 @1920x1200 +1280+0 scaling: default, default, stretched xinerama info order: DFP-1, CRT-0, DFP-0
-
Crie o script de sessão de exportação dbus:
Nome do script:
~/.export_x_info
#!/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 usuário executável:
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 rodar ~ / .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
KERNEL=="dock.0", ACTION=="change", RUN+="/usr/local/sbin/dell-dock"
chmod +x /etc/udev/rules.d/81-dell-dock.rules
-
Crie o script associado à regra do udev:
Nome do script:
/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
-
Crie o script de remoção (mude your_user para corresponder ao seu nome de usuário):
Nome do script:
/usr/local/sbin/undock
#!/bin/bash USER=your_user export HOME=/home/$USER source $HOME/.Xdbus export DISPLAY=:0 echo "UnDocking Script" echo "Switch primary monitor" sudo -u $USER disper -s echo "Killall XCreateMouseVoid" pkill XCreate echo "Restart conky" pkill conky sudo -u $USER conky &
chmod +x /usr/local/sbin/undock
-
Crie o script dock (mude your_user para corresponder ao seu nome de usuário):
Nome do script:
/usr/local/sbin/dock
#!/bin/bash USER=your_user export HOME=/home/$USER source $HOME/.Xdbus export DISPLAY=:0 echo "Docking Script" echo "Switch to Dualview" sudo -u $USER disper -i < $HOME/.disperDocked echo "Start XCreateMouseVoid" pkill XCreate sudo -u $USER $HOME/.mousevoid echo "Restart conky" pkill conky sudo -u $USER conky &
chmod +x /usr/local/sbin/dock
Depurar
Para depurar os scripts do dock, você deve habilitar o log de depuração do udev:
udevadm control --log-priority=debug
Em seguida, abra syslog no Visualizador de arquivos de log
Recursos
Leia-me da nVidia: Config Twinview , X Opções de configuração
Autorandr
PPA do Disper
nv-control-dpy
Ubuntu Forum - Scripts Un / Dock
Thinkwiki
udevadm