The file-based synchronization mode keeps one or more local iCalendar file(s) in sync with your Google Calendar and vice versa.
After installing this program, every file-based calendaring program (e.g. Rainlendar)
should be able to subscribe and modify a remote Google Calendar.
1) Install GCALDaemon (Java 1.5 required).
2) Start password encoder ('password-encoder.bat' or 'password-encoder.sh').
Input your Gmail password and press ENTER. Copy the encoded password.
3) Copy the iCal URL for your calendar's Private Address on the Calendar Settings page.
4) Edit the 'gcal-daemon.cfg' file with your text editor.
A) Set the 'file.enabled' property to 'true'
B) Set the 'file.google.username' property to your Gmail address
C) Set the 'file.google.password' property to your encoded password
D) Set the 'file.private.ical.url' property to iCal URL, without protocol and hostname (see below)
5) Start GCALDaemon ('standalone-start.bat' or 'standalone-start.sh').
6) Launch Rainlendar. Click 'Options' menu in the Rainlendar's setup menu.
7) Select 'Calendars' page, and set the 'Filename' property to 'C:/Progra~1/GCALDaemon/google.ics'.
Click the 'OK' button.
Items added (or modified/deleted) to your Rainlendar will now automatically appear in your Google Calendar.
The 'file.offline.enabled' option is the only one difference between the
offline (dial-up) and online (permanently connected) Google Calendar synchronization.
To enable GCALDaemon's offline synchronization algorithm,
follow the step-by-step instructions about the
Desktop configuration (Permanent Internet connection),
then set the 'file.offline.enabled' property to 'true'.
Permanently connected (always online) mode:
GCALDaemon downloads your Google Calendar's iCalendar file every 10 minutes
(see the 'file.polling.google' property). In the meantime
GCALDaemon's file scanner listens the changes in the local iCalendar files,
and updates the remote Google Calendar events almost immediately,
using small portion of XML messages
(see the 'file.polling.file' property).
This mode is much more faster than the offline algorithm,
but does not support offline working.
Dial-up (offline-enabled) mode:
GCALDaemon compares your Google Calendar (if available) and local iCalendar file every 10 minutes,
and does all modifications together.
If it is unable to do so because the network is unavailable, it tries again when it detects network presence.
The average network usage of these (online / offline) modes are equal.
This mode is particularly useful for notebook users and for third-party phone/PDA synchronizers.
Sync-on-demand:
This feature is a variant of the offline/dial-up mode.
When you launch the 'GCALDaemon/bin/sync-now.bat' (or 'sync-now.sh') script file,
GCALDaemon synchronize your calendar files, then stop.
You can create a shortcut icon on your desktop for the 'sync-now' script,
or you can combine it with Windows Task Scheduler.
This mode is optimal for systems with less than 256 MB of RAM.
To set up multiple file listeners, you need to configure
a path-username-password-url set for each of the Google Calendars you want to synchronize (see picture below;
the first listener definition is unindexed, the others are indexed from '2').
Note: don't include backslash characters in the 'file.ical.path' properties.
File-based synchronizer can convert RSS/ATOM XML files to iCalendar format,
therefore you can read news, blogs and tweets with Rainlendar.
This feature makes copying feed entries to Google Calendar a simple copy/paste operation.
Once the entry copied to the Google Calendar, you can edit it as an average calendar event.
Another advantage is that you can add directly To Do (Task) items to the converted calendar.
Note: feed converter must be enabled (feed.enabled=true).
# Google Calendar
file.ical.path=C:/Progra~1/GCALDaemon/google1.ics
file.google.username=example@gmail.com
file.google.password=31260V7mc34jV22c
file.private.ical.url=/calendar/ical/example%40gmail.com/private-495c0f1bfg/basic.ics
# BBC Technology RSS News (without username/password)
file.ical.path2=C:/Progra~1/GCALDaemon/google2.ics
file.private.ical.url2=http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/technology/rss.xml
# Twitter ATOM feed (with username/password)
file.ical.path3=C:/Progra~1/GCALDaemon/google3.ics
file.google.username3=twitterusername
file.google.password3=9f2cb4j5c0f1V2g
file.private.ical.url3=http://twitter.com/statuses/user_timeline/feednumber.atom

