Como trocar os wallpapers e fundo da tela de login automaticamente no Linux


Esta versão é um melhoramento de: Como trocar os wallpapers e fundo da tela de login automaticamente no Debian(ou qualquer distribuição) - 2016


Vamos configurar uma pasta padrão para os wallpapers na nossa home, e nesta pasta também estará o script que fará a alternância dos wallpapers e uma pasta images para as imagens.
/home/seu_usuario/wallpapers/images
Na versão anterior uma tarefa era configurada no cron para executar o script de tempos em tempos de acordo com sua preferência, nesta versão não será necessário configurar o cron, pois o script rodará como um daemon e o fundo da tela de login também será alternado de acordo com o wallpaper.

1. Crie as pastas na sua home para conter o script e as imagens que serão os wallpapers:
mkdir -p /home/seu_usuario/wallpapers/images
2. Crie um arquivo com seu editor de textos favorito com o nome: slideshow-loop.sh e com o conteúdo:
Importante: O script deve ser criado dentro da pasta /home/seu_usuario/wallpapers
#!/bin/bash
for i in $HOME/wallpapers/images/*' '* ; do mv "$i" "${i// /_}" ; done
ls $HOME/wallpapers/slideshow.log
if [ $? -eq 0 ]; then
    LOG=1
    echo "$(date) Iniciando Wallpaper Slideshow" >> $HOME/wallpapers/slideshow.log
else
    LOG=0
fi
ls $HOME/wallpapers/slideshow.pid
if [ $? -eq 0 ]; then
    PIDOLD=$(cat $HOME/wallpapers/slideshow.pid)
    for ID in ${PIDOLD}
    do
 TREE=$(pstree $ID -p -a -l | cut -d, -f2 | cut -d' ' -f1)
 for P in ${TREE}
 do
     kill $P
 done
    done
    PIDX=`ps -eaf | grep slideshow-loop.sh | grep -v grep | awk '{print $2}'`
    rm $HOME/wallpapers/slideshow.pid
    echo "$PIDX" > $HOME/wallpapers/slideshow.pid    
else
    PIDX=`ps -eaf | grep slideshow-loop.sh | grep -v grep | awk '{print $2}'`
    echo "$PIDX" > $HOME/wallpapers/slideshow.pid 
fi
while true; do
    INTERVAL=30m
    DIR=$HOME/wallpapers/images
    DIRROOT=$HOME/wallpapers
    FLOOR=1
    RANGE=`ls -1 "$DIR"/*.{png,jpg} | wc -l`
    FILE=$DIRROOT/wallpaper-login
    COUNTER=1
    NUMBER=$(cat $DIRROOT/count)
    # if [ $NUMBER -eq $RANGE ]; then
    #     NUMBER=1
    # fi
    if [ $NUMBER -gt $RANGE ]; then
 NUMBER=1
    fi
    for X in "$DIR"/*.{png,jpg}
    do
 if [ $NUMBER -eq $COUNTER ]; then
     ls $FILE > /dev/null
     if [ $? -eq 0 ] ; then
  rm $FILE
     fi
     pcmanfm --set-wallpaper="$X"
     ln -s $X $FILE
     rm $DIRROOT/count
     echo "$(($NUMBER+1))" > $DIRROOT/count
     if [ $LOG -eq 1 ]; then
  echo "$(date) $X" >> $HOME/wallpapers/slideshow.log
     fi
     break;
 fi
 COUNTER=$(($COUNTER+1))
    done
    sleep $INTERVAL
done
Faça o script executável:
chmod +x /home/seu_usuario/wallpapers/slideshow-loop.sh
3. Copie para a pasta(neste caso /home/seu_usuario/wallpapers/images) as imagens que você quer que sejam seus wallpapers.

4. Crie um arquivo com seu editor de textos favorito com o nome: slideshow-loop.desktop e com o conteúdo:
[Desktop Entry]
Name=Wallpaper Slideshow
Exec=/home/seu_usuario/wallpapers/slideshow-loop.sh
Icon=gpicview
Type=Application
X-GNOME-Autostart-enabled=true
Importante: Crie o arquivo slideshow-loop.desktop dentro da pasta /home/seu_ususario/.config/autostart, desta forma o daemon será iniciado no login.

Crie outro arquivo em /home/seu_usuario/wallpapers com o nome count, para isto execute este comando no terminal:
echo 1 > /home/seu_usuario/wallpapers/count
Este arquivo será o auxiliar para realizar o sequenciamento das imagens.

5. O script cria automaticamente um link simbólico para o wallpaper corrente, e este link simbólico será usado para configurar a tela de login.
a. Abra Configurações do LightDM:
Se Configurações do LightDM não estiver instalado, instale-o pelo terminal:
sudo apt-get install lightdm-gtk-greeter-settings
Nota: Este pacote está disponível apenas no Debian Stretch, mas pode ser instalado no Debian Jessie sem problemas, veja como: Como trocar os wallpapers e fundo da tela de login automaticamente no Debian(ou qualquer distribuição)

b. Digite a senha:

c. Clique no botão:

d. Selecione o link simbólico:

e. Salve as alterações:

Saia da sessão e veja que a tela de login está com o mesmo wallpaper que o seu desktop.

Informação: Esta versão do script pode gerar log das alternâncias dos wallpapers:

  • Para gerar log: Crie um arquivo vazio chamado slideshow.log na pasta /home/seu_usuario/wallpapers
  • Para não gerar log: Delete o arquivo slideshow.log