A malleable HUD / dashboard plugin for Omarchy. A compact bar pill — Pomodoro · clock · weather — expands into a full dashboard: quick actions, a launcher-style search, system shortcuts, and a dashboard of pinnable plugin cards.
A single bar pill showing three slots at a glance — Pomodoro (left), clock (center), and weather (right). Click on the clock and weather on the pill to open the expanded dashboard. Click on the Pomodoro to start it. Right-click the clock and weather to cycle through formats.
A tiled card grid that autosizes to its content and opens centered on the bar.
Default Layout:
- Pomodoro — focus countdown with three compact display modes (ring, ring + clock, bare clock), persisted per preference.
- Calendar — Replica of the Omarchy built-in calendar with month view and year progress.
- Weather — current conditions, a 3-day forecast, a scrollable hourly list, sunrise/sunset, and live units toggle.
Apps, files, calculator (math), dictionary definitions, unit conversion, and web
keywords (gg: dd: wiki: gh:) — all
scored and merged into one list.
Pin any installed Omarchy plugin into a card:
- Live panels — the plugin's real popup UI (network, audio, bluetooth, power, …) embedded directly inside the card via content adoption.
- Launcher tiles — one-click summons for overlay / menu plugins via IPC.
A Hyprland-style packer. Each plugin carries a persisted row; the grid starts
a new visual row on a row-number change or on overflow, so you decide where
rows break — not the width.
Drag cards between rows with animated push (half-split drop targets), remove them, and re-add from a scanned plugin list.
A replica of Omarchy's built-in indicators (dictation, screen recording, reminder, night light, DND, stay awake) on the left, and system shortcuts (lock, reboot, shutdown, logout, screensaver, settings) on the right.
Weather via Open-Meteo (no API key, shares Omarchy's configured location) and a Pomodoro focus timer.
omarchy plugin add https://github.com/djmenig/omadash.git --enable
omarchy restart shellIf the pill lands somewhere other than the center of the bar:
omarchy bar move djmenig.omadash --section centerYou can also clone / symlink the repo to
~/.config/omarchy/plugins/djmenig.omadash and restart the shell.
Take OmaDash off the bar but keep it installed:
omarchy plugin disable djmenig.omadashUninstall and remove it entirely (also removes it from the bar):
omarchy plugin remove djmenig.omadash --yesYour saved layout and preferences live outside the plugin directory in
~/.config/omarchy/omadash/ and are left behind. To clear them too:
rm -rf ~/.config/omarchy/omadash- Left-click the Clock on pill — open / close the dashboard.
- Left-click the Pomodoro on pill — start / pause the timer.
- Right-click the Pomodoro pill cycles its compact display mode.
- Right-click the Clock pill cycles through its display formats.
- Right-click the Weather pill cycles through its display formats °C/°F.
- Edit switch (Dashboard) — enter edit mode: drag cards (the left / right half of a card decides the drop side), remove them, or add new ones via the + button.
- Search (Dashboard) — type to search; ↑/↓ navigate, Enter activates, Esc clears.
- Layout and preferences persist across restarts
(
~/.config/omarchy/omadash/dashboard.jsonandsettings.json).
- Omarchy (Quickshell-based shell).
- Network access for weather and online searches.
- Open-Meteo — weather forecast and geocoding (no API key; shares Omarchy's configured location).
- ip-api.com and ipwho.is — IP geolocation fallback for weather when Omarchy has no configured location.
- Wiktionary (
en.wiktionary.org) — dictionary definitions in search.
These are only contacted when a relevant feature needs data (weather fetch, or a definition lookup); nothing else requires network access and everything else works offline.
OmaDash runs as normal user and delegates privileged or system actions to Omarchy's own built-in commands rather than reimplementing them:
- Omarchy system actions:
omarchy system lock,omarchy system reboot,omarchy system shutdown,omarchy-launch-screensaver force,omarchy-reminder,omarchy launch editor, andomarchy-shell shell toggle/summon(plugin lifecycle / launcher). - Hyprland:
hyprctl dispatch exit(logout) andhyprctl dispatch focuswindow(window switching). - Search handling:
xdg-open(open results),wl-copy(copy to clipboard). - Calculator: a sandboxed
python3 -cexpression evaluator for math queries. - Sound:
paplayon/usr/share/sounds/freedesktop/stereo/bell.ogafor the Pomodoro completion chime (requires the freedesktop sound theme).
No action writes to or modifies your shell/Omarchy configuration — OmaDash only
persists its own state under ~/.config/omarchy/omadash/.
djmenig.omadash/
├── BarWidget.qml # bar entry point; owns the compact pill + panel
├── Panel.qml # expanded dashboard surface (layer-shell)
├── components/
│ ├── CollapsedBar.qml # compact pill: Pomodoro | Clock | Weather
│ ├── DashboardTiler.qml # row-aware flex packer + drag/drop
│ ├── DashboardCard.qml # one plugin card (panel host / view / tile)
│ ├── PanelHost.qml # embeds a real plugin panel's UI in a card
│ ├── SearchLauncher.qml # unified search/launcher
│ ├── ExpandedPanel.qml # header (quick actions | search | shortcuts)
│ ├── AddPluginDialog.qml # scanned-plugin picker
│ ├── WeatherExpanded.qml / PomodoroExpanded.qml / CalendarView.qml / …
│ └── DashboardRegistry.js # id → descriptor (view / launcher / panel)
└── engine/
├── WeatherEngine.qml # shared weather singleton (Open-Meteo)
├── PomodoroEngine.qml # shared focus-timer singleton
└── DashboardConfig.qml # persisted layout + settings (singletons)
Why state lives outside the plugin directory. Layout and settings are
written to ~/.config/omarchy/omadash/ (not inside plugins/djmenig.omadash/). Writing
inside the plugin directory trips Omarchy's plugin watcher, which reloads the
whole plugin and closes any open dashboard on every persist. Keeping state
outside avoids that.
The expanded dashboard will support three pages: a center page (the
current default landing page) plus a left page and a right page. A
dot paginator will sit at the bottom of the expanded dashboard, directly
above the edit button, letting you switch pages at a glance. Each page
keeps its own card layout and arrangement, persisted alongside the current
per-plugin row metadata. Edit mode will operate on the active page, so the
three pages function as independent, rearrangeable corkboards.
- Power-options overlay — consolidate the header's per-action power shortcuts (lock, reboot, shutdown, logout, screensaver) into a single shortcut that opens a full-screen overlay presenting every power option at once (reboot, shutdown, sleep, logout, lock, and more). One trigger, one glanceable menu.
- Tiling system improvements — evolve the row-aware flex packer beyond the
current fixed
row-driven breaks toward a more fluid layout engine. Cards should reflow intelligently as the popup resizes, with content that adapts like a responsive web page: widgets scale, rewrap, and recompose to fill the available space instead of relying on manual row assignments. The goal is flexible card content with dynamic, website-style resizing rather than static, user-placed grids. - Compact-mode slot selection & bar-widget swapping — a per-card, edit-mode affordance to assign which plugin's compact widget occupies each pill slot, so you can, for example, drop the Notification Panel into Slot A in place of Pomodoro. Any added plugin that ships a bar widget becomes a candidate for a slot, with a safeguard that a slot holds exactly one plugin at a time (mutual exclusion). This requires a plugin-side "compact widget" contract before it can be fully generic.
- Curated add-plugin picker — filter the Add plugin selector down to
plugins that expose a live-embeddable
KeyboardPanel(the species OmaDash can actually render inside a card). Everything else, which would only ever be a static launcher tile or show nothing useful when pinned, is noise and will be hidden rather than cluttering the picker. - More card species — additional built-in views and richer live-panel embedding (e.g. scrolling / paged panel content).
- Theming & density controls — card sizing presets and accent behavior.
MIT — see LICENSE.

