Dock / UnDock-Skripte
Ich habe endlich ein komplettes Skript-Setup zusammengestellt, das meinen Dock-Status erkennt und die Monitore automatisch wechselt.
Das erste, was ich tat, war, meine Xorg.conf loszuwerden, da sie mehr Probleme verursachte, die sie löste. Da ich eine NVDIA-Karte verwende, stellte ich schließlich fest, dass die Verwendung von Disper der beste Weg ist. Ich hatte es zuvor reduziert, da seine Standardbefehle mein Dualview-Setup nicht erreichen konnten, aber dann stellte ich fest, dass ich einen benutzerdefinierten Metamode erstellen konnte, der mit disper verwendet werden konnte.
Um den benutzerdefinierten Metamode zu erstellen, habe ich die in Xorg.conf gespeicherten Werte zusammen mit früheren Tests mit nv-control-dpy und xrandr als Leitfaden verwendet. Dieser Metamode und andere Twinview-Werte wurden einer Datei hinzugefügt, die über stdin an disper übergeben werden kann .
Aufgrund der unterschiedlichen Größe von Monitoren mit Twinview muss ich XCreateMouseVoid verwenden , wie in dieser Frage beschrieben .
Nachfolgend finden Sie eine vollständige Aufschlüsselung der Skripte und Dateien mit ihrem Inhalt.
Skripte
Erstellen Sie ein XCreateMouseVoid-Skript:
Skriptname: ~/.mousevoid
#!/bin/bash
echo "Mouse Void"
/opt/XCreateMouseVoid/XCreateMouseVoid 0 1112 1280 88 &
/opt/XCreateMouseVoid/XCreateMouseVoid 0 0 1280 88 &
chmod +x ~/.mousevoid
Disper-Einstellungsdatei erstellen:
Dateiname: ~/.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
Erstellen Sie das Export-dbus-Sitzungsskript:
Skriptname: ~/.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
Nur auf vom Benutzer ausführbare Datei festlegen: chmod 700 ~/.export_x_info
Dann legen Sie es in Startup Applications:
Name: X Environment Variables
Command: /home/your_user/.export_x_info
Sofern Sie nicht neu starten, müssen Sie ~ / .export_x_info ausführen, um die .Xdbus- Datei zu erstellen
Erstellen Sie die udev-Regel, mit der bei einem Dock-Ereignis ausgeführt wird:
Skriptname: /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
Erstellen Sie das Skript, das der udev-Regel zugeordnet ist:
Skriptname: /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
Erstellen Sie das Undock-Skript (ändern Sie Ihren_Benutzer entsprechend Ihrem Benutzernamen):
Skriptname: /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
Erstellen Sie das Dock-Skript (ändern Sie Ihren_Benutzer entsprechend Ihrem Benutzernamen):
Skriptname: /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
Debuggen
Um die Dock-Skripte zu debuggen, müssen Sie die udev-Debug-Protokollierung aktivieren:
udevadm control --log-priority=debug
Öffnen Sie dann das Syslog im Log File Viewer
Ressourcen
nVidia Readme: Config Twinview , X
Konfigurationsoptionen Autorandr
Disper PPA
nv-control-dpy
Ubuntu-Forum - Un / Dock-Skripte
Thinkwiki
udevadm