1/13/07

remind & backtick screen


UPDATE 15/01 :
modif :
- section 1°) (>> au lieu de >)
- section 2°) (script modifié)
- section 4°) (alias r et vr)
motif :
une alerte non-consultée pouvait être écrasée par l'alerte suivante


Comme vu précédemment, l'affichage des alertes de remind peut se faire via des fenêtres pop-up (gxmessage ou autre). Néanmoins, cela représente des défauts majeurs dont celui de perdre le focus au moment le plus inopportun (lois de Murphy en action). Enfin, ce n'est pas le plus adapté pour des connexions ssh et ça n'a aucun intérêt lorsqu'on passe 95% de son temps dans des screen.

Reste à mettre en place une solution qui permette d'être alerté sans pour autant perturber l'activité en cours sur les différents écrans. Utiliser le « backtick » de screen est ce qui m'a paru le moins « obstrusif ».

1°) On commence par demander à remind d'écrire ses alertes dans un fichier qu'on appellera .rappels. Pour cela, on lance la commande suivante au démarrage de X et/ou lors du login de l'utilisateur.

remind -zk"echo %s >> /home/mon_user/.rappels" &

2°) On crée un script permettant de lire le nombre d'alertes envoyées par remind dans le fichier .rappels (script remind-me.sh à mettre dans ~/bin) :
#!/bin/sh
# remind-me.sh (bc 2007)
# modifier RAPPEL_FILE pour votre usage
RAPPEL_FILE='/home/mon_user/.rappels'

if [ -e $RAPPEL_FILE ] && [ -s $RAPPEL_FILE ]; then
sort -u $RAPPEL_FILE -o $RAPPEL_FILE
nbl=`wc -l $RAPPEL_FILE | cut -f1 -d' '`
case "$nbl" in
"1")
nbw=`wc -w $RAPPEL_FILE | cut -f1 -d' '`
if [ $nbw -gt 0 ]; then
echo "1 rappel"
else
exit 0
fi
;;
*)
echo "$nbl rappels"
;;
esac
else
exit 0
fi

3°) On modifie le .screenrc de l'utilisateur pour afficher le backtick qui utilise le script remind-me.sh. Voici une proposition pour la partie qui nous intéresse :
hardstatus on
hardstatus alwayslastline
hardstatus string '%{= kG}[%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{R}%{+B} %1` %{g}%{-B}][%{B} %D %d/%m %{W}%c %{g}]'
backtick 1 0 60 remind-me.sh

On demande que le rafraîchissement se fasse toutes les minutes.

4°) On crée 2 alias (dans son .bash_aliases ou son .bashrc). Le premier alias 'r' (comme 'rappels') affichera le contenu de .rappels alors que le second alias 'vr' (comme 'vider les rappels') videra le contenu du fichier ~/.rappels.
alias r='sort -u ~/.rappels'
alias vr='> ~/.rappels'

En résumé, ça donne ce résultat :

Pour la démo, le rafraîchissement du backtick est de 5 secondes.

1/12/07

remind en français (Debian Etch)


wyrd, le compagnon de remindPour mon organisation personnelle, en complément de Google Calendar, j'utilise l'excellent remind. Il est sans doute d'un abord plus rude que celebrat mais permet des paramétrages et des rappels que même les ténors du marché ne savent pas gérer.

Avec remind, il devient par exemple très simple de mettre en place un rappel pour « le dernier Lundi de chaque mois » ce que permettent difficilement voire pas du tout la plupart des agendas actuels. Sachant que remind est aussi capable de lancer des commandes ou des scripts, on imagine assez facilement tout le potentiel :
REM Lundi 1 --7 RUN /home/mon_user/bin/mon_backup.sh
=> lancera par exemple un backup personnel tous les derniers Lundi de chaque mois

Pour les alertes, il suffit de lancer la commande suivante au démarrage du window manager :
remind -zk"gxmessage -center -default "okay" -title "Rappel" -borderless %s" &
(apt-get install gmessage s'il n'est pas installé)

Malheureusement, par défaut, remind est en anglais car le choix du langage se fait au moment de la compilation. Voici donc le paquet remind pour Debian Etch avec la localisation française.

Si on souhaite gérer ses événements visuellement, il est même possible d'utiliser des frontends comme le célèbre wyrd.