Alterar papel de parece dinamicamente

Olá, eu gostaria de criar um script para ser executado no cron e alterar meu papel de parece de acordo com o horário do dia. Por exemplo, das 8h30 às 17h30 de segunda a sexta eu quero um wallpaper mais profissional, e nos outros horários eu gostaria de um wallpaper pessoal.
Eu fiz o script e está funcionando corretamente quando executo ele no terminal. Mas ao colocar ele no cron, simplesmente não troca o wallpaper. Vou mandar abaixo a linha que está no cron e o script que estou usando.

Linha no cron:
30 * * * * DISPLAY=:0 /home/kevin/MEGAsync/Documentos/Scripts/./wallpapers.sh

Script:

#!/bin/sh

HOUR=$(date +"%H%M")
WEEKDAY=$(date +"%u")

if [ "$WEEKDAY" -lt "6" ]
then
    if [ "$HOUR" -gt "0830" ]
    then
        if [ "$HOUR" -lt "1730" ]
        then
            echo "Hora de trabalhar!" >> /home/kevin/log-wallpaper.log
            gsettings set org.gnome.desktop.background picture-uri "file:///home/kevin/Imagens/wallpaper-trabalho.png"
        else
            echo "Hora de descansar! Está muito tarde!" >> /home/kevin/log-wallpaper.log
            gsettings set org.gnome.desktop.background picture-uri "file:///home/kevin/Imagens/wallpaper-pessoal.png"
        fi
    else
        echo "Hora de descansar! Está muito cedo!" >> /home/kevin/log-wallpaper.log
        gsettings set org.gnome.desktop.background picture-uri "file:///home/kevin/Imagens/wallpaper-pessoal.png"
    fi
else
    echo "Hora de desEste texto ficará oculto.cansar! Fim de semana!" >> /home/kevin/log-wallpaper.log
    gsettings set org.gnome.desktop.background picture-uri "file:///home/kevin/Imagens/wallpaper-pessoal.png"
fi

Se um duplo clique no arquivo também funciona, acho que uma solução seria colocar o script em um loop while true; do; ... ; sleep 60; done e colocar o script como um aplicativo de inicialização do Cinnamon.

Se colocar no cron o script é executado como root, não? Imagino que vc não queira isso… Coloca no ~/.config/autostart/

Desse modo acredito que ele vai ser executado somente uma vez, não é?

Ótima ideia! Vou testar dessa maneira. Em breve posto se resolveu o problema.

Se você quer só trocar o wallpaper, não precisa usar o cron, pode usar um XML pra trocar o wallpaper.

Dá uma olhada nisso…

Fiz dessa forma e não funcionou. Ele detecta certinho o horário e adiciona no log a ação que deve fazer. Mas o wallpaper não foi alterado :slightly_frowning_face:

Não entendi muito bem como funciona. Eu rodei o comando e ele extraiu algumas imagens e xml. Mas como uso esse xml?

Vai nas configurações de papel de parede, mas só funciona em GNOME e derivados, tipo MATE, Cinnamon…

Essa linha tá certa? :thinking:
Não entendo de script, mas fiquei em dúvida se precisa colocar “./wallpapers.sh” ou só “wallpapers.sh” (sem o ./)

Eu tentei tirar o “./” e continua sem alterar o wallpaper. Ele adiciona no log certinho a mensagem mas o wallpaper se mantém.

No programa “Aplicativos da Inicialização” deixei dessa forma, me parece correto. Seria assim mesmo né? (caso não fosse feito pelo cron)

Era pra ser desse jeito mesmo.

O que é realmente estranho é o fato dele agir quando sob o terminal mas não quando iniciado automaticamente. Talvez um atraso de inicialização de uns 30s (que eu já vi resolver scripts relacionados à impressão) ajude? Ou usar um wallpaper XML como disse o @rauldipeas?

Pra wallpaper, o certo é usar um XML, na Wiki do Ubuntu tem tutorial sobre isso, foi de lá que eu tirei as informações pra montar o meu.

Tentei colocar o atraso e continua sem alterar o wallpaper.

Sobre o XML, não consegui encontrar uma forma de usar ele dentro do Linux Mint. E parece que o XML tem a duração de cada wallpaper não é? Dessa forma eu não conseguiria fazer funcionar daquele jeito que comentei de mostrar um wallpaper durante das 8h30 às 17h30 e outro wallpaper fora desse horário… Posso estar enganado, mas é isso mesmo @rauldipeas?

Como eu disse, o XML que passei é pra você usar como exemplo pra fazer o seu próprio, você pode setar o tempo que quiser lá, tem um horário inicial e o intervalo de tempo entre as imagens.

@rauldipeas, consegui uma forma de usar o XML. Basta executar o seguinte no terminal:

gsettings set org.gnome.desktop.background picture-uri "file:///usr/share/backgrounds/bitday/bitday.xml"

Vou fazer uns testes agora, mas acredito que tenha funcionado.

1 Curtida

Seria como colocar os PNGs, mas em XML, tipo:
gsettings set org.gnome.desktop.background picture-uri "file:///home/kevin/Imagens/wallpapers.xml"

Tava lendo na Wiki do Ubuntu e não é o caso.
Você pode colocar um “tempo zero” de referência (como 1o de janeiro desse ano, 8h30 da manhã) e colocar um wallpaper para durar 39600s (11 horas, ou seja, até 17h30) e outro 46800s (13h). Vai ficar nesse loop, abrangendo exatamente 24 horas.

2 Curtidas