Mudar aleatoriamente o papel de parede no GNOME 3

Publicado por Anderson Weller (última atualização em 12/11/2014)

[ Hits: 5.597 ]

Download 6108.wallpaper.sh




Estava cansado de visualizar sempre a mesma imagem no desktop do meu Debian/GNOME, então resolvi montar um script que alterasse automaticamente meu papel de parede a cada 30 minutos.

Primeiro baixei vários arquivos JPG e os armazenei em um único diretório, e depois configurei o cron para executar este script de tempos em tempos.

No script abaixo, basta alterar o preenchimento da variável "DIR" e inserir o diretório onde estão as suas imagens JPG (caso suas imagens sejam de outro tipo, basta fazer a alteração).

Para configurar o cron, basta executar o comando abaixo como usuário comum:

$ crontab -e

E depois incluir a seguinte linha (com a localização do seu script e a localização de um arquivo de log) que irá agendar a execução do script a cada 30 minutos (obs.: faça as devidas alterações):

*/30 * * * * export DISPLAY=:0&&/home/anderson/wallpaper.sh >> /home/anderson/log/log_wallpaper.txt 2>&1

Algumas observações sobre o script:

- Ele cria um subdiretório "ok" para armazenar as imagens já utilizadas em seu desktop, evitando dessa forma a repetição de imagens (enquanto não forem utilizadas todas as outras);
- O nome dos arquivos são automaticamente alterados caso haja algum caractere de espaço para evitar erros no script (os espaços são substituídos pelo caractere de sublinhado "_");
- As imagens são configuradas com a opção "picture-options zoom" para que toda a área de trabalho seja preenchida, mas sem que hajam distorções na foto (pesquise outras opções e altere-a caso deseje).

Detalhes do ambiente que utilizo:

- GNOME 3.4.2
- Debian 7.7
- Kernel Linux 3.2.0-4-amd64

Abs.

  



Esconder código-fonte

#!/bin/bash

# Script para mudar randomicamente o papel de parede no Gnome a partir de arquivos em um diretório.
  # Referências:
  # http://www.webupd8.org/2009/11/3-lines-script-to-automatically-change.html
  # http://somethingididnotknow.wordpress.com/2012/02/04/make-your-own-picture-changing-wallpaper-in-gnome3/
  # http://ubuntuforums.org/archive/index.php/t-2179775.html

  # Revisão 01 (2014-11-10): Permitir utilizar arquivos cujos nomes possuam espaços em branco.

  # Cron executa este script a cada 30 min (Inserir a linha abaixo com o comando: $ crontab -e ):
  # */30 * * * * export DISPLAY=:0&&/home/anderson/wallpaper.sh >> /home/anderson/log/log_wallpaper.txt 2>&1

# Diretório contendo as imagens (BASTA MUDAR AQUI)
DIR="/home/anderson/Imagens/Wallpaper/Interfacelift/1366x768"

# Cria um diretório para armazenar as imagens já utilizadas (evitando repetições enquanto não acabarem as imagens)
cd $DIR
DIR_OK="ok"
if [ ! -d $DIR_OK ] ; then
    mkdir $DIR_OK
fi

# Caso tenham acabado todas as imagens (JPG), move-as novamente de volta para o diretório das imagens
NUM_ARQUIVOS=$(ls *.jpg | wc -w)
if [ $NUM_ARQUIVOS -eq 0 ] ; then
   mv -f ./$DIR_OK/*.jpg .
fi

# Seleciona um dos arquivos JPG aleatoriamente
PIC=$(ls *.jpg | shuf -n1)

# Se haviam espaços no nome do arquivo, então renomeie o arquivo para evitar problemas - Revisão 01
PIC2=$(echo $PIC | sed 's/ /_/g')
if [ "$PIC" != "$PIC2"  ] ; then
   mv -f "$PIC" $PIC2
fi

# Move o arquivo selecionado para outra pasta antes de utilizá-lo como "Papel de Parede"
mv -f $PIC2 ./$DIR_OK/

# Comando para mudar a imagem do papel de parede no Gnome
gsettings set org.gnome.desktop.background picture-options zoom
gsettings set org.gnome.desktop.background picture-uri file://$DIR/$DIR_OK/$PIC2

exit 0

Scripts recomendados

Shuffle - Simples shell script que embaralha um array

RWwmaMp3 - converter wma para mp3

Script para pegar ip WAN para firewall com uma ou mais links de internet

Montar pasta do Samba

PDC linux desligando pc em uma de windows


  

Comentários
[1] Comentário enviado por moisespedro em 15/11/2014 - 19:06h

Uma pergunta: porque nao usar algo como o hsetroot ou o feh, que funcionam em TODOS os DEs/WMs?

[2] Comentário enviado por andersoncw em 15/11/2014 - 22:34h

Usei o 'gsettings' pois meu desktop é Gnome3, Essa sua ideia é muito boa. Não conhecia essas ferramentas, eu tenho que olhar mais com calma a funcionalidade delas. Abs.

[3] Comentário enviado por leonardo27 em 19/08/2017 - 23:52h

Muito bom, vou usar este script, só reparei uma coisinha ai.

# Caso tenham acabado todas as imagens (JPG), move-as novamente de volta para o diretório das imagens
NUM_ARQUIVOS=$(ls *.jpg | wc -w)
if [ $NUM_ARQUIVOS -eq 0 ] ; then
mv -f ./$DIR_OK/*.jpg .
fi

no if, como tem a pasta ok, ele nunca vai ser 0, só na primeira vez, então acredito que o correto seja.

if [ $NUM_ARQUIVOS -le 1 ] ; then
mv -f ./$DIR_OK/*.jpg .
fi
Neste caso se a quantidade de arquivo for <= 1 ele vai mover os arquivos novamente de volta para o diretório das imagens


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts