Script Bash para trocar automaticamente o wallpaper no Ubuntu (GNOME), sem repetição e com suporte a modo escuro.
- Troca automática de wallpapers
- Intervalo de 10 minutos
- Não repete imagens até completar o ciclo
- Suporte a
picture-uri-dark - Execução como serviço systemd
O projeto deve estar localizado em:
~/PersonalProjects/WallpapperChanging/
├── wallpaper_changer.sh
└── wallpaper.service
As imagens devem estar em:
~/Imagens/wallpapers/
├── foto1.jpg
├── foto2.png
└── ...
⚠️ O diretório~/Imagens/wallpapers/precisa existir e ter imagens antes de iniciar o serviço. Crie-o se necessário:mkdir -p ~/Imagens/wallpapers
- Ubuntu com GNOME
gsettings(já incluso no Ubuntu com GNOME)systemd- Sessão gráfica ativa (o serviço depende do ambiente de desktop)
git clone https://github.com/MateusMo/Ubuntu-Wallpapper-Changing
cd WallpapperChangingmkdir -p ~/Imagens/wallpapers
# Copie suas imagens para ~/Imagens/wallpapers/Formatos suportados pelo GNOME:
.jpg,.jpeg,.png,.webp
chmod +x wallpaper_changer.shmkdir -p ~/.config/systemd/usercp wallpaper.service ~/.config/systemd/user/systemctl --user daemon-reloadsystemctl --user start wallpaper.servicesystemctl --user enable wallpaper.service👉 Isso faz o script rodar automaticamente ao iniciar o Ubuntu. Para funcionar no boot, o lingering do usuário precisa estar ativo (veja Observações).
systemctl --user stop wallpaper.servicesystemctl --user restart wallpaper.servicesystemctl --user status wallpaper.servicejournalctl --user -u wallpaper.service -fUse
journalctlpara depurar caso o wallpaper não mude.
O gsettings depende do barramento de sessão gráfica (DBUS_SESSION_BUS_ADDRESS).
Se o serviço iniciar antes da sessão gráfica estar pronta, o wallpaper não será alterado.
Caso isso ocorra, adicione um atraso no início do script ou use ExecStartPre no .service:
[Service]
ExecStartPre=/bin/sleep 5
ExecStart=%h/PersonalProjects/WallpapperChanging/wallpaper_changer.shPara que serviços --user rodem automaticamente no boot (sem necessidade de login gráfico prévio), ative o lingering:
loginctl enable-linger $USERSem isso, o serviço só sobe após o primeiro login.
O GNOME aceita os seguintes formatos como wallpaper:
.jpg, .jpeg, .png, .webp
Evite .gif, .bmp ou outros formatos incomuns — podem não ser reconhecidos.
O script já define picture-uri-dark, então o wallpaper muda tanto no tema claro quanto no escuro.
Ambos recebem a mesma imagem. Para comportamentos diferentes por tema, seria necessário adaptar o script.
Se preferir outro caminho para as imagens, edite a variável no início do script:
WALLPAPER_DIR="$HOME/Imagens/wallpapers"Troque pelo caminho desejado, por exemplo:
WALLPAPER_DIR="$HOME/Pictures/wallpapers"O script usa mapfile com find, o que lida corretamente com espaços em nomes de arquivo.
Não há necessidade de renomear suas imagens.