Necesito automatizar la configuración de escritorio a través de Puppet, terminal virtual o ssh.
Desafortunadamente, la invocación de gsettings
vía ssh o terminal virtual da:
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
Cuando configuro $DISPLAY
con export DISPLAY=:0.0
da otro error:
(process:29862): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refused
¿Que puedo hacer?
remote-access
dconf
gsettings
puppet
remote-login
Adam Ryczkowski
fuente
fuente
DBUS_SESSION_BUS_ADDRESS
, sino tambiénXDG_RUNTIME_DIR
.Respuestas:
La clave es establecer la
DBUS_SESSION_BUS_ADDRESS
variable de entorno.En este hilo encontré el siguiente script, que ayuda a obtener el valor correcto de esa variable. Requiere el nombre del proceso, que se ejecuta en el escritorio, en el que queremos cambiar la configuración de dbus. (Puede haber más de 1 sesiones gráficas en ejecución en paralelo). Vamos a llamarlo
discover_session_bus_address.sh
Con este script podemos hacer lo siguiente, suponiendo que el
unity
proceso se esté ejecutando en el escritorio, en el que queremos aplicar nuestra configuración:Y las cosas deberían funcionar bien.
fuente
Estaba teniendo este mismo problema al intentar realizar cambios de configuración para una imagen vagabunda a través de SSH durante el aprovisionamiento.
Esta solución /ubuntu//a/326773 hizo el truco para mí sin toda la pesca de la conexión activa y tratando de burlar el medio ambiente. YMMV ...
fuente
Tengo un script POST-Install que establece mi gsetting. Debido a que ejecuto el script como sudo, el EUID es 0, por lo tanto, tengo que encontrar el $ RUID (ID de usuario real).
Aquí está mi enfoque:
fuente
$USER
variable de entorno y su UID en la$UID
variable. Cuando se ejecutansudo
, están en las variables$SUDO_USER
y$SUDO_UID
. Dicho esto, ¿por qué incluso ejecutarías estosudo
en primer lugar? Usarsudo -u $YOUR_USER
es como no usarsudo
en absoluto. Finalmente, suwho | awk . . .
comando no obtiene su ID, imprime todas las ID de todos los usuarios actualmente conectados al sistema.