Derniers billets
GCALDaemon, la solution de synchronisation
Comme pour beaucoup de personnes, le passage au payant de Spanning Sync m’avait plus que beaucoup embêté. Pour rappel, ce dernier permettait de synchroniser iCal avec le service de calendrier en ligne de la firme de Mountain View : Google Calendar.
Après maintes recherches, impossible de trouver un équivalent gratuit, jusqu’à vendredi dernier ou je suis tombé sur GCALDaemon.
Présentation du démon
GCALDaemon est un programme Java – donc indépendant de l’OS – qui permet une synchronisation dans les deux sens entre Google Calendar et tout type de calendrier compatible iCalendar. Sa fonction principale est la synchronisation de calendriers, mais GCALDaemon fait bien plus : Gmail notifier, importer un carnet d’adresse, convertisseur de feed RSS, etc.
Que me faut-il pour l’utiliser :
- L’envirronement Java 1.5 Runtime (ou plus récent)
- Un compte Gmail
- Une application de calendrier compatible iCal (Apple iCal, Sunbird)
Procédure d’installation
- Installation de GCALDaemon (Java 1.5 est requis) :
$ cd /usr/local/sbin $ sudo unzip /downloads/gcaldaemon-linux-1.x.zip $ sudo chgrp -R admin /usr/local/sbin/GCALDaemon $ sudo chmod -R g+w /usr/local/sbin/GCALDaemon $ sudo chmod 755 /usr/local/sbin/GCALDaemon/bin/*.sh
- Afin de différencier le nouveau calendrier que l’on va créer pour être utilisé avec GCALDaemon et les fichiers relatifs au(x) calendrier(s) déjà présents dans iCal, il suffit d’appliquer un label de couleur à tous les dossiers sous
~/Library/Application Support/iCal/Sources. - Lancer iCal, et créer un nouveau calendrier avec un nom distinct, par exemple ‘Google’.
- Quitter iCal, et aller voir le nouveau dossier sans label sous
~/Library/Application Support/iCal/Sources$ cd ~/Library/Application Support/iCal/Sources
- Ouvrir le fichier de configuration
gcal-daemon.cfg:$ cd /usr/local/sbin/GCALDaemon/conf $ vi gcal-daemon.cfg
- Ajouter le chemin complet vers le fichier
corestorage.icsdu nouveau dossier sans label fraîchement crée (sans le ~ ) pour la variablefile.ical.path:# Full path of the local iCalendar file file.ical.path=/Users/*/Library/Application Support/iCal/Sources/*.calendar/corestorage.ics
- Ajouter votre adresse email pour la variable
file.google.username:# Gmail user (your full email address) file.google.username=example@gmail.com
- Encoder votre mot de passe Gmail à l’aide du script
password-encoder.sh. Copier le mot de passe encodé :$ cd /usr/local/sbin/GCALDaemon/bin $ ./password-encoder.sh
- Ajouter votre mot de passe encodé pour la variable
file.google.password:# Gmail password (use password encoder!) file.google.password=31260V7mc34jV22c
- Copier l’URI iCal de votre calendrier privé Google. Vous la trouverez dans la page de configuration de Google Calendar :

- Ajouter l’URI iCal pour la variable
file.private.ical.url, sans le protocole et sans le nom de domaine :# URL (without hostname) of the Google Calendar's private ical file file.private.ical.url=/calendar/ical/example%40gmail.com/private-495c0f1bfg/basic.ics
- Mettre la variable
file.enabledàtrue:# Enable iCalendar file listener/synchronizer file.enabled=true
- Démarrer GCALDaemon à l’aide de
standalone-start.sh. L’affichage qui suit vous indique un fonctionnement normal :$ ./standalone-start.sh INFO | GCALDaemon V1.0 beta 8 starting... INFO | Local time zone is Pacific Standard Time. INFO | HTTP server disabled. INFO | RSS/ATOM feed converter disabled. INFO | Start listening file /Users/user/Library/.../iCal/corestorage.ics... INFO | File listener started successfully. INFO | LDAP server disabled. INFO | Gmail notifier disabled. INFO | Sendmail service disabled.
- Démarrer iCal. Les nouveaux éléments ajoutés, modifiés ou effacés à iCal seront désormais automatiquement mis-à-jour dans Google Calendar.
Démarrer le daemon automatiquement avec launchd
A ce stade, le daemon doît être lancé à la main, pour automatiser cette tâche et que GCALDaemon soit lancé à chaque démarrage de la machine, nous allons ajouter un élément au launchd d’OS X.
La procédure est la suivante :
- S’il n’existe pas, créer
~/Library/LaunchAgents - Puis éditer, un fichier avec l’extension
.plistcomme suit (dans mon exemple, mon fichier s’appellenet.feub.gcaldaemon.plist) :<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>net.feub.gcaldaemon</string> <key>ProgramArguments</key> <array> <string>/usr/local/sbin/GCALDaemon/bin/standalone-start.sh</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
- Démarrer le service comme ceci :
# launchctl load ~/Library/LaunchAgents/net.feub.gcaldaemon.plist
Et voilà, votre daemon est démarré et le sera à chaque démarrage de votre Mac.
Je ne m’étendrai pas sur le fonctionnement de launchd qui fera certainement l’objet d’un prochain article.
Note : cette commande launchctl permet de gérer le daemon launchd à la demande, il ne sera ensuite bien sur pas nécessaire de la taper, car launchd lancera notre script à l’ouverture de la session de l’utilisateur.
^.^

En voilà un bon tuto! J’essaie de m’y mettre dès ce soir pour te dire si j’ai bien tout pigé. Sans pratique, c’est un peu difficile d’être critique.
C’est sur que c’est moins ‘direct’ que Spanning Sync, mais une fois en place ça marche. Et pourquoi pas commencer un projet Cocoa de GUI pour GCALDaemon ;) On peut rêver.
En voilà une bonne idée! Si tu as besoin d’aide, je m’y essaierais bien…
Salut, c’est pas vraiment un commentaire mais plus une question…
Vu que je suis une buse (et c’est peu dire) en prog, je me demandais si c’était possible de synchroniser plus d’un agenda avec ce programme ?
Merci
Greg
Tes questions sont les bienvenues.
Pour te répondre, tu peux parfaitement synchroniser plusieurs calendriers, j’en ai moi-même trois.
Si par ‘je suis une buse’, tu veux dire que GCALDaemon te fait un peu peur car il faut taquiner la ligne de commande, je te dis qu’il n’y a rien de sorcier, si tu suis tout bien pas à pas, c’est très simple, juste un peu long. Et ça marche nickel.
Tu peux simplifier encore le tuto en fesant comme l’auteur sur SourceForge et inviter les utilisateur à modifier le fonctionnement launchd en utilisant l’excellent programe du Suedois Peter Borg déjà auteur de Smultron (editeur de texte ++ ) , à savoir Lingon -> http://lingon.sourceforge.net/
Merci pour la précision.
Je connaissais Lingon, mais je ne l’ai jamais essayé, ne voulant pas “m’encombrer” d’une appli cocoa de plus juste pour faire ce boulot. Je vais peut-être l’essayer quand même.
Salut, peux-tu préciser comment synchroniser plusieurs calendriers ?
Merci.
Il te suffit de faire la même chose que pour ton premier calendrier, en suffixant le nom de tes variables de façon incrémentale, comme ceci :
# Premier calendrier
file.ical.path=/Users/*/Library/Application Support/iCal/Sources/*.calendar/corestorage.ics
file.google.username=example@gmail.com
file.google.password=xxxxxxxxxxxxxx
file.private.ical.url=/calendar/ical/example@gmail.com/private-xxxxxxxxxxxxxx/basic.ics
# Deuxième calendrier
file.ical.path2=/Users/*/Library/Application Support/iCal/Sources/*.calendar/corestorage.ics
file.google.username2=account@gmail.com
file.google.password2=xxxxxxxxxxxxxx
file.private.ical.url2=/calendar/ical/495c0f1495c0f1/private-xxxxxxxxxxxxxx/basic.ics
# Troisième calendrier
file.ical.path3=/Users/*/Library/Application Support/iCal/Sources/*.calendar/corestorage.ics
file.google.username3=gmailuser@gmail.com
file.google.password3=xxxxxxxxxxxxxx
file.private.ical.url3=/calendar/ical/otheruser@gmail.com/private-xxxxxxxxxxxxxx/basic.ics