Lo sfondo non cambia usando gsettings da cron


11

Sto cercando di cambiare il mio sfondo in un'immagine casuale usando lo script suggerito da Indrajith Indraprastham qui: Come cambiare lo sfondo del desktop dalla riga di comando in Unity?

Quando eseguo lo script da una finestra del terminale, il bg cambia bene, ma quando viene eseguito da cron, mi viene inviato questo errore:

(processo: 21901): dconf-WARNING **: impossibile eseguire il commit delle modifiche a dconf: errore durante la generazione della riga di comando 'dbus-launch --autolaunch = 00216c114dcf433c9bb9009985d607d6 --binary-syntax --close-stderr': processo figlio terminato con il codice 1

Gradirei qualsiasi suggerimento.


1
@Merri a parte il fatto che le risposte non risolvono il problema di OP (che non lo renderebbe un inganno comunque), come sarebbe un imbroglione ???? Lo stesso errore non significa che sia la stessa domanda.
Jacob Vlijm

Risposte:


16

Modifica di gsettings da cron; variabile d'ambiente mancante

Se si esegue lo script dal proprio ambiente (ad es. Da una finestra del terminale o da applicazioni di avvio), verranno impostate una serie di variabili di ambiente. crontuttavia esegue lo script con un set limitato di variabili di ambiente.

Per modificare gsettingscorrettamente da cron, è necessario impostare la DBUS_SESSION_BUS_ADDRESSvariabile di ambiente. Puoi farlo aggiungendo due righe al tuo script, come descritto qui (e sotto).

Il tuo script, inclusa l'impostazione della variabile necessaria

Lo script da qui , modificato per includere la DBUS_SESSION_BUS_ADDRESSvariabile d'ambiente, diventa quindi:

#!/bin/bash

PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

DIR="/home/indra/Pictures/wallpapers"
PIC=$(ls $DIR/* | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$PIC"

Correlati: eseguire .sh ogni 5 minuti


@Shaun Prego! Sono contento che funzioni :)
Jacob Vlijm

1
Ci sto provando con Cinnamon on Mint. Quando eseguo questo direttamente dal cli, ottengo "dconf-WARNING *: impossibile eseguire il commit delle modifiche a dconf: l'indirizzo indicato è vuoto". Prima funzionava (da cli), senza PID e DBUS_SESSION_ . (Ma non da cron)
donquixote,

1
@donquixote Try PID=$(pgrep -f 'gnome-session' | head -n1)!
Jānis Elmeris,

Puoi sostituirlo 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)Poiché grep ottiene anche il nome della variabile. fonte
wjandrea,

1
pgrep gnome-sessionpuò restituire più di un pid se più utenti sono connessi al sistema (ciascuno con gnome-session in esecuzione). Forse EUID=$(id --real --user)e PID=$(pgrep --euid $EUID gnome-session)sarebbe un modo per ottenere solo il PID associato alla sessione di gnome dell'utente corrente.
unutbu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.