Frage

Ich verwende den Zugriff auf gründlichen DBUS von einem Prozess. Das Problem ist, dass es von einem anderen Benutzer ausgeführt wird und Sitzung des DBUS ist anders für sie. So kann ich nicht acces Anwendung, die DBUS durch einen anderen Prozess verwendet, wenn die Sitzungen unterschiedlich sind. Ich fand den Weg, um dieses Problem zu beheben: einige Skript schreiben in der Datei dbus Sitzungsdaten vom Hauptnutzer (Ich stelle es bei Systembelastung). Hier ist das Skript:

#!/bin/bash
touch /.Xdbus
chmod 666 /.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > /.Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> /.Xdbus

Hier ist ein Beispiel für diese Datei:

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023
export DBUS_SESSION_BUS_ADDRESS

Nun Daten ausführen muss ich nur noch aus dieser Datei und beide DBUS Sitzungen gleich sein wird. Hier einige Probleme:

#!/bin/bash
if [ -f /.Xdbus ]
then
    source /.Xdbus; /usr/bin/purple-remote "setstatus?status=away&message=At lunch"
else
    echo "File doesnt exist"
fi

Wie man sehen konnte, ich bin mit Pidgin als DBUS Anwendung. Aber es führt den Fehler, dass es keine lila Anwendung, so dass die D-BUS-Sitzungen sind anders! So comand:

source /.Xdbus

Hat nicht funktioniert. Warum?


UPD

source /.Xdbus; echo $DBUS_SESSION_BUS_ADDRESS; /usr/bin/purple-remote "setstatus?status=away&message=At lunch"; echo $DBUS_SESSION_BUS_ADDRESS;

?

unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023 No existing libpurple instance detected. unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023
War es hilfreich?

Lösung

Auf der Basis Ihrer Update lautet der Befehl source arbeiten. Daher ist das Problem mit purple-remote oder libpurple oder einer Abhängigkeit anstatt mit Ihrem Bash-Skript.

Es ist keine gute Idee, solche Dateien im Stammverzeichnis zu erstellen. Versuchen Sie, eine geeignete Stelle für die Datei auswählen. Eine der folgenden vielleicht:

  • /home/username/.Xdbus
  • /var/local/.Xdbus - haben Sie vielleicht Ihren Benutzer zur Gruppe hinzuzufügen, die dieses Verzeichnis besitzt
  • /tmp/.Xdbus

Andere Tipps

Ich denke, es liegt daran, dass Sie verwenden / welche die Wurzel des Dateisystems ist. Was Sie wollen, ist ./ oder ein absoluter Pfad als sagte Dennis.

Sie können auch $ PWD / Datei oder $ {PWD} / Datei

verwenden
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top