De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: César A. K. Grossmann
Data de Publicação: 24 de janeiro de 2008
Quem já não ouviu esta frase fatídica da esposa ou da mãe que estava saindo para ir ao cabeleireiro? Até hoje me dá arrepios os bolos queimados que já tive de comer... É só a patroa dizer "não esquece de apagar o forno daqui a 20 minutos" para que eu fique sem sossego por 20 intermináveis minutos. O pior é que quando faltam dois minutos você sempre encontra algo que te prende a atenção e faz você esquecer do mundo pelos próximos 30 minutos, que é o tempo que leva para a fumaça do bolo queimado alcançar os teus receptores olfativos - quem tem pode usar aqueles reloginhos de cozinha, com formato de ovo ou coisa parecida, que fazem contagem regressiva de até uma hora, mas e quem não tem? E com remédio é pior, a história de que tem que lembrar a patroa de dar para o filhinho um remédio às 18h é sempre um motivo de reavaliação do casamento. Ou pior, quando às 14h te avisam que às 17h a sogra vai chegar na rodoviária e você tem que estar lá esperando a doce mãe da mãe dos teus filhos...
Mas o Linux pode te ajudar neste caso. Já que você está mesmo no computador, então seja inteligente, e coloque o computador para te auxiliar - mostre a ele que o carbono ainda manda!
O primeiro desafio é como mostrar uma caixa de diálogo no ambiente gráfico. Os
programadores hardcore devem já estar imaginando as milhares de linhas de
programa, ou mesmo o script Tcl/Tk para isto, mas não vamos tão longe. O
programa XDialog e sua contraparte KDE, o KDialog, permitem que um script
de linha de comando exiba caixas de diálogos no ambiente gráfico. Vamos
utilizar o kdialog
com a opção --msgbox "texto"
que apresenta
uma mensagem e um botão de 'OK'. Para o caso em questão, o aviso para tirar
o bolo do forno pode ser colocada assim:
kdialog --msgbox 'O bolo tá queimando!!!'
O at
será o nosso programa para agendamento do aviso. Ele recebe o
comando a ser executado a partir da entrada padrão, ou então ele o lê de um
arquivo. Vamos utilizá-lo assim:
$ echo comando | at horario
Ele responde com uma mensagem no estilo abaixo:
job 6 at 2008-01-23 14:32
O número 6
é o número do nosso job, e o comando atq
vai mostrar uma
lista de tarefas agendadas. Se a mulher desistir do cabeleireiro e resolver
ela mesma ficar de plantão, use o comando atqrm 6
para apagar o "job"
6
. Mas quem for apressadinho e tentar logo fazer um
$ echo kdialog --msgbox 'O bolo tá queimando!!!' | at now+20minutes
vai se dar mal. Não há nenhum erro no comando, e o comando atq
vai
mostrar que há realmente uma tarefa agendada para dali a 20 minutos. O
problema é que o kdialog
utiliza a variável ambiente $DISPLAY
para saber em que tela ele deve apresentar a sua mensagem, mas o comando
at
não preserva esta variável. Em outras palavras, o kdialog
fica sem saber para onde mandar a caixa de mensagem. Resolvemos isto com um
pequeno truque, a definição de variável de ambiente em linha de comando:
$ echo DISPLAY=$DISPLAY kdialog --msgbox 'O bolo tá queimando!!!' | \ at now+20minutes
Podemos agendar alguma coisa para as 18hs com o comando abaixo:
$ echo DISPLAY=$DISPLAY kdialog --msgbox 'Hora do remédio!' | \ at 18:00
Mais opções de horários você pode descobrir com o man at
. Mas eu ainda
não experimentei agendar algo para daqui a três dias, às 16hs...
Bom, é isto. Desde que o computador esteja ligado e você esteja logado, jog^Htrabalhando, a caixa de diálogo irá aparecer na tela e você será lembrado a tempo de salvar a paz doméstica. Um sistema completinho de alarme pode ser feito usando bash script ou Tcl/Tk, mas deixo isto como desafio para quem gosta de brincar de scripts. Se o bolo ficar bom, não esqueça de mandar um pedaço para mim.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários