██████╗ ██████╗ █████╗ ██╗ ██╔══██╗██╔════╝██╔══██╗██║ ██║ ██║██║ ███████║██║ ██║ ██║██║ ██╔══██║██║ ██████╔╝╚██████╗██║ ██║███████╗ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚══════╝
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
| Method | Description |
|---|---|
ui.show | Show the calendar window |
ui.hide | Hide the calendar window |
ui.toggle | Toggle the calendar window |
ui.quit | Quit the running daemon |
Events
| Method | Params |
|---|---|
events.list | query, from (RFC3339), to (RFC3339), limit, offset (all optional) |
events.create | calendarId*, summary*, start*, end*, description, location, allDay, status, reminders |
events.update | id*, plus any of the create fields |
events.delete | id* |
Calendars
| Method | Params |
|---|---|
calendars.list | — |
calendars.setHidden | calendarId*, hidden* (true|false) |
calendars.rename | calendarId*, name (empty clears) |
Accounts
| Method | Params |
|---|---|
accounts.list | — |
accounts.refresh | accountId (empty syncs all) |
Reminders
| Method | Params |
|---|---|
reminders.upcoming | limit (default 20) |
reminders.test | Fire a test notification |
System
| Method | Params |
|---|---|
system.autostart.get | Report autostart status |
system.autostart.set | enabled* (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"; }
}