Config file format is ini-style file managed by python configparser module.
It iz stored in ${HOME}/.config/vpim/vpim.conf.
Where data are stored
We expect contacts to be stored in ${HOME}/.contacts and calendar (events and tasks) in the `${HOME}/.calendars.
But vdirsyncer can create serveral subdirectories in each of these directrories, and todoman even have functionality to move tasks from list to list, which might be good thing to support GTD. Names of these subdirectories are discovered from CalDAV/CardDAV server and can be completely unreadable. We need way to provide aliases for this directories.
So, config file has sections [calendars] and [contacts], which contain arbitrary names for keys and values of these case are names of subdirectories of ~/.calendars or ~/.contacts respectively. These keys form menu of available calendars/addressbooks for full-screen apps and may be used as value of -D option for cli applications. If there is key 'default' it is automatically opened, if program started without -D option.
Default list parameters
Tasks may be sorted different ways. And filtered different ways. So in section [tasklist] user can specify default filtering/ordering parameters.
Holydays
May be they should be stored in separate file (or files per year, because some countries decide which days are holydays each year). This file format should support marking work-day as holyday and marking weekend day as workday.
External tools
We need to know vdir syncing application to call when sync is needed. And also we need command to play alarm sound