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

IPC

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-01T00:00:00Z to=2026-06-30T23:59:59Z
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.

Common Methods

UI

MethodDescription
ui.showShow the calendar window
ui.hideHide the calendar window
ui.toggleToggle the calendar window
ui.openEventOpen a specific event's details window — uid*, start (RFC3339)
ui.quitQuit the running daemon

ui.openEvent addresses events by their iCal UID (events.list includes it as uid), so external tools like bar widgets can jump straight to an event's native details view. Recurring occurrences share the series UID; pass the occurrence's start to pin a specific instance:

dcal ipc ui.openEvent uid=[email protected]
dcal ipc ui.openEvent uid=[email protected] start=2026-07-06T09:00:00Z

If the calendar window isn't open yet, it launches and navigates once loaded.

Events

MethodParams
events.listquery, from (RFC3339), to (RFC3339), limit, offset (all optional)
events.getuid*, calendarId, start (occurrence start RFC3339 for recurring events)
events.createcalendarId*, summary*, start*, end*, description, location, allDay, status, reminders
events.updateid*, plus any of the create fields
events.deleteid*

Calendars

MethodParams
calendars.list
calendars.setHiddencalendarId*, hidden* (true|false)
calendars.renamecalendarId*, name (empty clears)

Accounts

MethodParams
accounts.list
accounts.refreshaccountId (empty syncs all)

Reminders

MethodParams
reminders.upcominglimit (default 20)
reminders.testFire a test notification

System

MethodParams
system.autostart.getReport autostart status
system.autostart.setenabled* (true|false)
tip

* marks a required param. Run dcal ipc list for the complete, always-up-to-date set of methods on your installed version.

Keybind Example

Bind a key in your compositor to toggle the calendar. For niri:

binds {
Mod+Shift+C { spawn "dcal" "ipc" "ui.toggle"; }
}