Agendamento de compromissos com avisos baseados no horário
Publicado por Ricardo Sabaliauskas (última atualização em 20/05/2013)
[ Hits: 13.870 ]
Download 1361830340.agenda.sh (versão 2)
Download 1368455235.agenda.sh (versão 3)
Este script esta licenciado sob a GLP e seu uso é de sua inteira responsabilidade. Trata-se de um 'avisador', ou agenda, de compromissos para quem usa muito o computador. Seu uso padrão fará com que um aviso com os compromissos do dia e mais uma antevisão de sete dias a frente apareça na inicialização do ambiente grafico (ele pode ser usado em abientes sem modo gráficos) e além disso existe também um segundo aviso baseado na hora do compromisso. Esse segundo aviso pode ser uma tela gráfica ou um aviso sonoro através de um mp3 ou os dois juntos. A vantagem dele sobre outros tipos de 'agenda', como o evolution ou o korganizer, é que nele os agendamentos são rápidos (depois q vc pega o jeito). Também permite o uso de parâmetros.
Abaixo o texto do arquivo LEIA-ME.txt que está dentro do arquivo a ser baixado
ÍNDICE:
1.0)Informações Para O Usuário
2.0)Preparação Dos Scripts
2.1) 1º Passo: (Permissões De Execução Dos Scripts)
2.2) 2º Passo: (Configuração Interna Dos Scripst)
2.2.1) script 'agenda.sh'
2.3.1.1) No 'KDE'
2.3.1.2) No 'GNOME'
2.2.2) script 'minuto.sh' e 'hora.sh'
2.2.3) script 'dia.sh'
2.5.1) No 'KDE'
2.5.1) No 'GNOME'
2.3) 3º Passo: ('Cron' E Inicialização No Seu Ambiente Gráfico) (próximo à Linha Nº 90)
3.0) Funcionamento
4.0) Funcionamento Avançado
#############################################################
######## 1.0) INFORMAÇÕES PARA O USUÁRIO
######### ****************************************************
OBJETIVO DESTE SCRIPT:
Script simples e rápido para avisos de compromissos. Ao ser executado ele mostra o compromissos agendados para o dia corrente e também os compromissos agendados para os dias à frente. Além disso também emite um outro aviso baseado na hora do compromisso. A quantidade de dias dessa antevisão dos compromissos à frente pode ser definido facilmente.
Em relação ao "agenda 3.x" foi acrescentado o uso de horários, existindo então este segundo aviso baseado no horário programado além do aviso geral dos compromissos do dia atual e futuros avistados na inicialização do sistema gráfico.
VERSÃO:
4.0
2010/08/04
AUTOR:
Ricken
<rsabaliauskas@gmail.com>
DEPENDÊNCIAS:
Subentendendo-se que é necessário o bash numa versão rescente:
1) Editar o script 'agenda.sh' a linha:
'editor=kate'
um editor de texto presente em seu sistema.
2) Editar os scripts 'agenda.sh', 'minuto.sh', 'hora.sh' e .'dia.sh' a linha:
'localizacao_do_script=caminho/Agenda'
diacordo com a correta localização do diretório 'Agenda' em seus arquivos.
3) Editar o scripts 'minuto.sh', 'hora.sh' e 'dia.sh' a linha:
'ambiente_grafico=gnome'
o tipo de ambiente gráfico que você usa ('KDE' ou 'GNOME').
Se você não sua nenhum desses dois então você terá de instalar o 'konsole' ou o 'gnome-terminal'
como dependência deste script.
4) Agendar a execução do script 'agenda.sh' na inicialização do seu ambiente gráfico.
5) Agendar no 'cron' a execução do script 'minuto.sh' para ele ser executado a todos os minutos.
6) Agendar no 'cron' a execução do script 'hora.sh' para ele ser executado a toda hora.
7) Agendar a execução do script 'dia.sh' na inicialização do seu ambiente gráfico.
8) Ter o 'dialog' instalado.
#############################################################
######## 2.0) A PREPARAÇÃO DOS SCRIPTS
######### ****************************************************
2.1) 1º PASSO: (PERMISSÕES DE EXECUÇÃO DOS SCRIPTS)
***************************************************
Dê permissão de execução aos scripts 'agenda.sh', 'dia.sh', 'horar.sh' e 'minuto.sh' que originalmente estão localizado dentro do diretório 'Agenda'.
Para fazer isso pela linha de comando, supondo que você vá usar o diretório 'Agenda' dentro do diretório 'home' de seu usuário, digite em um terminal:
cd Agenda/
chmod +x agenda.sh
chmod +x dia.sh
chmod +x horar.sh
chmod +x minuto.sh
Caso você prefira fazer isto pelo modo gráfico, usando o ambiente gráfico 'GNOME', 'KDE' ou um outro, localize os scripts descritos acima ('agenda.sh', 'dia.sh', 'horar.sh' e 'minuto.sh') em algum gerenciador de arquivo (como o 'Nautilus', do ambiente gráfico 'GNOME', ou o 'Konqueror', do ambiente gráfico 'KDE) e clique com o botão direito do mouse com o mesmo encima de um dos scripts e procure a opção 'Propriedade' e depois clique na caixa referente a permissão de execução para dar essa permissão. Repita a operação em todos os scripts ('agenda.sh', 'dia.sh', 'horar.sh' e 'minuto.sh').
2.2) 2º PASSO: (CONFIGURAÇÃO INTERNA DOS SCRIPST)
*************************************************
O script 'agenda.sh' esta localizado originalmente dentro do diretório 'Agenda'. Não recomendo mudar nem o nome do diretório e nem dos scripts. Você pode colocar o diretório 'Agenda' em qualquer lugar que deseje, mas caso você não esteja acostumado ao ambiente Linux recomendo que você coloque o diretório 'Agenda' dentro do diretório 'home' de seu usuário, que é o lugar mais fácil de ser localizado visto que normalmente é neste local que os gerenciadores de arquivos (como o 'Nautilus', do ambiente gráfico 'GNOME', ou o 'Konqueror', do ambiente gráfico 'KDE)' se localizam ao serem abertos sem que se especifique um caminha para eles.
Agora que você determinou o local em que deve ficar o seu diretório 'Agenda' você terá que configurar algumas variáveis nos texto dos scripts localizado dentro deste diretório. Isso é simples de se fazer porém é necessário saber apenas como indicar corretamente a localização deste diretório em um lugar específico do texto. A boa notícia é que se você colocou o diretório 'Agenda' dentro do diretório 'home' de seu usuário então não é necessário configurar nada porque o script já esta pré-programado para esta situação e funcionará corretamente. Caso contrário, então você terá de editar a linha que começa com os dizeres 'localizacao_do_script=' em todos os textos dos 4 scripts ('agenda.sh', 'dia.sh', 'horar.sh' e 'minuto.sh').
localizacao_do_script=/home/$USER/Agenda
(NOTE: Esta é a 2ª linha do script que não começa com o '#' (sustenido))
ATENÇÂO: Caso a localização deste diretório contenha nomes com espaços vazios é obrigatório o '"' (aspas) imediatamente depois do '=' (igual) e imediatamente após a última letra, conforme exemplo abaixo:
localizacao_do_script="/home/Meus Documentos/Agenda"
Edite-a assim:
localizacao_do_script=novo_caminho
aonde 'novo_caminho', obviamente, é o novo caminho.
2.3) 3º PASSO: ('CRON' E INICIALIZAÇÃO NO SEU AMBIENTE GRÁFICO)
***************************************************************
2.3.1) *** SCRIPT 'AGENDA.SH' ***
*********************************
Para cumprir bem o papel de 'avisador' de compromissos é necessário fazer com que o script 'agenda.sh' seja executado no início da inicialização do seu ambiente gráfico para que você possa ter a visão geral dos compromissos logo na inicialização do sistema gráfico. Para isso acontecer é necessário fazer uma configuração que varia de ambiente gráfico para ambiente gráfico e infelizmente não será possível eu abordar cada uma dessas configurações em cada um dos ambientes gráficos existentes, então, vou explicar a configuração da execução do script 'agenda.sh' nos ambientes gráficos mais usados, ou seja, o 'KDE' e o 'GNOME'.
2.3.1.1) No 'KDE':
------------------
Abra um editor de texto e digite, ou cole, as 2 linhas abaixo:
#! /bin/bash
konsole -e bash /home/$USER/Agenda/agenda.sh &
(NOTE: O endereço acima '/home/$USER/Agenda/agenda.sh' é válido somente se você tiver deixado o diretório 'Agenda' dentro do diretório 'home' de seu usuário. Caso contrário ajuste-o ao caminho correto para a localização do seu diretório 'Agenda' e do script 'agenda.sh': '/caminho/Agenda/agenda.sh')
Agora salve-o com qualquer nome, eu sugiro 'autostart.sh'
Depois dê permissão de execução e mova-o para o diretório /home/(seu_usuário)/.kde/Autostart, onde o '(seu_usuário)' é o nome do usuário que você esta logado. Se você não saber quem é o usuário que você está logado agora, então abra um terminal e digite:
users
debian
Como podemos ver acima, o comando 'users' me informou exatamente quem é o usuário que estou logado agora, ou seja, no meu caso o usuário é 'debian' e eu devo executar a ação mencionada acima (a de mover o arquivo criado) com o seguinte endereço; '/home/debian/.kde/Autostart' (Note que o diretório '.kde' é um arquivo oculto porque começa com '.' (ponto). Se você for mover o arquivo criado para o local indicado utilizando um gerenciador de arquivos, como o 'Nautilus' ou o 'konqueror' entre outros, você terá de ativar uma opção na configuração desses gerenciadores de arquivos para você poder enxergar este arquivo oculto e executar a ação proposta). Caso prefira usar a linha de comando abra o terminal e digite:
mv /caminho/autostart.sh /home/(seu_usuário)/.kde/Autostart
fazendo logicamente a conversão do '(seu_usuário)' para o nome correto do seu usuário. No meu caso o comando ficaria assim:
mv /home/debian/autostart.sh /home/debian/.kde/Autostart/
2.3.1.2) No 'GNOME':
--------------------
Na 'Barra de Tarefas' superior abra o programa para configuração de 'Sessões' usando este caminho:
Sistema > Preferências > Sessões
1) depois de aberto, na aba 'Programas Iniciais' tecle em 'Adicionar'.
2) preencha o campo 'Nome' com qualquer nome desejado.
3) preencha o campo 'Comando' conforme abaixo:
gnome-terminal -x bash /home/$USER/Agenda/agenda.sh &
(NOTE: O endereço acima '/home/$USER/Agenda/agenda.sh' é válido somente se você tiver deixado o diretório 'Agenda' dentro do diretório 'home' de seu usuário. Caso contrário ajuste-o ao caminho correto para a localização do seu diretório 'Agenda' e do scrit 'agenda.sh': '/caminho/Agenda/agenda.sh')
2.3.2) *** SCRIPT 'MINUTO.SH' E 'HORA.SH' ***
*******************************************
Os scripts 'minuto.sh' e 'horar.sh' precisam ser agendados no 'cron' para serem executados periodicamente. O script 'minuto.sh' será executado de minuto em minuto para que ele verifique os compromissos do dia e avise-o quando a hora destes chegar. O script 'horar.sh' será executado de hora e caso haja compromissos que devam ser avisados de hora em hora ele fará isso. É mais para o caso daqueles compromissos que não tem uma hora certa mas que deve ser feito naquele dia. Então. desse modo você ficará relembrando-os constantemente. Naturalmente, depois de você cumprir a tarefa você poderá eliminar sua execução deletando-o na opção 5 do menu principal (Veja abaixo).
Abra o terminal e digite:
crontab -e
Ao executar este comando você terá de acrescentar as informações abaixo na tabela apresentada:
* * * * * /home/$USER/Agenda/minuto.sh
0 * * * * /home/$USER/Agenda/horar.sh
depois tecle o 'ESC', digite ':' (dois pontos), digite 'wq' e tecle o 'ENTER' para salvar e sair.
(NOTE: Estou supondo ainda que a localização do diretório 'Agenda' seja o diretório 'home' de seu usuário. Caso não seja isso então acerte a localização dele corretamente. (algo assim; '/localização/Agenda/minuto.sh', aonde 'localização' é o caminho correto até o diretório 'Agenda"))
2.3.3) *** SCRIPT 'DIA.SH' ***
******************************
O script dia será executado apenas uma vez a cada login. Sua configuração é semelhante a configuração do script 'agenda.sh'.
2.3.3.1) No 'KDE':
------------------
Se você estiver usando o 'KDE' abra o script 'autostart.sh' que você criou anteriormente e acrescente a linha abaixo no final dele:
bash /home/$USER/Agenda/dia.sh &
(NOTE: Estou supondo ainda que a localização do diretório 'Agenda' seja o diretório 'home' de seu usuário. Caso não seja acerte a localização dele corretamente. (algo assim; 'bash /localização/Agenda/dia.sh &', aonde 'localização' é o caminho correto até o diretório 'Agenda"))
2.3.3.2) No 'GNOME':
--------------------
Na barra de tarefas superiora abra o programa para configuração de 'Sessões' usando este caminho:
Sistema > Preferências > Sessões
1) depois de aberto, na aba 'Programas Iniciais' tecle em 'Adicionar'.
2) preencha o campo 'Nome' com qualquer nome desejado.
3) preencha o campo 'Comando' confome abaixo:
bash /home/$USER/Agenda/dia.sh
(NOTE: O endereço acima '/home/$USER/Agenda/dia.sh' é válido somente se você tiver deixado o diretório 'Agenda' dentro do diretório 'home' de seu usuário. Caso contrário ajuste-o ao caminho correto para a localização do seu diretório 'Agenda' e do script 'agenda.sh': '/caminho/Agenda/dia.sh')
#############################################################
######## 3.0) FUNCIONAMENTO
######### ****************************************************
O funcionamento do script 'agenda.sh' é simples e ágil e ele foi criado justamento para isto. No Linux existem vários programas, e bem sofisticados por sinal, que permitem agendamentos e lembretes de tarefas e compromissos, como por exemplo o 'Korganizer' ou o 'Evolution'. Porém os agendamentos de tarefas neles demoram muito se comparado com este script, e, somando-se isto ao fato deste script poder ser usado em ambientes sem o modo gráfico resulta em um diferencial.
Ao executá-lo você tera o seguinte 'tela':
julho 2010 agosto 2010 setembro 2010
Do Se Te Qu Qu Se Sá Do Se Te Qu Qu Se Sá Do Se Te Qu Qu Se Sá
1 2 3 1 2 3 4 5 6 7 1 2 3 4
4 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 11
11 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 18
18 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 25
25 26 27 28 29 30 31 29 30 31 26 27 28 29 30
================================================================
*** COMPROMISSOS DE HOJE **** 24-Ago-2010 Ter 13:23 ***
14:00 -> Dentista
================================================================
*** COMPROMISSOS FUTUROS **** P/ os próximos 7 dias ***
Para daqui a 1 dias:
13:00 -> Dentista
Para daqui a 2 dias:
13:00 -> Dentista
================================================================
Tecle "ENTER" p/ acessar o menu ou a letra "q" + "ENTER" p/ sair
ou digite diretamente a opção, se você lembrar, e tecle "ENTER"
Como podemos observar, depois dos calendários existem dois campos separados pelas linhas duplas. A primeira é dos COMPROMISSOS DE HOJE para o dia de hoje e eles são realçados pela cor vermelha e ainda piscam para chamar a sua atenção. No caso deste exemplo temos um compromisso 'Dentista' as '14:00' hrs. e um segundo aviso será emitido neste horário caso o sistema ainda esteja ativo. O segundo campo é dos COMPROMISSOS FUTUROS que são avisos dos compromissos dos dias seguintes. No exemplo acima temos avisos para os 2 próximos dias para que tenhamos uma idéia do que nos espera. Por default o script procura compromissos nos próximos 7 dias mas se você preferir pode mudar isso editando a linha ' dias_lembretes=7' localizado no texto do script 'agenda.sh' e trocando o número '7' por algum outro, podendo usar até '0' se não quiser esses avisos antecipados de compromissos de dias à frente.
Estando diante da 'tela' acima e teclando enter você verá esta outra tela:
*********************** MENU PRINCIPAL ***********************
"ENTER") Para voltar a visualização dos compromissos deste dia.
q) Para sair deste programa.
1) Agendar compromisso.
2) Ver compromissos agendados.
3) Ver compromissos deste MÊS.
4) Alterar.
5) Deletar.
Esta outra tela é o Menu Principal e ela oferece 5 opções, conforme visto, bastando escolher uma delas digitando o número correspondente (de 1 a 5) e teclando 'ENTER'. Se você teclar 'ENTER' sem escolher opção alguma então você voltará a 'tela' anterior, a de visualização de compromissos.
Quanto as opções, elas são auto-explicativas e o único cuidado mesmo é o de sempre usar dois dígitos nas respostas de dia e mês, e quando preciso, 4 dígitos para anos. Quando solicitado uma data completa então use o formato 'AAAA-MM-DD', ou seja, comece pelos 4 dígitos do ano, depois '-' (traço), depois 2 dígitos do mês, depois '-' (traço) novamente e depois os 2 dígitos do dia, como nos exemplos a seguir:
2010-08-11
2010-09-17
2010-01-10
O formato para horas é 'HHMM', ou seja, dois dígitos para horas (de 0 a 23), e dois dígitos para os minutos (de 0 a 59). Exemplos:
1200
1630
0817
Você poderá digitar mais de uma opção nas respostas para as perguntas. Se você colocou vários dias e vários meses para o agendamento de um compromisso então o compromisso será agendado para aqueles dias em todos os meses que você colocou. Por exemplo, coloquei os dias 05 e 06 e o mês 08 e 09 então serão agendados os compromissos para o dia 05 e 06 do mês 08 e 05 e 06 do mês 09. Se preferir, na questão deletar compromissos, você pode acessar o diretório 'Compromissos', dentro do diretório 'Agenda', e procurar o dia a deletar lá dentro e excluí-los ali através do gerenciador de arquivos que você usa. Quando se agenda um compromisso é criado um arquivo e o nome desse arquivo é a data desse compromisso no formato 'AAAA-MM-DD', por isso se excluir este arquivo o compromisso também será eliminado. Se edita-lo por esse método igualmente ele será alterado.
Algumas perguntas quando não respondidas presumirão uma resposta, mas isto é indicado na própria pergunta. Isto acontece para tornar as coisas mais ágeis. Quando a pergunta 'hora do compromisso' não for respondido o script 'agenda.sh' executará o aviso deste compromisso de hora em hora no dia em que este compromisso está agendado. A única exceção dos formatos acima é quando você quiser ser avidado de algum compromisso apenas uma vez no início da inicialização do seu ambiente gráfico. Neste caso você responderá 'x' nas perguntas para 'dia', 'mês' e 'ano' e não precisará responder nada para a pergunta da 'hora', porém se responder não alterará o comportamento previsto. Se você não obedecer esses formatos então os compromissos não serão avisados nem nas horas previstas e talvez nem no aviso geral.
Para torna-lo ainda mais ágel recomendo criar dentro do seu arquivo '.bashrc' um aliás para que ele seja executado como se fosse um comando, apenas digitando um nome, sugiro 'agenda'. Para isto abra o arquivo '.bashrc' e próximo do final do arquivo aonde tem várias linhas começada pela palavra 'alias' acrescente a seguinte linha:
alias agenda='bash /home/$USER/Agenda/agenda.sh'
(NOTE: O endereço acima '/home/$USER/Agenda/agenda.sh' é válido somente se você tiver deixado o diretório 'Agenda' dentro do diretório 'home' de seu usuário. Caso contrário ajuste-o ao caminho correto para a localização do seu diretório 'Agenda' e do script 'agenda.sh': '/caminho/Agenda/dia.sh') (Essa configuração só terá efeito para os terminais que forem aberto após esta configuração).
Um outro detalhe em adição ao anterior é que este script aceita o uso de parâmetros. Por exemplo, você pode apenas querer agendar um compromisso rapidamente e nada mais que isso, então em vez de você executar o script 'agenda.sh' e depois procurar a opção de agendamento teclando 'ENTER' e teclando '1' você pode encurtar isto digitando no terminal 'agenda 1' (se seu arquivo '.bashrc' estiver editado conforme dica anterior) e ele abrirá o script já na opção de agendamento.
Os parâmetros aceitos são:
'0' ou 'menu' para acessar diretamente o 'Menu Principal'.
'1' ou 'agendamento' para fazer os agendamentos de compromissos.
'2' ou 'todos' para visualizar todos os compromissos.
'3' ou 'mes' para escolher um mês e visualizar os compromissos dele.
'4' ou 'alterar' para alterar um compromisso agendado.
'5' ou 'deletar' para deletar um deletar um compromisso.
'-h' ou '--help' para acessar este arquivo de ajuda.
Uma última recomendação é o de testar a execução deste script mo sistema bem antes de usá-lo pra valer apenas para garantir que todas as configurações estejam corretas.
#############################################################
######## 4.0) FUNCIONAMENTO AVANÇADO
######### ****************************************************
Você pode reeditar algumas opções de funcionamento para adaptá-las melhor a suas necessidades ou a do seu sistema. Por exemplo, você pode, além do aviso gráfico, usar um aviso sonoro como reforço ou usar apenas os sonoros ou ainda se você é um usuário avançado poderá modificar a forma como é emitido o avisa dos compromissos, podendo enviá-lo como mensagem de texto em seu celular, usar os bips da CPU etc..
Vamos supor que você queira apenas os avisos sonoros para os avisos de horário de compromissos. Lembre-se que além de um aviso geral dos compromissos do dia que é mostrado ao executar o script 'agenda.sh' existem a disposição os avisos por horários, os avisos de hora em hora e os avisos da inicialização do ambiente gráfico. Para mudá-los é simples, escolha uma música no formato '.mp3' (pode ser 'ogg' também, mas nesse caso você terá de acertar o player tocador para um tipo que lê este formato, veja como fazer isto mais a frente) e copie-os para o seu diretório 'Minuto', a mesma música ou outra para o diretório 'Hora' e a mesma música ou outra para o diretório 'Dia', dentro do seu diretório 'Agenda' (ou apenas faça um link dentro desses diretórios apontando para a mesma ou outras músicas, o que seria muito melhor porque evitaria o aumento de músicas repetidas espalhadas pelos seus diretórios). Prefira uma música curta e bem agitada mas serve qualquer música.
Depois reedite os scripts 'minuto.sh', 'hora.sh' e 'dia.sh' na linha:
som=nao
e modifique-a para que fique assim:
som=sim
Fazendo assim agora teremos também os avisos sonoros.
Se você quiser eliminar os avisos gráfico então, nos scripts 'minuto.sh', 'hora.sh' e 'dia.sh', reedite a linha:
ambiente_grafico=kde
ou
ambiente_grafico=gnome
e modifique-a para que fique assim:
ambiente_grafico=
(Ou seja apague tudo depois do sinal de '=' (igual))
Com essas configurações você pode fazer muitas combinações, conforme as necessidade de seu sistema ou suas preferências pessoais. Você pode, por exemplo, usar a combinação conjunta de aviso gráfico e sonoro para os avisos de horários de compromissos e ainda usar apenas um aviso sonoro para os avisos de hora em hora e ainda também usar apenas um aviso gráfico para o aviso de compromissos que serão mostrados uma vez por inicialização do ambiente gráfico (KDE, GNOME, etc), ou seja, combine como preferir.
Porém usando o comando 'mpg123', que é o comando default usado nestes scripts ('minuto.sh', 'hora.sh' e 'dia.sh') para executar uma música no formato 'mp3', você poderá ter três problemas:
1) não tê-lo instalado.
2) caso a música não seja curta e você queira para a execução dela então você terá de executar em um terminal o comando 'killall mpg123';
3) você terá de ficar restrito apenas a formatos de música em 'mp3'.
Para resolver estas limitações então existe mais uma configuração nesses scripts (minuto.sh', 'hora.sh' e 'dia.sh'). Tratasse da linha:
tocador=mpg123
modifique-a para que fique assim
tocador=seu_tocador
Aonde 'seu_tocador' é o seu player tocador de sua preferência, como por exemplo o 'xmms', ou 'audacious', etc.
Se você é um usuário avançado, além de optar pelos avisos sonoros ou gráficos, você poderá editar um tipo de aviso particular, que poderá ser o envio de uma mensagem de texto para seu celular, usos do bips de sua CPU ou uma outra ação. Para tal os scripts 'minuto.sh', 'hora.sh' e 'dia.sh' já têm uma outra opção pré-preparada para que você programe esta nova ação rapidamente. Para tal apague os dizeres 'echo ok' nos finais destes scripts entre as linha começadas com três '#' (sustenidos), e depois programe essas ações neste espaço. Abaixo mostra como este local esta indentificado:
### REEDITE - COMEÇO
echo ok
### REEDITE - FIM
Depois mude a linha:
minha_opcao=nao
para
minha_opcao=sim
para ativar a execução da ação editada.
Versão 2 - Enviado por Ricardo Sabaliauskas em 25/02/2013
Changelog: Esta é a versão 5.0. Agora é possível agendar compromissos persistentes, exemplo, toda sexta-feira, todos os anos, todos os meses... melhor padronização do código. Todo funcionamento resumido a praticamente dois arquivos (agenda.sh e agenda.txt). Para maiores detalhes veja/abra o arquivo "agenda.sh" em um editor de texto ou execute-o com o parâmetro "h" (bash agenda.sh h).
###############################################################
######### INFORMAÇÕES PARA O USUÁRIO
######### ****************************************************
#####
##
OBJETIVO DESTE SCRIPT:
Script simples e rápido para avisos de compromissos. Ao ser executado ele mostra o compromissos agendados para o dia corrente e também os compromissos agendados para os dias à frente. Além disso também emite um lembrete baseado na hora do compromisso. A quantidade de dias dessa antevisão dos compromissos à frente pode ser definido facilmente. (linha: "DiasDosLembretes=7")
Em relação ao "agenda 3.x" foi acrescentado a possibilidade de lembretes, através de uma caixa gráfica (dialog), ou através de uma música, no horário do compromisso.
Em relação ao "agenda 4.X" houve uma simplificação geral do funcionamento, eliminando diretórios e resumindo tudo a dois arquivos (agenda.sh e o agenda.txt). Acréscimo da possibilidade de marcar compromissos por dia da semana ou para todos os anos ou todos os meses ou todos os dias.
VERSÃO:
5.0
2012/01/10
LICENÇA:
GLP, e seu uso é de sua responsabilidade.
AUTOR:
Ricardo Sabaliauskas
DEPENDÊNCIAS:
Subentendendo-se que é necessário o bash numa versão recente:
1. Um Editor de texto a ser definido conforme a disponibilidade do seu sistema ou de sua preferência (linha:
Editor=kate no script "agenda.sh").
2) Ter instalado:
- "dialog"
- "Konsole" (é o default, mas você pode configurar o "gnome-terminal" ou outro console gráfico de sua preferência) edite a linha:
"Terminal='konsole --noclose -e'"
Mas note que também é necessário incluir o parâmetro para executar um comando.
#############################################################
######## 1.0) PREPARAÇÃO
######### ****************************************************
Este script está licenciado sob a GLP e seu uso é de sua inteira responsabilidade. Trata-se de um "avisador", ou agenda, de compromissos para quem usa muito o computador. Seu uso padrão fará com que um aviso com os compromissos de todo o dia e mais uma antevisão de sete dias, que podem ser modificados, a frente apareça na inicialização do ambiente gráfico. Ele pode ser usado em ambientes sem modo gráficos e além disso existe também um segundo aviso baseado nos horários dos compromissos. Esse segundo aviso pode ser uma tela gráfica (dialog) ou um aviso sonoro através de um MP3 ou os dois juntos. A vantagem dele sobre outros tipos de "agenda", como o Evolution ou o KOrganizer, é que neste script os agendamentos são rápidos e o aprendizado também. Também permite o uso de parâmetros para torna-lo ainda mais ágil (um exemplo disso: suponha que você queria apenas agendar e não precisa ver nenhum compromisso, então execute "bash agenda.sh 1" e o agendamento já estará em execução).
1º PASSO: (PERMISSÕES DE EXECUÇÃO AO SCRIPT)
***************************************************
Dê permissão de execução aos script "agenda.sh".
Para fazer isso pela linha de comando, supondo que você já está dentro do diretório em que o script "agenda.sh" está presente:
$ chmod +x agenda.sh
2º PASSO: (CONFIGURAÇÃO INTERNA DOS SCRIPST)
*************************************************
Você pode colocar o script "agenda.sh" em qualquer lugar que deseje, mas caso você não esteja acostumado ao ambiente GNU/Linux recomendo que você coloque o script "agenda.sh" dentro do seu diretório "home" (echo /home/$USER), sendo este um lugar de fácil acesso, lugar aonde normalmente os gerenciadores de arquivos (como o "Nautilus", do ambiente gráfico "GNOME", ou o "Konqueror", do ambiente gráfico "KDE)" se localizam ao serem abertos por default, sem que haja necessidade de que especifique algum caminho.
Se você pretende executar o script "agenda.sh" em seu diretório "home" (echo /home/$USER) possivelmente não precisará, inicialmente, mudar nenhuma variável dentro do script.
Se tiver problemas na execução, possivelmente ao executá-lo em outro diretório, e precisar ajustar mais explicitamente o local de execução, então procure a linha "LocalizacaoDoScript="/home/$USER"" e edite-a conforme necessidade. Caso a localização do seu diretório contenha nomes com espaços vazios será obrigatório o """ (aspas) imediatamente depois do igual e imediatamente após a última letra, conforme exemplo abaixo:
LocalizacaoDoScript="/home/eu/Agenda de Compromissos"
3º PASSO: (INICIALIZAÇÃO NO SEU AMBIENTE GRÁFICO)
***************************************************************
Para cumprir bem o papel de "avisador" de compromissos é necessário fazer com que o script "agenda.sh" seja executado no início da inicialização do seu ambiente gráfico para que você possa ter a visão geral dos compromissos logo no início do uso do seu computador. Para isso acontecer é necessário fazer uma configuração que varia de ambiente gráfico para ambiente gráfico, e ela é normalmente fácil, mas infelizmente não será possível eu abordar cada uma dessas configurações, porque existem vários ambientes gráficos. Então, vou explicar a configuração da execução do script "agenda.sh" no ambiente gráfico que mais conheço, o KDE 3.5.10 (eu uso Slackware 14 com o KDE 3.5.10), mas essa explicação também serve para a série KDE 4.x.
No "KDE":
---------
Abra um editor de texto e digite, ou cole, as 2 linhas abaixo:
=== INICIO === (copie da linha "#! /bin/bash" até uma linha antes do "=== FIM === e se tiver presente remova as duas letras iniciais "#%" de cada linha)
#! /bin/bash
# Iniciar o Cronometro:
bash /home/$USER/agenda.sh 0 &
# Alertar os horários dos compromissos através do dialog:
konsole -e bash /home/$USER/agenda.sh &
=== FIM ===
NOTE: O endereço acima "/home/$USER/agenda.sh" é válido somente se você tiver deixado o script "agenda.sh" dentro do diretório "home", caso contrário, ajuste o caminho corretamente.
Agora salve-o com qualquer nome, eu sugiro "autostart.sh". Dê permissão de execução e mova-o para o diretório ".kde/Autostart" de seu usuário:
$ chmod +x autostart.sh
$ mv autostart.sh /home/$USER/.kde/Autostart
#############################################################
######## 2.0) FUNCIONAMENTO
######### ****************************************************
O funcionamento do script "agenda.sh" é simples e ágil e ele foi criado justamento para isto. No GNU/Linux existem vários programas, e bem sofisticados por sinal, que permitem agendamentos de lembretes de tarefas e compromissos, como por exemplo o "KOrganizer" ou o "Evolution". Porém os agendamentos de tarefas neles demoram muito, se comparado com este script, e, somando-se isto ao fato deste script poder ser usado em ambientes sem o modo gráfico resulta em um diferencial que foi o motivo de eu faze-lo.
Ao executá-lo (bash agenda.sh) você tera o seguinte "tela":
julho 2010 agosto 2010 setembro 2010
Do Se Te Qu Qu Se Sá Do Se Te Qu Qu Se Sá Do Se Te Qu Qu Se Sá
1 2 3 1 2 3 4 5 6 7 1 2 3 4
4 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 11
11 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 18
18 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 25
25 26 27 28 29 30 31 29 30 31 26 27 28 29 30
================================================================
*** COMPROMISSOS DE HOJE **** 24-Ago-2010 Ter 13:23 ***
14:00 -> Dentista
================================================================
*** COMPROMISSOS FUTUROS **** P/ os próximos 7 dias ***
Para daqui a 1 dias:
13:00 -> Dentista
Para daqui a 2 dias:
13:00 -> Dentista
================================================================
Tecle "ENTER" p/ acessar o menu ou a letra "q" + "ENTER" p/ sair
ou digite diretamente a opção, se você lembrar, e tecle "ENTER"
Como podemos observar, depois dos calendários existem dois campos separados pelas linhas duplas. A primeira é dos COMPROMISSOS DE HOJE para o dia de hoje e eles são realçados pela cor vermelha. No caso deste exemplo temos um compromisso "Dentista" às "14:00" hrs. E às 14 hrs um segundo aviso (caixa gráfica ou uma música ou os dois) serão executados para alertá-lo sobre a hora do compromisso. O segundo campo é dos COMPROMISSOS FUTUROS que são avisos dos compromissos dos dias seguintes. No exemplo acima temos avisos para os 2 próximos dias para que tenhamos uma ideia do que nos espera. Por default o script exibe os compromissos de hoje e os compromissos dos próximos 7 dias mas se você preferir pode mudar esse comportamento configurando a variável "DiasDosLembretes=7". Se não quiser nenhuma antevisão dos compromissos futuros então troque o número 7 por 0, nesta variável.
Estando diante da "tela" acima e teclando "ENTER" você verá estará nessa outra tela:
*********************** MENU PRINCIPAL ***********************
"ENTER") Para voltar a visualização dos compromissos deste dia.
q) Para sair deste programa.
1) Agendar compromisso.
2) Ver compromissos agendados.
3) Ver compromissos.deste MÊS.
4) Alterar.
5) Deletar.
Esta outra tela é o Menu Principal e ela oferece 5 opções, conforme visto, bastando escolher uma delas digitando o número correspondente (de 1 a 5) e teclando "ENTER". Se você teclar "ENTER" sem escolher opção alguma então você voltará a "tela" anterior, a de visualização de compromissos.
Em algumas situações, quando você tiver dentro do comando less, será necessário teclar "q"+"ENTER" para sair, "q" de quit.
1) Agendar compromisso.
------------------------
Esta é a mais importante opção e por isso vou falar mais dela. Essa opção faz algumas perguntas e elas são auto-explicativas e o único cuidado mesmo é o de sempre usar dois dígitos nas respostas de dia e mês, e quando preciso, 4 dígitos para anos. O formato para horas é "HHMM", ou seja, dois dígitos para horas (de 0 a 23), e dois dígitos para os minutos (de 0 a 59). Não Use os : (dois pontos). Exemplos:
1200 1630 0817
Com relação as semanas, para simplificar e facilitar o agendamento a seguinte correspondência foi adotado:
"1" para domingo.
"2" para segunda (Como é fácil notar, a maioria dos números tem uma relação com o nome do dia da semana, e é expressa em 1 digito apenas).
"3" para terça.
"4" para quarta.
"5" para quinta.
"6" para sexta.
"7" para sábado.
Você poderá digitar mais de uma opção nas respostas para as perguntas. Se você colocou vários dias e vários meses no agendamento de um compromisso então o compromisso será agendado para aqueles dias em todos os meses que você colocou. Por exemplo, coloquei os dias 05 e 06 e o mês 08 e 09, então serão agendados os compromissos para o dia 05 e 06 do mês 08 e 05 e 06 do mês 09.
Algumas perguntas quando não respondidas assumirão uma resposta padrão, mas isto é indicado na própria pergunta. Isto acontece para tornar as coisas mais ágeis.
Quando você digitar "x" (minúsculo) nas respostas das perguntas de Ano, Mês, Dia, Dia Da Semana ou horas, então os avisos de compromissos assumirão o seguinte valor:
Anos - o ano será anotado como A@@@, A de (A)nos, e na execução do script isso será substituído pelo ano atual. Em outras palavras o compromisso será exibido em todo os anos em que a data se tornar verdadeira (se você responder "x" em tudo, os compromissos estes serão exibidos todos os anos, todos os meses, todos os dias, de hora em hora).
O mesmo acontece com as outras opções:
M@ representa todos (M)eses.
D@ representa todos (D)ias.
S@@ representa todos dias da (S)emana.
H@@@@ representa todos (H)oras (no caso de horas o aviso será executado de hora em hora e não de minuto em minuto).
Para torna-lo ainda mais ágil recomendo criar, dentro do seu arquivo ".bashrc", um aliás para que este script seja executado como se fosse um comando, apenas digitando um nome, sugiro "agenda". Para isto abra o arquivo ".bashrc", em seu diretório "home" e próximo do final do arquivo aonde tem várias linhas começada pela palavra "alias" acrescente a seguinte linha:
alias agenda="bash /home/$USER/agenda.sh"
NOTE: O endereço acima "/home/$USER/agenda.sh" é válido somente se você tiver deixado o script "agenda.sh" dentro do diretório "home", caso contrário, ajuste o caminho correspondente.
Um outro detalhe em adição ao anterior é que este script aceita o uso de parâmetros. Por exemplo, você pode apenas querer agendar um compromisso rapidamente e nada mais que isso. Então, em vez de você executar o script "agenda.sh" e depois procurar a opção de agendamento teclando "ENTER" e teclando "1" você pode encurtar isto digitando no terminal "agenda 1" (se seu arquivo ".bashrc" estiver editado conforme dica anterior ou bash agenda.sh 1) e ele abrirá o script já na opção de agendamento.
Os parâmetros aceitos são:
"0" para iniciar a função cronômetro".
"1" ou "agendamento" para fazer os agendamentos de compromissos.
"2" ou "todos" para visualizar todos os compromissos.
"3" ou "mes" para escolher um mês e visualizar os compromissos dele.
"4" ou "alterar" para alterar um compromisso agendado.
"5" ou "deletar" para deletar um deletar um compromisso.
"-h" ou "--help" ou "h" ou "help" para acessar esta ajuda.
"dxx", onde "x" são números 0-9, (exemplo d09), ("d" de dia), para ver compromissos do dia xx para o mês e ano atual.
"mxx", onde "x" são números 0-9, (exemplo m02), ("m" de mês), para ver compromissos do mês xx do ano atual.
"axx", onde "x" são números 0-9, (exemplo a13), ("a" de ano), para ver compromissos do ano xx.
"axxxx", onde "x" são números 0-9, (exemplo a2013), ("a" de ano), para ver compromissos do ano xxxx.
"xx-xxxx", onde "x" são números 0-9, (exemplo 02-2013), para ver compromissos do mes-ano xx-xxxx.
"xxxx-xx", onde "x" são números 0-9, (exemplo 2013-02), para ver compromissos do ano-mes xxxx-xx.
"xx-xx-xxxx", onde "x" são números 0-9, (exemplo 15-02-2013), para ver compromissos do dia-mes-ano.
"xxxx-xx-xx", onde "x" são números 0-9, (exemplo 2013-02-2013), para ver compromissos do ano-mes-dia.
"+x", onde "x" são números 0-9, (exemplo +7), para ver os compromissos do 7º dia a frente.
"++x", onde "x" são números 0-9, (exemplo ++7), para ver compromissos de hoje até o 7º dia a frente.
Uma última recomendação é o de testar a execução deste script mo sistema bem antes de usá-lo pra valer apenas para garantir que todas as configurações estejam corretas.
#############################################################
######## 3.0) CONFIGURAÇÃO DAS VARIÁVEIS
######### ****************************************************
NOME DESTE SCRIPT
************************************************************
Este script se chama originalmente de "agenda.sh". Se por acaso você trocar o nome será necessário indicar o novo nome aqui, para que ele funcione corretamente.
Default:
NomeDesteScript=agenda.sh
Exemplo:
NomeDesteScript=compromissos.sh
LOCALIZAÇÃO DO DIRETÓRIO DESTE SCRIPT
************************************************************
Especifique a localização do diretório em que localiza-se este script em sua árvore de diretórios. Possivelmente a configuração default não precisará ser alterada se a localização deste script, "agenda.sh", for o seu diretório "/home/$USER/agenda.sh", que é a localização default.
ATENÇÃO: Caso a localização deste diretório contenha nomes com espaços vazios é obrigatório o uso de '"" (aspas) imediatamente depois do igual e imediatamente após a última letra, conforme exemplo abaixo:
LocalizacaoDoScript="/home/Meus Documentos/Agenda"
Default:
LocalizacaoDoScript="/home/$USER/"
Exemplos:
LocalizacaoDoScript="/home/$USER/Agenda de Compromissos"
LOCALIZAÇÃO DO ARQUIVO QUE FUNCIONARÁ COMO BANCO DE DADOS
************************************************************
Especifique a localização e o nome do arquivo que armazenará todos os compromissos agendados. Possivelmente a configuração default não precisará ser alterada se a localização deste script, "agenda.sh", for o seu diretório "/home/$USER/agenda.sh", que é a localização default.
ATENÇÃO: Caso a localização deste arquivo contenha nomes com espaços vazios é obrigatório o uso de '"' (aspas) imediatamente depois do igual e imediatamente após a última letra, conforme exemplo abaixo:
DadosDosCompromissos="/home/Meus Documentos/Agenda"
Default:
DadosDosCompromissos="$LocalizacaoDoScript/agenda.txt"
Exemplos:
DadosDosCompromissos=""/home/$USER/Agenda de Compromissos/agenda.txt"
EDITOR DE TEXTOS
************************************************************
Especifique um Editor de texto de sua preferência.
Exemplos:
Editor=nano
Editor=kate
TERMINAL
************************************************************
Especifique um terminal de sua preferência e também os parâmetros necessários para ele executar um comando.
Como haverá espaços é necessário o uso de " (aspas).
Exemplos:
Terminal="konsole --noclose -e"
Terminal="gnome-terminal --full-screen -x"
Terminal="xterm -ls -bg black -fg white -fa 'bistream vera sans mono' -fs 10 -cr white -hc white -rightbar -e"
LEMBRETE ATRAVÉS DE UM GRÁFICO
************************************************************
Se for interessante executar um lembrete gráfico através do "dialog" para alertar sobre a hora de um compromisso indique abaixo a palavra "sim" conforme exemplo ou deixe-a vazia.
Exemplos sim:
LembreteGrafico="sim"
Exemplos não:
LembreteGrafico=""
ATENÇÃO: caso mude a configuração LembreteGrafico="sim" para LembreteGrafico="" e o LembreteSom também esteja vazio (LembreteSom=""), e você salve e passe mais de 60 segundos, e resolva reverter, então, será necessário reexecutar a função "Cronometro" (agenda.sh 0) porque ela irá parar automaticamente após 60 segundos com essas configurações descritas.
Também tome cuidado ao executar o "cronômetro" para que você não abra mais de uma instância deste script. (em caso de dúvida execute o comando "ps aux | grep agenda.sh" e verifique quantas estâncias estão sendo executadas.
Mate o excedente com o comando "kill
LEMBRETE ATRAVÉS DE UM SOM
************************************************************
Se for interessante tocar um som ao chegar a hora de um compromisso indique abaixo o tocador e o caminho do arquivo de áudio ou música.
Como haverá espaços é necessário o uso de " (aspas).
Exemplos sim:
LembreteSom="audacious /home/$USER/Musica/musica.mp3"
LembreteSom="mpg123 /home/$USER/Musica/musica.mp3"
Exemplos não:
LembreteSom=""
NÚMERO DE DIAS PARA ANTEVISÃO DE COMPROMISSOS FUTUROS
************************************************************
Este script também pode mostrar os compromissos de dias futuros.
Você pode especificar quantos dias você quer que ele te
mostre antecipadamente, exemplo:
DiasDosLembretes=7
DiasDosLembretes=3
DiasDosLembretes=0
APARÊNCIAS DAS LINHAS DIVISÓRIAS
************************************************************
Esta opção tem apenas efeito estético.
Você pode escolher o tipo de linha que você prefere como divisórias para formatação das mensagens mostradas. Os tipos disponíveis estão abaixo: (mude-as ou reedite-as a gosto)
l1="----------------------------------------------------------------"
l2="================================================================"
l3="****************************************************************"
l4="#################################################################"
Troque somente o número final, segundo a opção desejada
Exemplos:
linha_um=$l1 para linha tracejada
linha_um=$l2 para linha tracejada dupla
linha_um=$l3 para linha com asterisco
linha_um=$l4 para linha com sustenido
A mesma lógica serve para as quatro opções abaixo.
# primeira linha divisória
linha_um=$l2
# segunda linha divisória
linha_dois=$l2
# terceira linha divisória
linha_tres=$l2
# outras linhas
linha_outras=$l1
USAR SEPARADOR NOS COMPROMISSOS À FRENTE
************************************************************
Pode ser que, por uma questão de melhor visualização você prefira usar um separador nos dias à frente. Se for este o caso mude a variável abaixo:
Default, não usar.
SeparadoDiasAFrente=""
Sim, usar:
SeparadoDiasAFrente="ok"
ESCOLHA AS CORES PARA REALCE DAS MENSAGENS NA EXIBIÇÃO DOS COMPROMISSOS
************************************************************
As cores disponíveis são:
ROSA, VERDE, AMARELO, AZUL_ESCURO, LILAS, AZUL_CLARO, BRANCO,VERMELHO, BRANCO_BOLD.
Indique sua preferência conforme exemplo abaixo:
COR_ANUNCIO_COMPROMISSOS_DE_HOJE=$VERMELHO
COR_ANUNCIO_COMPROMISSOS_FUTUROS=$BRANCO_BOLD
COR_ANUNCIO_COMPROMISSOS_FUTURO1=$BRANCO_BOLD
Copie os nomes acima e acrescente o "$" (cifrão) no início dele.
Versão 3 - Enviado por Ricardo Sabaliauskas em 13/05/2013
Changelog: Em relação ao "agenda 5.0" houve correções nas funções com parâmetros para corrigir algumas imprecisões.
Informações para o usuário:
Objetivo deste script:
Script simples e rápido para avisos de compromissos. Ao ser executado ele mostra os compromissos agendados para o dia corrente e também os compromissos agendados para os dias à frente. Além disso também emite um lembrete baseado na hora do compromisso. A quantidade de dias dessa antevisão dos compromissos à frente pode ser definido facilmente (linha: 'DiasDosLembretes=7').
Em relação ao "agenda 3.x" foi acrescentado a possibilidade de lembretes, através de uma caixa gráfica (dialog), ou através de uma música, no horário do compromisso.
Em relação ao "agenda 4.X" houve uma simplificação geral do funcionamento, eliminando diretórios e resumindo tudo a dois arquivos (agenda.sh e o agenda.txt). Acréscimo da possibilidade de marcar compromissos por dia da semana ou para todos os anos ou todos os meses ou todos os dias.
Em relação ao "agenda 5.0" houve correções nas funções com parâmetros para corrigir algumas imprecisões.
Versão:
- 5.1
- 2013/05/11
Licença:
- GLP, e seu uso é de sua total responsabilidade.
Autor:
- Ricardo Sabaliauskas
Dependências:
- Subentendendo-se que é necessário o bash numa versão recente:
1. Um editor de texto a ser definido conforme a disponibilidade do seu sistema ou de sua preferência (linha: Editor=kate no script "agenda.sh").
2. Ter instalado:
- "dialog"
- "Konsole" (é o default, mas você pode configurar o "GNOME terminal" ou outro console gráfico de sua preferência) edite a linha: 'Terminal="konsole --noclose -e"', mas note que também é necessário incluir o parâmetro para executar um comando.
Como são 4 scripts eu prefiro não coloca-lo aqui para não causar confusão.
soma e multiplicação de parametros
RIPADOR DE MP3 USANDO O DIALOG...
Bloquear contas em servidor Zimbra após 45 dias
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (9)