If you use $XDG_CONFIG_HOME, don't use dot in the name of config file. Look into your $XDG_CONFIG_HOME for examples.
Looks like you have removed support for XDG_CONFIG_HOME. I don't like dotfiles and my XDG_CONFIG_HOME is set to $HOME/lib (and XDG_CACHE_HOME is set to $HOME/var). Directory names are taken from Plan 9. For example, news(1) from plan9port use $HOME/lib/newstime. It would be nice if instead of using .flo your program would use something like $HOME/lib/calendar. Adding XDG_CONFIG_HOME support is not neccessary: you can just always save into $HOME/lib even if XDG_CONFIG_HOME is set to $HOME/.config. I think it is a good solution that let you get rid of dotfiles and don't require adding support for complex FreeDesktop.org standard. I have used when[1] for some time, it is useful, but inside it is a long file with Perl code. Maybe you can get some ideas from it. For example, to simplify code, you can remove editing from flo and let user edit items file by hand. [1] http://www.lightandmatter.com/when/when.html