Estou tentando alterar 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 da linha de comando no Unity?
Quando executo o script a partir de uma janela de terminal, a bg muda muito bem, mas quando é executada a partir do cron, recebo este erro:
(processo: 21901): dconf-WARNING **: falha ao confirmar as alterações no dconf: Erro ao gerar a linha de comando 'dbus-launch --autolaunch = 00216c114dcf433c9bb9009985d607d6 --binary-syntax --close-stderr': processo filho encerrado com o código 1
Gostaria muito de receber sugestões.
Respostas:
Editando gsettings do cron; variável de ambiente ausente
Se você executar o script em seu próprio ambiente (por exemplo, em uma janela do terminal ou em Aplicativos de Inicialização), várias variáveis de ambiente serão definidas.
cron
no entanto, executa seu script com um conjunto limitado de variáveis de ambiente.Para editar com
gsettings
êxitocron
, é necessário definir aDBUS_SESSION_BUS_ADDRESS
variável de ambiente. 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
DBUS_SESSION_BUS_ADDRESS
variável de ambiente, torna-se:Relacionado: Executando .sh a cada 5 minutos
fonte
PID=$(pgrep -f 'gnome-session' | head -n1)
!DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
por$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)
Since grep também recebe o nome da variável. fontepgrep gnome-session
pode retornar mais de um pid se vários usuários estiverem conectados ao sistema (cada um executando o gnome-session). TalvezEUID=$(id --real --user)
ePID=$(pgrep --euid $EUID gnome-session)
seria uma maneira de obter apenas o PID associado à sessão de gnomo do usuário atual.