Ich muss die Desktop-Konfiguration über Puppet, virtuelles Terminal oder ssh automatisieren.
Leider bietet der Aufruf von gsettings
via ssh oder virtuellem Terminal:
gsettings set org.compiz.core:/org/compiz/profiles/unity/plugins/core/ hsize "4"
(process:29520): dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY
Wenn ich das $DISPLAY
mit setze export DISPLAY=:0.0
gibt es einen anderen Fehler:
(process:29862): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refused
Was kann ich tun?
remote-access
dconf
gsettings
puppet
remote-login
Adam Ryczkowski
quelle
quelle
DBUS_SESSION_BUS_ADDRESS
, sondern auchXDG_RUNTIME_DIR
.Antworten:
Der Schlüssel ist das Setzen der
DBUS_SESSION_BUS_ADDRESS
Umgebungsvariablen.In diesem Thread habe ich das folgende Skript gefunden, das dabei hilft, den korrekten Wert dieser Variablen zu ermitteln. Es erfordert den Namen des Prozesses, der auf dem Desktop ausgeführt wird, auf dem die dbus-Einstellungen geändert werden sollen. (Es können mehr als 1 Grafiksitzungen gleichzeitig ausgeführt werden.) Nennen wir es
discover_session_bus_address.sh
Mit diesem Skript können wir unter der Annahme, dass der
unity
Prozess auf dem Desktop ausgeführt wird, auf den wir unsere Einstellungen anwenden möchten, Folgendes ausführen:Und die Dinge sollten gut funktionieren.
quelle
Ich hatte das gleiche Problem, als ich versuchte, während der Bereitstellung gsettings-Änderungen für ein Vagabund-Image über SSH vorzunehmen.
Diese Lösung /ubuntu//a/326773 hat für mich den Trick gemacht, ohne nach der aktiven Verbindung zu fischen und die Umgebung zu fälschen. YMMV ...
quelle
Ich habe ein POST-Install-Skript, das mein gsetting festlegt. Da ich das Skript als sudo ausführe, ist die EUID 0, daher muss ich die $ RUID (Real User ID) finden.
Hier ist mein Ansatz:
quelle
$USER
Umgebungsvariablen und Ihre UID in der$UID
Variablen gespeichert . Während der Ausführung befindensudo
sie sich in den Variablen$SUDO_USER
und$SUDO_UID
. Das heißt, warum würdest du das überhaupt machensudo
? Verwendensudo -u $YOUR_USER
ist so, als würde man überhaupt nicht verwendensudo
. Schließlichwho | awk . . .
erhält Ihr Befehl nicht Ihre ID, sondern druckt alle IDs aller derzeit im System angemeldeten Benutzer.