ATOM feed in Rainlendar
1) If there is no need for HTTP-based synchronization, set the
'http.enabled' property to 'false' (in 'gcal-daemon.cfg').
We recommend to set this for the lower memory usage and for the higher security.
The authentication and the ATOM-based communication between Google and
GCALDaemon is secure (SSL) and cannot be intercepted by a third party.
2) Optionally start the 'service-install.bat' to install GCALDaemon as Windows service
(on UNIX-compatible systems put GCALDaemon into 'init', 'launchd' or 'rc' script).
Before uninstall GCALDaemon, you must stop and uninstall this service
(with 'service-stop.bat' and 'service-uninstall.bat').
Please note, this is the last step in the setup/configuration process,
do not install the service while GCALDaemon is not running properly.
On Vista, it's not enough to be in the Administrators group,
you need to either be actually logged on as the Administrator.
A) In START menu click on the 'Command Prompt'
B) Right click on it and select 'Properties'
C) In 'Shortcut' tab, click on 'Advanced...'
D) Tick the 'Run as Administrator'
E) Run 'Command Prompt' and in click 'Continue' in 'User Account Control' box
F) Now you are in administrator mode
G) Type 'cd [gcaldaemon installation directory]\bin'
H) Execute 'service-install.bat'
I) Execute 'service-start.bat'
3) Making synchronization visible: set the 'progress.enabled' property to 'true' (in 'gcal-daemon.cfg')
to enable GCALDaemon's progress bar.
This spinning progress is visible while the GCALDaemon communicating with the Google Calendar.
4) Put a 'work.dir' property into 'conf/gcal-daemon.cfg'
to specify the work directory of GCALDaemon.
This directory is the 'GCALDaemon/work' folder by default.
For people that use multiple operating systems it is handy that the work
directory is another directory.
Also, it's more secure if the work files wouldn't reside in the program
directory but on eg. an encrypted partition.
Note: After you set up a new directory,
you may copy the old work folder's content
into the new one.
# GCALDaemon's work directory
work.dir=d:/secure/work
1) Rainlendar alarm property synchronized unidirectionally (move property from Rainlendar to Google Calendar).
Google Calendar supports discrete alarm values only (5-10-15-20-25-30-45 mins, 1-2-3 hours,
1-2 days, or one week). GCALDaemon converts different values into such an values
(e.g. 17 min to 15 min, 6 day to one week, etc).
Rainlendar does not support the recurrence-id property,
category, priority and URL properties are unsupported by the Google Calendar API.
iCalendar event property |
Google Calendar event property |
Synchronization |
summary |
title |
bidirectionally |
location |
where |
bidirectionally |
description |
content |
bidirectionally |
created date |
published date |
bidirectionally |
start date |
start date |
bidirectionally |
end date |
end date |
bidirectionally |
all day event (true / false) |
all day event (true / false) |
bidirectionally |
status (tentative / confirmed / canceled) |
status (tentative / confirmed / canceled) |
bidirectionally |
classification (public / private) |
visibility (public / private) |
bidirectionally |
transparency (transparent / opaque) |
transparency (transparent / opaque) |
bidirectionally |
list of attendees |
list of participants |
bidirectionally |
recurrence rule (including exceptions) |
recurrence rule (including exceptions) |
bidirectionally |
recurrence-id |
original event |
unsupported |
alarm |
reminder |
one-way only (Rainlendar to Google) |
2) Extended synchronization:
GCALDaemon is able to synchronize on these four iCalendar property in 'extended mode':
alarm (two-way), category, priority and URL.
This is useful if you'd like to sync Google Calendar with your PDA (in dial-up or sync-on-demand mode).
To enable this feature set the 'extended.sync.enabled' property to 'true'.
Note: Needless use of the extended mode (especially with large calendars) can significantly reduce the performance.
# Enable to sync alarms, categories, urls and priorities
extended.sync.enabled=true
iCalendar event property |
Google Calendar event property |
Synchronization |
alarm |
reminder |
bidirectionally |
category (Business, Birthday, etc) |
hidden |
bidirectionally |
priority (low, medium, high) |
hidden |
bidirectionally |
URL |
hidden |
bidirectionally |
3) Google Calendar - unlike Rainlendar or iCal - does not support To Do (Task) items.
Therefore GCALDaemon stores To Do items in a local file storage.
This storage is the 'GCALDaemon/work' folder.
Before uninstall an older GCALDaemon version, you should archive this directory.
If the new GCALDaemon installation finishes, you can restore
the previous 'work' folder, including the old To Do items.
About the 'online' synchronization:
GCALDaemon is designed to run as a background service,
ideally it started with your OS each system boot (or user login).
To avoid data loss, do not modify your
local calendar files when GCALDaemon is not running properly (or stopped)
and the 'file.offline.enabled' property is 'false'.
Note: GCALDaemon automatically creates daily backups of each and every local
and remote calendar into the 'work/backup' subdirectory,
so your files are always safe and secure.