Este breve artigo ilustra o uso de estruturas condicionais em Shell Script, visando definir automaticamente o papel de parede do ambiente gráfico em função do horário no qual o computador é ligado. Testado apenas com o Fluxbox em Debian Sarge.
O código-fonte comentado do script está listado abaixo:
#!/bin/bash
###################################
# Pequeno script para gerenciar wallpaper em função
# do horário de uso do computador
# jhgb em 31012006
###################################
# extrai apenas a hora atual com o comando 'date'
hora=$(date +%H)
# define um wallpaper para uso durante a madrugada
if [ "$hora" -le 7 ]
then
/usr/bin/fbsetbg /mnt/windows/transporte/Anguish1.jpg
# define um wallpaper para uso durante o horário comercial
elif [ "$hora" -ge 7 -a "$hora" -le 18 ]
then
/usr/bin/fbsetbg /mnt/windows/transporte/technodream.jpg
# define um wallpaper para uso noturno, antes da meia-noite
else
/usr/bin/fbsetbg /home/jhgb/jh_00.jpg
fi
Discussão do código
# extrai apenas a hora atual com o comando 'date'
hora=$(date +%H)
A hora é extraída no formato 24h, explicitado pelo parâmetro %H do comando date, e armazenada na variável hora. Se desejar utilizar outros parâmetros, considere a leitura do manual do comando date [ man date ].
# define um wallpaper para uso durante a madrugada
if [ "$hora" -le 7 ]
then
/usr/bin/fbsetbg /mnt/windows/transporte/Anguish1.jpg
No trecho de código acima, a figura Anguish1.jpg, localizada na pasta /mnt/windows/transporte será definida como wallpaper se a hora atual indicar até 6h59 da manhã. A indentação foi mantida por motivo de clareza.
# define um wallpaper para uso durante o horário comercial
elif [ "$hora" -ge 7 -a "$hora" -le 18 ]
then
/usr/bin/fbsetbg /mnt/windows/transporte/technodream.jpg
Neste trecho, caso a variável hora apresente valores entre 7 e 18, indicando um pouco mais do que o horário comercial, a figura technodream.jpg será definida como wallpaper. Repare que o comando deve ser lido como "Se a hora for maior ou igual a 7 e menor que 18".
# define um wallpaper para uso noturno, antes da meia-noite
else
/usr/bin/fbsetbg /home/jhgb/jh_00.jpg
fi
Finalmente, se a hora da inicialização estiver entre 18 e 23, jh_00.jpg será o wallpaper.
Detalhe: se a curiosidade for muito grande, posso enviar as imagens em pvt por e-mail, exceto a jh_00.jpg, pois trata-se de um wallpaper exclusivo, feito por um artista especialmente para meus filhos.
[1] Comentário enviado por removido em 25/04/2006 - 11:00h
Interessante para aprendizagem da estrutura de controle, mas sinceramente não vejo uma utilização prática, já que ele só altera na inicialização. Seria interessante, talvez, demonstrar como colocar isso no crontab, em horas determinadas.
[3] Comentário enviado por jhgb em 25/04/2006 - 14:22h
Olá fdettoni.
Embora o objetivo do artigo originalmente não seja esse, e a inserção disso no cron é uma das implementações possíveis, podemos alterar o cron do sistema. Logado como usuário comum, faça:
# inicia a alteração no crontab. O editor que abrirá depende de cada instalação...
crontab -e
# roda o script wallpaper a cada hora cheia
0 * * * * /usr/local/wallpaper
Salve e saia.
Isso força a checagem do horário, e eventual alteração do wallpaper, de hora em hora.
[5] Comentário enviado por removido em 25/04/2006 - 18:10h
Ótimo artigo. Posso dar uma sugestão?
Uma coisa legal seria ter um arquivo de configuração com uma lista de wallpapers que eu quero randomizar, ou até mesmo um par de wallpaper/hora:
[6] Comentário enviado por sirelven em 25/04/2006 - 21:24h
Rafael
No KDE já tem essa opção, vá na configuração de wallpapers (clique com o botão direito no desktop, vá em propriedades), selecione multiplos, adicione as fotos que você quer e lá mesmo tem um campo para definir troca automática, e em quais intervalos, além de exibir sequencialmente ou randomicamente.
Estou num xispita agora, dai não tenho a sequencia exata de comandos, caso se interesse depois lhe envio corretamente.
O artigo é interessante como demonstração de conceitos e em casos em que o ambiente desktop não faz isso sozinho, como é o caso em gerenciadores de janelas simples.
[10] Comentário enviado por cyberemb em 08/06/2007 - 08:29h
Boa dica, Sera que alguem sabe se tem como eu colocar wall , nas estações? Tipo tem um servidor com firewall e proxy, e as outras maquinas todas com win, e qundo as maquinas logarem no server, ja abri com wallpaper que defini no servidor.