Definição automática de wallpaper em função do horário

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.

[ Hits: 17.857 ]

Por: Joao Henrique em 25/04/2006


Introdução



Como professor de cursos superiores relacionados à Computação h á vários anos, em diferentes disciplinas, sempre procurei mostrar aos alunos exemplos que ilustravam claramente as estruturas envolvidas em cada aula.

As estruturas de controle são decisivas em vários casos, onde deve prevalecer a lógica do aluno, deixando a implementação a um plano ligeiramente inferior. Para ilustrar estruturas de controle de fluxo em Shell Script - poderia ser em qualquer outra linguagem que tenha acesso a comandos do sistema - sugiro um script que define, automaticamente, o papel de parede em função do horário no qual o computador foi ligado.

Estrutura de controle envolvida


A idéia de utilizar uma estrutura de controle baseia-se nos seguintes objetivos:
  1. familiarizar o aluno com a lógica de funcionamento de comandos [if] aninhados;
  2. definir um modo prático de extrair dados a partir da resposta de um comando;
  3. aplicar a lógica da estrutura de controle a um exemplo real;
  4. incluir o script na inicialização do sistema operacional.

A estrutura de comandos [if] aninhados pode ser vista, de modo geral, como ilustrado abaixo:

if <teste lógico 1>
then
   <executa comando 1>
elif <teste lógico 2>
then
   <executa comando 2>
else
   <executa comando 3>

O ponto crucial deste, digamos, exercício, é definir a lógica para posicionar a hora da inicialização do computador em um dos três comandos, considerando o uso de três papéis de paredes diferentes: um durante a madrugada; outro durante o horário comercial e, finalmente, um para uso noturno até a meia-noite.

Diversas modificações são possíveis e implementáveis, como utilizar o cron para mudar automaticamente em função do horário de uso, mas o exercício tem um objetivo claro e definido.

Mãos ao código!

    Próxima página

Páginas do artigo
   1. Introdução
   2. Código-fonte do script
   3. Executando o script durante a inicialização
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Utilizando "expr" para "String Matching" através de expressões regulares em shell

Monitorar servidores e enviar alertas por e-mail e SMS

Redirecionamentos, Pipes e Fluxos

Operadores de redirecionamento

Recebendo seu IP dinâmico via email

  
Comentários
[1] Comentário enviado por fdettoni 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.

Em todo caso, está muito bem explicado.

[]'s

[2] Comentário enviado por rebinat em 25/04/2006 - 14:04h

como seria no kde???


hehhhe

muito bom artigo...

[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.

Até mais,
JH

[4] Comentário enviado por bosetti em 25/04/2006 - 14:23h

Achei bem útil isso, pode não ser interessante para alguns, mas é muito bom para quem gosta de variar constantemente de papel de parede como eu =p

Também gostaria de saber como fazer para usar no kde 3.4

[]'s
Rafael Bosetti

[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:

/home/otavio/wallpapers/wallpaper01.png 0
/home/otavio/wallpapers/wallpaper02.png 1
/home/otavio/wallpapers/wallpaper03.png 2

Abraços, e parabéns pelo artigo.

[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.

Até +

[7] Comentário enviado por oscarcosta em 26/04/2006 - 00:40h

Muito legal esse script...

Mas, o que to precisando um é pra mudar o wall de acordo com o meu animo heheheheh, vc não teria ! teria ?

Falows...

[8] Comentário enviado por bosetti em 26/04/2006 - 09:05h

sirelven
Valew cara, nem lembra que o kde fazia isso tbm...

[]'s
Rafael Bosetti

[9] Comentário enviado por eng_ividal em 26/04/2006 - 12:03h

bl a dica!!!!

[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.

Ate+

[11] Comentário enviado por heraldoaraujo em 26/07/2011 - 09:23h

pequeno e pratico o script, e incrivel o que se pode fazer com shell!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts