A standalone calendar and agenda applet for the Pop!_OS COSMIC Desktop. Fetches events from Evolution Data Server (Google Calendar, Nextcloud, CalDAV) and local .ics files, displaying event dots on the monthly calendar grid and an agenda list for selected days.
Built as an independent applet using libcosmic, decoupled from the core cosmic-applets monorepo.
| Event with Meeting Link | Empty State |
|---|---|
![]() |
![]() |
| Standard Agenda View | Localization & Real CalDAV Sync |
|---|---|
![]() |
![]() |
- Google Calendar, Nextcloud & CalDAV Sync: Queries Evolution Data Server (EDS) over D-Bus with zero configuration if your account is signed in via GNOME Online Accounts or Evolution.
- Local
.icsFile Support: Auto-discovers calendar and public holiday.icsfiles in~/.local/share/calendars/,~/.local/share/cosmic-calendar/, and/usr/share/calendar/. - Calendar Event Dots: Monthly grid shows indicator dots beneath days with scheduled events.
- Chronological Agenda: Selecting a day lists its events sorted by time (all-day events at top) with title, time, and location.
- One-Click Meeting Join: Detects Google Meet, Zoom, and Microsoft Teams URLs and launches them in your default browser.
- Battery & Performance Optimization: Zero background polling or CPU wakeups when the popup is closed. In-memory LRU cache with a 60-second TTL provides instant 0ms month navigation.
- Fault-Tolerant Deduplication: Deduplicates events appearing across multiple calendars or identical recurring instances without dropping distinct meetings at the same hour.
- 40+ Language Translations: Built-in localization support via Fluent.
Downloads the prebuilt binary and installs it to ~/.local/bin/:
curl -fsSL https://raw.githubusercontent.com/Hasmolam/cosmic-ext-applet-calendar/main/install.sh | bashTo also replace your top bar's digital clock:
curl -fsSL https://raw.githubusercontent.com/Hasmolam/cosmic-ext-applet-calendar/main/install.sh | bash -s -- --replace-clockRequires cargo and just:
git clone https://github.com/Hasmolam/cosmic-ext-applet-calendar.git
cd cosmic-ext-applet-calendar
just build
sudo just installgit clone https://github.com/Hasmolam/cosmic-ext-applet-calendar.git
cd cosmic-ext-applet-calendar
cargo build --release
./install.shThis applet natively supports two distinct operational modes:
- Standalone Panel Applet (Default): Displays a calendar icon with today's day of the month in your panel or dock. Go to Settings → Desktop → Panel → Applets, search for Calendar & Agenda, and add it anywhere.
- Drop-in Clock Replacement:
Replaces the default COSMIC digital clock (
cosmic-applet-time) on your top bar, retaining standard time formatting while opening the calendar and agenda on click. Enabled via./install.sh --replace-clock.
The applet reads from Evolution Data Server (EDS) over D-Bus and from local .ics files. It does not communicate directly with proprietary cloud APIs, meaning any service supported by EDS works out of the box.
COSMIC Settings (cosmic-settings) does not currently include a native Online Accounts configuration panel. On Pop!_OS and Ubuntu-based COSMIC systems, configure your accounts through GNOME Online Accounts.
Because GNOME Control Center restricts execution outside GNOME/Unity sessions, launch the Online Accounts panel with the XDG_CURRENT_DESKTOP override:
env XDG_CURRENT_DESKTOP=GNOME gnome-control-center online-accounts- Select Google, Nextcloud, or WebDAV (CalDAV).
- Sign in and verify that the Calendar toggle is enabled.
- Evolution Data Server will synchronize events in the background. The applet discovers new calendars on its next popover open.
On non-GNOME distributions (e.g. Arch Linux, Fedora Minimal), you can configure accounts using the Evolution mail client GUI (evolution -> Edit -> Preferences -> Calendars) or any EDS-compatible setup tool.
If you do not want cloud synchronization, copy any standard iCalendar (.ics) file into:
mkdir -p ~/.local/share/calendars
cp your-calendar.ics ~/.local/share/calendars/The applet also scans ~/.local/share/cosmic-calendar/ and /usr/share/calendar/ for system holidays.
To completely remove the applet and restore the default system clock:
curl -fsSL https://raw.githubusercontent.com/Hasmolam/cosmic-ext-applet-calendar/main/uninstall.sh | bashOr manually:
rm -f ~/.local/bin/cosmic-ext-applet-calendar ~/.local/bin/cosmic-applet-time
rm -f ~/.local/share/applications/io.github.hasmolam.cosmic-ext-applet-calendar.desktop
rm -f ~/.local/share/icons/hicolor/scalable/apps/io.github.hasmolam.cosmic-ext-applet-calendar-symbolic.svg
killall cosmic-panellibcosmic Window Loop
│
▼
EventCache (LRU, 60s TTL)
│
▼
CompositeBackend
├── LocalIcsBackend (~/.local/share/calendars/*.ics)
└── EdsBackend (org.gnome.evolution.dataserver.Calendar over zbus 5 D-Bus)
The applet implements a modular CalendarBackend trait. When official COSMIC Accounts support is released in upstream COSMIC, adding support requires only implementing the trait.
GPL-3.0-only. See LICENSE for details.



