Skip to main content
Version: 2.1

Dux Calendar

Accounts

Accounts

Dux Calendar 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 Dux 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
ProviderAuth
localA directory of .ics files
googleOAuth (your own client app)
microsoftOAuth (your own client app)
caldavURL + username/password
icloudApple ID + app-specific password
icalA read-only iCal/webcal feed URL
evolutionCalendars already managed by Evolution Data Server

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 remove <account-id> -y # skip the confirmation prompt
dcal account reauth <account-id> # re-authorize a Google/Microsoft login that expired

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, or you can pass them as flags:

dcal account add caldav
dcal account add caldav --url https://dav.example.com --username me --name "Work"

For servers using a self-signed certificate, add --insecure to skip TLS certificate verification. Only do this for servers you control:

dcal account add caldav --url https://dav.homelab.lan --insecure

In the GUI, the same option appears as Skip certificate verification in the CalDAV add-account form.

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

iCal / webcal Subscriptions​

Subscribe to a read-only external feed, such as a university timetable or a published Google/Outlook calendar. Both https:// and webcal:// URLs are accepted, and the feed refreshes in the background.

dcal account add ical https://example.com/schedule.ics
dcal account add ical webcal://example.com/team.ics --name "Team"

If the feed is behind HTTP basic auth, pass --username (you'll be prompted for the password). You can also hand a webcal:// link straight to the app, which opens the subscribe dialog:

dcal open webcal://example.com/team.ics

Evolution​

Reuse the calendars that Evolution Data Server already manages on this machine (from Evolution, GNOME Online Accounts, and similar). EDS owns the credentials and remote sync, so there's nothing else to configure.

dcal account add evolution

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​

  • Usage - Window control, sync, and reminders
  • IPC - Automate dcal from keybinds and scripts