Intemporel — Omarchy Quattro Clock/Calendar Plugin
Intemporel is a clock replacement and read-only calendar for Omarchy. It displays a date/time label in the bar and opens an event calendar from public iCalendar (ICS) feeds.
<img src="screenshot.png" alt="Intemporel calendar showing events" width="344">Features
- Drop-in replacement for
omarchy.clock: left-click opens the calendar, right-click cycles clock formats, and middle-click opens the timezone picker. - Monthly calendar view with today and the selected day highlighted
- Read-only event display from one or more public ICS URLs
- Calendar-specific names and colors
- Keyboard navigation
- No calendar accounts, credentials, or write access required
Installation
Install the plugin with the Omarchy plugin manager:
omarchy plugin add https://github.com/pomartel/intemporel.git
The plugin is installed at:
~/.config/omarchy/plugins/intemporel/
Replace the default clock in ~/.config/omarchy/shell.json. Intemporel uses
the system locale by default for dates, times, and its interface; English,
French, and Spanish interface translations are included. Set locale on the
bar entry to override it.
{
"bar": {
"centerAnchor": "intemporel",
"layout": {
"center": [{
"id": "intemporel",
"format": "dddd HH:mm",
"formatAlt": "d MMMM 'W'ww yyyy",
"locale": "fr_CA"
}]
}
}
}
The calendar can also be opened through the Omarchy shell IPC interface:
omarchy-shell shell toggle intemporel
Configuration
Edit calendars.jsonc in the plugin directory to configure your calendars:
~/.config/omarchy/plugins/intemporel/calendars.jsonc
{
"calendars": [
{
"name": "Work",
"url": "https://example.com/work.ics",
"color": "#4285F4"
},
{
"name": "Family",
"url": "https://example.com/family.ics",
"color": "#F59E0B"
}
]
}
Each calendar entry supports:
name: label used internally for the calendar sourceurl: public, read-only ICS feed URLcolor: optional color for the event markerexcludeDeclined: optional; defaults totrue, hiding invitations you declined. Set it tofalseto show them.
Feed cache
Intemporel keeps the last successful response for each feed in
~/.cache/intemporel-calendar-cache.json. Cached events appear immediately
when the calendar opens; feeds then refresh in the background. The cache is
local and may contain the same private calendar data as the configured ICS URLs.
Privacy and security
Only use feeds that are intended to be shared with the people who can access your computer. Some calendar providers use hard-to-guess URLs as a form of access control. Treat those URLs like passwords and do not commit them to a public repository.
Intemporel only downloads and displays events. It does not create, edit, or delete calendar data.
Keyboard controls
| Key | Action |
|---|---|
↑ ↓ ← → |
Move the selected day |
Ctrl + arrow keys |
Change month |
Enter or Home |
Go to today |
r |
Refresh calendar feeds |
? |
Toggle keyboard help |
Esc |
Close the panel |
Troubleshooting
No calendars appear
Check that:
calendars.jsoncis valid JSONC.- Each feed URL is reachable without authentication.
curl -fsSL "https://example.com/calendar.ics"can fetch the feed.- The feed contains valid
VEVENTentries.
Updating
Update installed plugins with:
omarchy plugin update intemporel
Removal
Before removing the plugin, replace the intemporel center entry in
~/.config/omarchy/shell.json with Omarchy's default clock (keep any other
widgets in center):
{
"bar": {
"centerAnchor": "omarchy.clock",
"layout": {
"center": [{
"id": "omarchy.clock",
"format": "dddd HH:mm",
"formatAlt": "d MMMM 'W'ww yyyy",
"verticalFormat": "HH\n—\nmm"
}]
}
}
}
Then remove Intemporel:
omarchy plugin remove intemporel
The command disables and unloads the plugin, including its in-plugin calendar configuration. It preserves the feed cache. To discard cached events too, run:
rm -f "~/.cache/intemporel-calendar-cache.json"
Development
The plugin consists of:
BarWidget.qml: clock label and calendar host, following the Omarchy clock structureModel.js: clock label formatting helpersCalendar.qml: calendar UI, keyboard handling, and shell integrationCalendarModel.js: ICS parsing, recurrence expansion, and formattingcalendars.jsonc: starter calendar configurationmanifest.json: Omarchy plugin metadata and entry point
Validate the plugin before submitting changes:
omarchy plugin validate .
qmllint -I /usr/share/omarchy/shell Calendar.qml
node --check CalendarModel.js
Pull requests and issue reports are welcome.
License
Intemporel is released under the MIT License.