Skip to main content
Version: 1.4
██████╗  ██████╗ █████╗ ██╗     
██╔══██╗██╔════╝██╔══██╗██║     
██║  ██║██║     ███████║██║     
██║  ██║██║     ██╔══██║██║     
██████╔╝╚██████╗██║  ██║███████╗
╚═════╝  ╚═════╝╚═╝  ╚═╝╚══════╝

Accounts

DankCalendar pulls every calendar into one unified agenda. You can manage accounts entirely from the GUI (Settings → Accounts) or from the CLI.

Security & storage

dcal connects directly to your providers. There is no DankLinux server in between. Credentials (OAuth tokens and CalDAV/iCloud passwords) are stored in your system keyring (GNOME Keyring / KWallet via the Secret Service API) rather than your config files; on systems without a keyring, dcal falls back to an encrypted on-disk store. Synced calendars and events are cached locally in a SQLite database under ~/.local/share/dankcal/, so everything works offline.

List supported providers anytime:

dcal account providers
ProviderAuthlocalA directory of .ics filesgoogleOAuth (your own client app)microsoftOAuth (your own client app)caldavURL + username/passwordicloudApple ID + app-specific password

Managing Accounts

dcal account list # list connected accounts and their status
dcal account remove <account-id> # remove an account and its synced data
dcal account reauth <account-id> # re-authorize an account that needs it

Local Calendars

Point dcal at a directory of .ics files. Each subdirectory or .ics file becomes a calendar, compatible with vdirsyncer/khal layouts.

dcal account add local ~/.calendars

CalDAV

Works with any CalDAV-compatible server. You'll be prompted for the URL, username, and password.

dcal account add caldav

iCloud

iCloud uses CalDAV under the hood but requires an app-specific password. Your regular Apple ID password will not work.

dcal account add icloud
tip

Create an app-specific password at account.apple.com/account/manage.

Google

Google and Microsoft require you to create your own OAuth application (a one-time setup). Print step-by-step instructions:

dcal account setup google

Then complete the OAuth flow:

dcal account add google

Microsoft

dcal account setup microsoft
dcal account add microsoft

Syncing

The daemon syncs accounts automatically in the background. To force a sync:

dcal sync # sync all accounts
dcal sync <account-id> # sync one account

Next Steps