Menu

Calendário Familiar de Aniversários em Shell Script

Você migrou para o Pinguim e se viu diante de um ambiente novo. Quer relembrar o aniversário de alguém e não sabes como. O Linux te dá a opção de construir suas próprias aplicações.

O script a seguir é um Calendário Familiar de Aniversários que há de te ajudar nessa hora difícil. Você irá programar o dia e a hora em que esta aplicação vai te relembrar a data comemorativa em questão. Sem delongas, mãos à obra.

Esse box de mensagem irá aparecer após os 30 segundos iniciais da inicialização do sistema:





A barra de progresso atinge a totalidade em 25 segundos.




Após a mensagem, aparecerá na bandeja do sistema o ícone da aplicação para relembrar o evento durante o dia.


Para a execução deste script, você deverá instalar estas dependências:


sudo apt install mpg123 yad  libnotify-bin  -y


Para os usuários do Fedora e distros Red Hat:


sudo dnf install mpg123 yad libnotify


Para os usuários do Archlinux:


sudo pacman -Sy mpg123 yad libnotify


No diretório home, digite as teclas Ctrl + t


Crie o diretório ".calendar" com o comando abaixo:


mkdir ~/.calendar


Copie e cole os scripts a seguir num editor de texto:


calendar.sh

#!/bin/bash

TITLE="Calendário Familiar de Aniversários"
ICON="/home/user/.calendar/calendar.png"
IMAGE="/home/user/.calendar/calendar.png"

sleep 30

DATA=$(date +%d-%m-%Y)

ANIVERSARIANTE=$(cat /home/user/.calendar/calendar.csv | grep $DATA | cut -d";" -f 2)

if [ "$ANIVERSARIANTE" = "" ]; then
        exit;
fi

MONTH=`date +"%B"`
DAYOFMONTH=`date +"%d"`
YEAR=`date +"%Y"`

SHOWDATE="${DAYOFMONTH} de ${MONTH} ${YEAR}"

DATE_TIME_TO_SHOW="
<span font='22' color='darkgreen'><i>\nHoje é dia $SHOWDATE.\n</i></span>
<span font='22' color='blue'><i>Hoje é o aniversário de $ANIVERSARIANTE</i></span>"

mpg123  /home/user/.calendar/Aplausos.mp3 &

PROGRESS_COUNT=0
PROGRESS_COUNT_MAX=110 # in %
PROGRESS_COUNT_INCREMENT=4 # i.e. jump up 4% at a time

while [ ${PROGRESS_COUNT} -lt ${PROGRESS_COUNT_MAX} ]
do
  echo ${PROGRESS_COUNT}
  sleep 1
  PROGRESS_COUNT=`expr ${PROGRESS_COUNT} + ${PROGRESS_COUNT_INCREMENT}`
done | yad --progress --auto-close --no-cancel --title="Hoje é o aniversário de $ANIVERSARIANTE" --text="${DATE_TIME_TO_SHOW}" --height=250 --window-icon=$ICON --image="$IMAGE" --center

notify-send -t 30000 -i "$IMAGE"  "Hoje é o aniversário de $ANIVERSARIANTE"

yad --notification --image="$IMAGE" \
--command "notify-send -t 30000 -i $IMAGE 'Hoje é o aniversário de $ANIVERSARIANTE'"

killall -9 mpg123 


Nota: no script acima, você deverá substituir o "user" pelo seu usuário.


calendar.csv

id;name;born;
1;Steven_Jobs;24-02-2023;
2;Richard_Stallman;16-03-2023;
3;Mark_Zuckerberg;14-05-2023;
4;Elon_Musk;28-05-2023;
5;Tim_Berners-Lee;08-06-2023;
6;John_McAfee;18-09-2023;
7;Pavel_Durov;10-10-2023;
8;Bill_Gates;28-10-2023;
9;Linus_Torvalds;28-12-2023;


Nota: Substitua os nomes e as respectivas datas pelos seus amigos e familiares.


Estes scripts deverão ficar armazenados no diretório ".calendar" que foi criado no seu diretório home.


calendar.desktop

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Aniversariante do dia
Exec=/home/user/.calendar/calendar.sh
Icon=/home/user/.calendar/calendar.png
Categories=Utility;
StartupNotify=false
Terminal=false
Hidden=false


Este shortcut do executável deverá ficar armazenado no diretório "autostart" no seu diretório "home/user/.config".


Nota: no script acima, você deverá substituir o "user" pelo seu usuário. Se não existir o diretório "autostart", crie com o comando abaixo executado dentro do diretório ".config":


mkdir ~/.config/autostart


Quanto ao efeito sonoro de aplausos, baixe-o no link abaixo:





Já o ícone da aplicação poderá ser baixado no link abaixo:




diretório ".calendar" deverá conter os seguintes arquivos:



Nota: no início de cada ano você deverá atualizar o "ano" no arquivo "
.calendar.csv".

Divirta-se!