██████╗ ██████╗ █████╗ ██╗ ██╔══██╗██╔════╝██╔══██╗██║ ██║ ██║██║ ███████║██║ ██║ ██║██║ ██╔══██║██║ ██████╔╝╚██████╗██║ ██║███████╗ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚══════╝
The dcal daemon exposes a scriptable IPC surface, handy for compositor keybinds and automation. Invoke a method and pass params as key=value pairs:
dcal ipc ui.toggle
dcal ipc events.list from=2026-06-01 to=2026-06-30
dcal ipc reminders.upcoming limit=5
List every available method and its params:
dcal ipc list
Results are printed as JSON, so they pipe cleanly into jq and friends.
ui.showui.hideui.toggleui.quitevents.listquery, from (RFC3339), to (RFC3339), limit, offset (all optional)events.createcalendarId*, summary*, start*, end*, description, location, allDay, status, remindersevents.updateid*, plus any of the create fieldsevents.deleteid*calendars.listcalendars.setHiddencalendarId*, hidden* (true|false)calendars.renamecalendarId*, name (empty clears)accounts.listaccounts.refreshaccountId (empty syncs all)reminders.upcominglimit (default 20)reminders.testsystem.autostart.getsystem.autostart.setenabled* (true|false)* marks a required param. Run dcal ipc list for the complete, always-up-to-date set of methods on your installed version.
Bind a key in your compositor to toggle the calendar. For niri:
binds {
Mod+Shift+C { spawn "dcal" "ipc" "ui.toggle"; }
}