Estoy tratando de cambiar mi fondo de pantalla a una imagen aleatoria usando el script sugerido por Indrajith Indraprastham aquí: ¿Cómo cambiar el fondo del escritorio desde la línea de comandos en Unity?
Cuando ejecuto el script desde una ventana de terminal, el bg cambia muy bien, pero cuando se ejecuta desde cron, recibo este error:
(proceso: 21901): dconf-WARNING **: no se pudieron confirmar los cambios en dconf: Error al generar la línea de comando 'dbus-launch --autolaunch = 00216c114dcf433c9bb9009985d607d6 --binary-syntax --close-stderr': el proceso secundario salió con el código 1
Apreciaria cualquier sugerencia.
Respuestas:
Edición de gsettings desde cron; variable de entorno faltante
Si ejecuta el script desde su propio entorno (por ejemplo, desde una ventana de terminal o desde aplicaciones de inicio), se establecerán varias variables de entorno.
cron
sin embargo, ejecuta su script con un conjunto limitado de variables de entorno.Para editar con
gsettings
éxito desdecron
, debe establecer laDBUS_SESSION_BUS_ADDRESS
variable de entorno. Puede hacerlo agregando dos líneas a su secuencia de comandos, como se describe aquí (y a continuación).Su secuencia de comandos, incluida la configuración de la variable necesaria
El script de aquí , editado para incluir la
DBUS_SESSION_BUS_ADDRESS
variable de entorno, se convierte en:Relacionado: Ejecutar .sh cada 5 minutos
fuente
PID=$(pgrep -f 'gnome-session' | head -n1)
¡ Pruébalo !DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
con$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)
Since grep también obtiene el nombre de la variable. fuentepgrep gnome-session
puede devolver más de un pid si varios usuarios están conectados al sistema (cada uno ejecuta gnome-session). QuizásEUID=$(id --real --user)
yPID=$(pgrep --euid $EUID gnome-session)
sería una forma de obtener solo el PID asociado con la sesión de gnomo del usuario actual.