Mokapop

décembre 21, 2006

Comment configurer un PDA en 99 étapes faciles

Filed under: Gadgets, Linux, Macintosh, Uncategorized — mokawi @ 8:05

Il m’est arrivé quelque chose d’horrible dernièrement: j’ai appris comment utiliser le bash comme il faut. Pour les innocents d’informatique UNIX: j’ai appris à faire fonctionner l’interface terminal du mac. Comme celle-ci est beaucoup plus puissante que l’interface graphique, surtout en ce qui concerne l’automatisation, mais que sa configuration prend beaucoup de temps, j’ai passé un nombre absolument indécent d’heures à la machine.
Donc, évidemment, j’ai joyeusement rempli mon bureau de sorties du terminal avec GeekTool (cf. article précédent—et encore j’ai ajouté une coupelle de trucs). Mais surtout, comme le malheur veut que j’ai acheté un PDA linux il y a de ça un an (un Zaurus SL-5500, pour la fort môdique somme de 100 huards dorés), il m’est venu à l’esprit qu’il fallait que je mette au point une méthode de synchronisation.
J’ai longtemps été un utilisateur insatisfait du système qu’on appelle communément « Sharp ROM 3.10 » et qui vient du manifacturier. J’avais pris habitude d’utiliser Ko/Pi, un calendrier issu du monde KDE qui tournait très lentement, mais en utilisant des fichier vCal, tout comme iCal sur mac, et Ka/Pi, qui lisait sans problème les fichiers vCard issus du carnet d’adresses de Mac OS X. Or, un jour, bang, ça marche plus, et je n’ai jamais pu trouver pourquoi—la raison que le terminal donnait était bidon. Plus tard, c’est mon lecteur DjVu qui lâche, donc exit les consultations d’Aristote en grec ancien. La moitié des programmes que j’installais ne fonctionnaient pas, la gestion des documents était vraiment douteuse, le traitement de texte lisait mal les fichiers word, et le tout était très mal conçu, de façon pas du tout pratique.
Bref, j’ai donc installé OpenZaurus avec GPE sur la carte mémoire (Là, je saute des étapes: l’installation de ce truc n’est pas nécessairement évidente quand on est habitué à Mac OS. Je saute aussi toute les difficultés pour connecter le Zaurus à l’internet du mac.) Problème: je n’ai plus trop envie d’installer Ko/Pi et Ka/Pi, parce que c’est lent, mais aussi parce que je suspecte qu’ils sont bâtis pour Qtopia, et pas pour X, l’interface graphique de GPE. D’ailleurs, entretemps, je n’utilise plus iCal, mais Remind, pour la rapidité encore une fois.
Évidemment, pas question d’installer Remind sur le Zaurus: ça aurait été super, mais malheureusement, je ne sais pas comment compiler un programme pour fonctionner sur OpenZaurus. Il faut donc prendre la sortie de Remind (remind -s1 -b1 -q) et la traiter avec un script, puis l’afficher sur le terminal rxvt. Comment fait-on pour garder rxvt ouvert? Si on ajoute ces lignes-là à la fin du programme, il tourne sans fin, et la fenêtre rxvt reste:
    while [ 1 ]; do
    continue
    done
Ceci réglé, comment afficher les tâches au calendrier pour les jours à venir? Le plus facile, ça reste de choisir la date, parce que la sortie remind commence par la date. E.g.:
    2006/12/30 * * * 1170 19:30 Canadiens contre TAMPA BAY
Il suffit donc d’expédier le fichier dans grep avec la date du jour:
    cat < fichier | grep 2006/12/30
Le véritable problème, c’est de savoir c’est quoi la date de demain. OpenZaurus vient avec la commande date, mais pas avec cal, donc il faut tout calculer soi-même. J’aurais pu me simplifier la vie avec awk, mais comme je ne le connais pas encore très bien, je suis sorti avec ça:
#!/bin/sh

calc () {
awk « BEGIN { print $* ; } »
}

jds () {
if [ $1 = « Mon » ]; then
echo « Lundi »
elif [ $1 = « Tue » ]; then
echo « Mardi »
elif [ $1 = « Wed » ]; then
echo « Mercredi »
elif [ $1 = « Thu » ]; then
echo « Jeudi »
elif [ $1 = « Fri » ]; then
echo « Vendredi »
elif [ $1 = « Sat » ]; then
echo « Samedi »
elif [ $1 = « Sun » ]; then
echo « Dimanche »
fi
}

