An Omarchy Quattro menu-bar calendar powered by Chroncal.

in 5m, 12m left) and explicit weekday labels for later events (Mon 09:00).authuser).chroncal --event); off by default, with g still available.p.This is menu-bar parity, not a replacement for Chroncal's full TUI. Timezone-sensitive time changes, alarms, availability, sync configuration, account management, and advanced calendar operations remain in Chroncal.
PATHchroncal event rsvp for Yes/No/Maybe replies (not in 0.7.4)chroncal --event to open the TUI on the selected eventbash, jq, GNU date, and GNU timeoutxdg-open for links and mapswl-copy for copy actionsnotify-send for helper errorsInstall Chroncal with mise if needed:
mise use -g github:DouglasdeMoura/chroncal@0.7.4
That pin is enough for the rest of the bar. Yes/No/Maybe needs a Chroncal newer than 0.7.4, or a local build of feat/event-rsvp-cli.
Authenticate and configure calendars in the Chroncal TUI before expecting events on the bar:
chroncal
omarchy plugin add https://github.com/DouglasdeMoura/chroncal-bar.git --enable
omarchy bar move douglasdemoura.chroncal-bar --section right --after omarchy.tray
The second command is optional. It places the widget beside the tray in the right-aligned bar group.
| Key | Context | Action |
|---|---|---|
↑ / ↓, j / k | Agenda | Move selection |
← / →, h / l | Agenda | Previous or next day |
t | Agenda | Jump to today's first event |
Enter / Space | Agenda | Open selected event |
/ | Agenda | Open search |
c | Agenda or details | Create event |
e | Agenda or details | Edit event or recurring series |
x or Delete | Agenda or details | Delete this event, this and following, or all events |
v | Event details | Join or open event URL |
p | Event details | Copy event details |
g | Event details | Open this event in Chroncal |
y / n / m | Event details | RSVP yes, no, or maybe |
s | Agenda | Refresh |
C or , | Agenda | Open settings |
? | Agenda | Open shortcut help |
Ctrl+S | Event editor | Save event or series |
Esc or q | Any panel view | Back, cancel, or close |
Search opens with /. Subviews share one header back arrow. Settings, shortcut help, and Create are the agenda header actions. Refresh happens when the panel opens, on s, and on bar right-click. Event-detail buttons cover the rest.
Open the agenda and press C or ,, or click the settings cog in the header. Available settings:
Calendar selection has two states. Default mode selects every current calendar and automatically includes calendars added later. The first checkbox change stores an exact custom selection; selecting none hides every event. Use Use default (all calendars) to discard the custom selection and return to automatic default mode.
Settings persist on the widget entry in ~/.config/omarchy/shell.json. They can also be changed from the command line:
omarchy bar set douglasdemoura.chroncal-bar interval 60
omarchy bar set douglasdemoura.chroncal-bar lookaheadDays 7
omarchy bar set douglasdemoura.chroncal-bar showTitle On
omarchy bar set douglasdemoura.chroncal-bar showOpenInChroncal On
omarchy bar set douglasdemoura.chroncal-bar relativeLeadMinutes 10
Force a refresh:
omarchy-shell douglasdemoura.chroncal-bar refresh
The plugin runs inside Omarchy's long-running Quickshell process with your user permissions. Its QML timer starts a one-shot agenda helper at the configured interval; the helper emits one normalized JSON document and exits. The plugin does not start another Quickshell process, install packages, request elevated privileges, or run a remote installer.
Chroncal remains the source of truth. The plugin calls its CLI to read calendar and event data and to perform explicitly requested create, update, and delete actions. Helpers also read ~/.local/state/chroncal/state.json for hidden calendar IDs.
Chroncal's optional chroncal service run process is separate. This plugin neither installs nor controls that service.
omarchy plugin remove douglasdemoura.chroncal-bar
Removal deletes only the plugin. It does not remove Chroncal, calendar state, or any separate Chroncal service.
TZ=UTC bun tests/test-model.js
tests/test-agenda.sh
tests/test-open-url.sh
bash -n scripts/chroncal-exec scripts/chroncal-bar-agenda scripts/chroncal-next-event scripts/chroncal-open-next-event-url
omarchy plugin validate .
/usr/lib/qt6/bin/qmllint -I /usr/share/omarchy/shell \
BarWidget.qml Panel.qml components/*.qml
qmllint exits successfully but reports unresolved qs.Commons and qs.Ui types outside the running Omarchy shell. Runtime smoke tests cover the real plugin host.
140 commits
QML
45.8%
JavaScript
40.9%
Shell
13.3%
An Omarchy Quattro menu-bar calendar powered by Chroncal.

in 5m, 12m left) and explicit weekday labels for later events (Mon 09:00).authuser).chroncal --event); off by default, with g still available.p.This is menu-bar parity, not a replacement for Chroncal's full TUI. Timezone-sensitive time changes, alarms, availability, sync configuration, account management, and advanced calendar operations remain in Chroncal.
PATHchroncal event rsvp for Yes/No/Maybe replies (not in 0.7.4)chroncal --event to open the TUI on the selected eventbash, jq, GNU date, and GNU timeoutxdg-open for links and mapswl-copy for copy actionsnotify-send for helper errorsInstall Chroncal with mise if needed:
mise use -g github:DouglasdeMoura/chroncal@0.7.4
That pin is enough for the rest of the bar. Yes/No/Maybe needs a Chroncal newer than 0.7.4, or a local build of feat/event-rsvp-cli.
Authenticate and configure calendars in the Chroncal TUI before expecting events on the bar:
chroncal
omarchy plugin add https://github.com/DouglasdeMoura/chroncal-bar.git --enable
omarchy bar move douglasdemoura.chroncal-bar --section right --after omarchy.tray
The second command is optional. It places the widget beside the tray in the right-aligned bar group.
| Key | Context | Action |
|---|---|---|
↑ / ↓, j / k | Agenda | Move selection |
← / →, h / l | Agenda | Previous or next day |
t | Agenda | Jump to today's first event |
Enter / Space | Agenda | Open selected event |
/ | Agenda | Open search |
c | Agenda or details | Create event |
e | Agenda or details | Edit event or recurring series |
x or Delete | Agenda or details | Delete this event, this and following, or all events |
v | Event details | Join or open event URL |
p | Event details | Copy event details |
g | Event details | Open this event in Chroncal |
y / n / m | Event details | RSVP yes, no, or maybe |
s | Agenda | Refresh |
C or , | Agenda | Open settings |
? | Agenda | Open shortcut help |
Ctrl+S | Event editor | Save event or series |
Esc or q | Any panel view | Back, cancel, or close |
Search opens with /. Subviews share one header back arrow. Settings, shortcut help, and Create are the agenda header actions. Refresh happens when the panel opens, on s, and on bar right-click. Event-detail buttons cover the rest.
Open the agenda and press C or ,, or click the settings cog in the header. Available settings:
Calendar selection has two states. Default mode selects every current calendar and automatically includes calendars added later. The first checkbox change stores an exact custom selection; selecting none hides every event. Use Use default (all calendars) to discard the custom selection and return to automatic default mode.
Settings persist on the widget entry in ~/.config/omarchy/shell.json. They can also be changed from the command line:
omarchy bar set douglasdemoura.chroncal-bar interval 60
omarchy bar set douglasdemoura.chroncal-bar lookaheadDays 7
omarchy bar set douglasdemoura.chroncal-bar showTitle On
omarchy bar set douglasdemoura.chroncal-bar showOpenInChroncal On
omarchy bar set douglasdemoura.chroncal-bar relativeLeadMinutes 10
Force a refresh:
omarchy-shell douglasdemoura.chroncal-bar refresh
The plugin runs inside Omarchy's long-running Quickshell process with your user permissions. Its QML timer starts a one-shot agenda helper at the configured interval; the helper emits one normalized JSON document and exits. The plugin does not start another Quickshell process, install packages, request elevated privileges, or run a remote installer.
Chroncal remains the source of truth. The plugin calls its CLI to read calendar and event data and to perform explicitly requested create, update, and delete actions. Helpers also read ~/.local/state/chroncal/state.json for hidden calendar IDs.
Chroncal's optional chroncal service run process is separate. This plugin neither installs nor controls that service.
omarchy plugin remove douglasdemoura.chroncal-bar
Removal deletes only the plugin. It does not remove Chroncal, calendar state, or any separate Chroncal service.
TZ=UTC bun tests/test-model.js
tests/test-agenda.sh
tests/test-open-url.sh
bash -n scripts/chroncal-exec scripts/chroncal-bar-agenda scripts/chroncal-next-event scripts/chroncal-open-next-event-url
omarchy plugin validate .
/usr/lib/qt6/bin/qmllint -I /usr/share/omarchy/shell \
BarWidget.qml Panel.qml components/*.qml
qmllint exits successfully but reports unresolved qs.Commons and qs.Ui types outside the running Omarchy shell. Runtime smoke tests cover the real plugin host.
140 commits
QML
45.8%
JavaScript
40.9%
Shell
13.3%