Wie kann man DBUS_SESSION_BUS_ADDRESS in tmux aktualisieren, wenn sich die Adresse ändert?

1033
tijagi

Mir ist aufgefallen, dass ich in einem tmux-Bereich keinen Dampf mehr laufen kann: Das gab mir einen Fehler

Error: Unable to open a connection to X. Check your DISPLAY environment variable and make sure that you have enabled X. If you are running remotely, make sure that you have a remote connection which will allow an X connection. 

Wenn zur gleichen Zeit kein Problem in einem gewöhnlichen Terminal auftritt. Das brachte mich zu dem Schluss, dass sich etwas in der Programmumgebung unterscheidet, und ich hatte Recht, nachdem ich die Umgebung von beiden Terminals exportiert hatte

$ env > /tmp/t1 $ env > /tmp/t2 

Und sie unterscheiden

$ diff -u /tmp/t 

Ich habe festgestellt, dass DBUS_SESSION_BUS_ADDRESS unterschiedlich ist

-DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-CX81GDMBcL,guid=712e96f4ecdc3b9bf1eca21254ed44e3 +DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-axu0HojvNi,guid=a28fcde62f6d40aa587c708a54b83924 

Es muss sein, dass ich möglicherweise X neu starte und die Umgebung in tmuxSitzungen nicht durch den dbus-launchBefehl beeinflusst wird, der in meinem WM-Startbefehl in ~ / .xinitrc stattfindet:

eval exec ck-launch-session dbus-launch --sh-syntax --exit-with-session i3 &>/dev/null 

Wie aktualisiere ich also diese Variable, wenn sich die Adresse ändert?

1

1 Antwort auf die Frage

1
tijagi

/ ich bin dumm. Ich musste nur DBUS_SESSION_BUS_ADDRESS in meinem tmux-Fenster im Autostart-Skript reexportieren, wenn ich überprüfe, ob es bereits läuft oder gestartet werden sollte.

Der Abschnitt zu tmux in meiner autorun.sh sieht nun so aus:

tmux="tmux -u -f $HOME/.tmux/config -S $HOME/.tmux/socket" if pgrep -u $UID -f '^tmux.*$' &>/dev/null; then for pane in `$tmux list-windows -t0 | sed -r 's/^([0-9]+):.*/\1/g'`; do $tmux send -t 0:$pane C-c  $tmux send -t 0:$pane export DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" ENTER $tmux send -t 0:$pane export DISPLAY="$DISPLAY" ENTER $tmux send -t 0:$pane C-c done else $tmux \ new -d su \; \ set remain-on-exit on \; \ neww su \; \ set remain-on-exit on \; \ select-window -t 0:1 fi 

Die erste C-cbesteht darin, die Zeile vor dem Ausführen von Exportbefehlen von den restlichen Angaben zu löschen. Die zweite ist das Löschen der Zeile danach (tmux oder bash werden die Befehle in die Befehlszeile kopieren, ich weiß nicht warum)

Nein, ich habe mich geirrt. Das hilft nicht. Oder es reicht nicht aus. tijagi vor 9 Jahren 0
Natürlich nicht, ich habe auch vergessen "DISPLAY" zu exportieren! Jetzt funktioniert es gut. tijagi vor 9 Jahren 0