Von udev gestartete Skripte haben keinen DISPLAY-Zugriff mehr?
Ich habe ein Skript, von dem ausgeführt wirdudev
wenn ich mein externes Laufwerk anschließe. Es hat immer funktioniert. Aber nach dem Upgrade vonLinux 3.8 / Xorg 1.12 / Mint 14 (Ubuntu 12.10 kompatibel) zuLinux 3.11 / Xorg 1.14 / Mint 16 (Ubuntu 13.10 kompatibel), es funktioniert nicht mehr.
Das Skript wird weiterhin ausgeführt, aber keiner der Befehle, für die die Anzeige erforderlich ist, funktioniert. Ich habe das herausgefunden, indem ich dieudev
Daemon und manuell ausführenudevd --debug
für ausführliche Ausgabe (mehr unten).
In diesem Skript wurde gearbeitetMint 14 / 12.10:
export DISPLAY=:0
UUID=$1
DEV=$2
notify-send -t 700 "mounting $DEV ($UUID)"
gnome-terminal -t "Backing up home..." -x rsync long line of data
zenity --warning --text="Done."
Aber nicht mehr inMint 16 / 13.10. Für den Fall, dass Sie sich über mögliche Lösungen wundern, habe ich nach und nach Dinge hinzugefügt und jetzt sieht es so aus:
export DISPLAY=:0.0
xhost +local:
xhost +si:localuser:root
xhost +
DISPLAY=:0.0
export DISPLAY=:0.0
UUID=$1
DEV=$2
notify-send -t 700 "mounting $DEV ($UUID)"
gnome-terminal -t "Backing up home..." -x rsync long line of data
zenity --warning --text="Done." --display=:0.0
Aber es geht immer noch nicht.udevd --debug
zeigt noch folgendes:
'(err) 'No protocol specified'
'(err) ''
'(err) '** (gnome-terminal:24171): WARNING **: Could not open X display'
'(err) 'No protocol specified'
'(err) 'Failed to parse arguments: Cannot open display: '
'(err) 'No protocol specified'
'(err) ''
'(err) '** (zenity:24173): WARNING **: Could not open X display'
'(err) 'No protocol specified'
'(err) ''
'(err) '(zenity:24173): Gtk-WARNING **: cannot open display: :0.0'
'(err) 'No protocol specified'
Beachten Sie, dass jede Bash-Logik funktioniert. Echo Test Vars zu>>/tmp/test.log
funktioniert. Es geht nur um den Zugriff auf das Display, das nicht mehr funktioniert.
Das macht mich verrückt. Was ist der richtige Weg, um dies jetzt zu erreichen?
Update 20.12.2013Also, im vorherigen Ubuntu,X
Befehle würden automatisch den Weg zum aktuellen findenX
using user.
Nun scheine ich diese beiden Dinge zu brauchenjedes Mal:
Auf derX
using user:xhost +si:localuser:root
Auf derroot/udev
Seite:KopierenX
Benutzer verwenden~/.Xauthority
Datei an/root
Dies fühlt sich an wie ein Schritt in die Vergangenheit. Dies funktioniert nur per Skript, wenn ich mich jedes Mal als derselbe Benutzer anmelde, sodass ich das kopieren kann.Xauthority
Datei von der Startseite dieses Benutzers, wenn das Skript ausgeführt wird.
Welchen 'Trick' benutzte das alte Ubuntu, um dies automatisch 'magisch' machen zu lassen?