J'ai un Dell Precision M4300 avec un Dell Dock PRO1X sous Ubuntu Natty.
Lorsque l'ordinateur portable est amarré, l'écran LCD est éteint et j'utilise deux écrans externes. Toutefois, lorsque je désancre l'ordinateur portable, il ne passe pas à l'écran de l'ordinateur portable. La même chose se produit lorsque je connecte l'ordinateur portable, celui-ci ne bascule pas vers les moniteurs externes.
Si je redémarre l'ordinateur portable, il choisira la configuration correcte mais ne changera pas automatiquement les moniteurs lorsque Ubuntu est en cours d'exécution.
Mon Xorg.conf
J'ai enfin mis en place une configuration de script complète qui détecte l'état de mon dock et permute les moniteurs automatiquement.
La première chose que j'ai faite a été de me débarrasser de mon Xorg.conf car il causait plus de problèmes qu'il ne résolvait pas. Depuis que j’utilise une carte nvdia, j’ai finalement trouvé que l’utilisation de disper était la meilleure façon de faire. Je l'avais escompté auparavant car ses commandes standard ne pouvaient pas réaliser ma configuration dualview, mais j'ai alors découvert que je pouvais créer un métamode personnalisé à utiliser avec disper.
Pour créer le métamode personnalisé, j’ai utilisé les valeurs stockées dans Xorg.conf avec les tests précédents avec nv-control-dpy et xrandr comme guide. Ce métamode et d'autres valeurs twinview ont été ajoutés à un fichier qui peut être transmis au disper via stdin .
En raison de la présence de moniteurs de tailles différentes avec Twinview, je dois utiliser XCreateMouseVoid , comme décrit dans ce question .
Vous trouverez ci-dessous une liste complète des scripts et des fichiers avec leur contenu.
Créez le script XCreateMouseVoid:
Nom du script: ~/.mousevoid
#!/bin/bash
echo "Mouse Void"
/opt/XCreateMouseVoid/XCreateMouseVoid 0 1112 1280 88 &
/opt/XCreateMouseVoid/XCreateMouseVoid 0 0 1280 88 &
chmod +x ~/.mousevoid
Créer un fichier de paramètres Disper:
Nom du fichier: ~/.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
Créez le script de session d'exportation dbus:
Nom du 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
Défini sur l'exécutable utilisateur uniquement: chmod 700 ~/.export_x_info
Puis mettez-le dans les applications de démarrage:
Name: X Environment Variables
Command: /home/your_user/.export_x_info
Sauf si vous redémarrez, vous devez exécuter ~/.export_x_info pour créer le fichier . Xdbus .
Créez la règle udev qui s'exécutera avec un événement de dock:
Nom du 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
Créez le script associé à la règle udev:
Nom du 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
Créer le script de désancrage (modifier votre_utilisateur pour correspondre à votre nom d'utilisateur):
Nom du 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
Créer le script de dock (changer votre_utilisateur pour correspondre à votre nom d'utilisateur):
Nom du 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
Pour déboguer les scripts du dock, vous devez activer la journalisation de débogage udev:
udevadm control --log-priority=debug
Puis ouvrez syslog dans la visionneuse de fichiers journaux
nVidia Readme: Config Twinview , Options de configuration X
Autorandr
Disper PPA
nv-control-dpy
Forum Ubuntu - Scripts Un/Dock
Thinkwiki
devadm
Vous pouvez utiliser autorandr .
Détectez automatiquement le matériel d'affichage de connexion et chargez la configuration X11 appropriée à l'aide de xrandr ou de disper
Sélection automatique d'une configuration d'affichage basée sur les périphériques connectés
Voir également: