Necesito automatizar la configuración de escritorio a través de Puppet, terminal virtual o ssh.
Desafortunadamente, la invocación de gsettingsví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 $DISPLAYcon export DISPLAY=:0.0da 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_ADDRESSvariable 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.shCon este script podemos hacer lo siguiente, suponiendo que el
unityproceso 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
$USERvariable de entorno y su UID en la$UIDvariable. Cuando se ejecutansudo, están en las variables$SUDO_USERy$SUDO_UID. Dicho esto, ¿por qué incluso ejecutarías estosudoen primer lugar? Usarsudo -u $YOUR_USERes como no usarsudoen absoluto. Finalmente, suwho | awk . . .comando no obtiene su ID, imprime todas las ID de todos los usuarios actualmente conectados al sistema.