Background não mudando usando gsettings do cron

6

Estou tentando mudar meu papel de parede para uma imagem aleatória usando o script sugerido por Indrajith Indraprastham aqui: Como alterar o plano de fundo da área de trabalho a partir da linha de comando na Unidade?

Quando eu executo o script a partir de uma janela de terminal, o bg muda muito bem, mas quando ele é executado a partir do cron, recebo este erro:

  

(process: 21901): dconf-WARNING **: falha ao confirmar as alterações no dconf: Erro ao gerar linha de comando 'dbus-launch --autolaunch = 00216c114dcf433c9bb9009985d607d6 --binary-syntax --close-stderr': processo filho encerrado com o código 1

Gostaria de receber sugestões.

    
por Shaun 07.03.2016 / 00:37

1 resposta

11

Editando gsettings do cron; variável de ambiente ausente

Se você executar o script em seu próprio ambiente (por exemplo, em uma janela de terminal ou em Aplicativos de inicialização), várias variáveis de ambiente serão definidas. No entanto, cron executa seu script com um conjunto limitado de variáveis de ambiente.

Para editar gsettings com sucesso de cron , você precisa definir a variável de ambiente DBUS_SESSION_BUS_ADDRESS . Você pode fazer isso adicionando duas linhas ao seu script, conforme descrito aqui (e abaixo).

Seu script, incluindo a configuração da variável necessária

O script daqui , editado para incluir a variável de ambiente DBUS_SESSION_BUS_ADDRESS , torna-se:

#!/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"

Relacionados: Executando .sh a cada 5 minutos

    
por Jacob Vlijm 07.03.2016 / 12:35