ldm () {
if [ $1 = 1 ]; then
echo 31
elif [ $1 = 2 ]; then
if [ $(calc $2″/4-int(« $2″/4) ») != 0 ]; then
if [ $(calc $2″/100-int(« $2″/100) ») > 0 ]; then
echo 29
fi
elif [ $(calc $2″/400-int(« $2″/400) ») != 0 ]; then
echo 29
else
echo 28
fi
elif [ $1 = 3 ]; then
echo 31
elif [ $1 = 4 ]; then
echo 30
elif [ $1 = 5 ]; then
echo 31
elif [ $1 = 6 ]; then
echo 30
elif [ $1 = 7 ]; then
echo 31
elif [ $1 = 8 ]; then
echo 31
elif [ $1 = 9 ]; then
echo 30
elif [ $1 = 10 ]; then
echo 31
elif [ $1 = 11 ]; then
echo 30
elif [ $1 = 12 ]; then
echo 31
fi
}

mydate () {
day=$(calc $(date +%d)+$1)
maxday=$(ldm $(date +%m) $(date +%Y))
if [ $(( $day > $maxday )) = 1 ]; then
month=$(calc $(date +%m)+1)
if [ $(( $month > 12 )) = 1 ]; then
month=1
year=$(calc $(date +%Y)+1)
else
year=$(date +%Y)
fi
day=$(calc $maxday-$day)
else
month=$(date +%m)
year=$(date +%Y)
fi
echo $year/$month/$day
}

cat < /home/mok/.remind | grep $(mydate 6) | awk ‘{ print $1  »  » substr($0,match($0,$6)) }’
echo « Dans 5 jours: »
cat < /home/mok/.remind | grep $(mydate 5) | awk ‘{ print $1  »  » substr($0,match($0,$6)) }’
echo « Dans 4 jours: »
cat < /home/mok/.remind | grep $(mydate 4) | awk ‘{ print $1  »  » substr($0,match($0,$6)) }’
echo « Dans 3 jours: »
cat < /home/mok/.remind | grep $(mydate 3) | awk ‘{ print $1  »  » substr($0,match($0,$6)) }’
echo « Apres-demain »
cat < /home/mok/.remind | grep $(mydate 2) | awk ‘{ print $1  »  » substr($0,match($0,$6)) }’
echo « Demain »
cat < /home/mok/.remind | grep $(mydate 1) | awk ‘{ print $1  »  » substr($0,match($0,$6)) }’
echo « Aujourd’hui (« $(jds $(date +%a)) » le « $(date +%d) »). »
cat < /home/mok/.remind | grep $(date +%Y/%m/%d) | awk ‘{ print $1  »  » substr($0,match($0,$6)) }’
cat < /home/mok/remindz.txt
while [ 1 ]; do
continue
done
Ici, .remind est la sortie de remind, et reminz.txt est un fichier que je joint par la suite au .reminders du mac. Et le tout me donne mon horaire sur 7 jours. En passant, je ne sais pas pourquoi, mais j’obtenais des erreurs en rassemblant les conditions pour les années bissextiles ([ $(calc $2″/4-int(« $2″/4) ») != 0 && $(calc $2″/100-int(« $2″/100) ») > 0 || $(calc $2″/400-int(« $2″/400) ») != 0 ]). Quelqu’un peut m’expliquer?
Pour le todo, j’utilise simplement un fichier .txt que j’affiche avec GeekTool et auquel j’accède par une icône du Dock. Donc, il suffit d’une synchronisation et de quelques subtilités.
Pour les adresses, c’est plus ardu. En ce moment, j’utilise contacts (disponible sur fink) pour obtenir une sortie texte lisible du carnet d’adresse de Mac OS X. Ensuite, sur le Zaurus, un script demande un nom à chercher et affiche les lignes qui contiennent ce qui a été entré grâce à grep. Pour le passage Zaurus –> Mac, en revanche, ce n’est pas au point. Je crois que je vais écrire un applescript pour entrer les nouvelles entrées de GPE-contacts (qui sont en format SQLite) dans le carnet d’adresse, et peut-être un shell script pour l’inverse. À suivre.
Et dire que je dois travailler sur ma maîtrise…

Laisser un commentaire »

Aucun commentaire pour l’instant.

RSS feed for comments on this post. TrackBack URI

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Créez un site Web ou un blog gratuitement sur WordPress.com.

%d blogueurs aiment cette page :