Skip to content

Repository files navigation

PlanovaQuickShell

An Omarchy 4 shell plugin that replaces the date/time bar widget with a Planova-backed panel: the clock label stays (plus a badge counting today's undone todos), and clicking it opens a calendar with per-day indicators, the selected day's events, tasks, and notes, quick add, refill, and a notes browser.

Everything reads and writes Planova's plaintext markdown files directly - <Org>/dailies/YYYYMMDD.md and <Org>/notes/**/*.md - using the same parsing and insertion rules as Planova itself, with atomic writes. Both apps watch the files, so edits made in one show up in the other within seconds.

Install

omarchy plugin add https://your-git-host/PlanovaQuickShell.git
omarchy plugin enable fr.rvier.planova

For development, symlink the checkout instead (note: omarchy plugin add refuses symlinks, but the running shell loads them fine):

ln -s ~/Projects/PlanovaQuickShell ~/.config/omarchy/plugins/fr.rvier.planova
omarchy-shell shell rescanPlugins

The inotify watcher does not follow the symlink, so after editing QML run omarchy-restart-shell to reload (omarchy-shell shell rescanPlugins alone does not reliably refresh already-compiled QML from a symlinked tree).

Then replace the clock in ~/.config/omarchy/shell.json: in bar.layout.center, change the omarchy.clock entry's id to fr.rvier.planova (its format/formatAlt/verticalFormat settings carry over unchanged), and set bar.centerAnchor to fr.rvier.planova. The file hot-reloads on save.

Configuration

The plugin finds the Org root and templates from Planova's own preferences (~/.local/share/fr.rvier.planova/shared_preferences.json), falling back to ~/Org. Inline settings on the widget's shell.json entry override:

settingdefaultmeaning
format, formatAltdddd HH:mm, d MMMM 'W'ww yyyybar label formats (right-click cycles)
verticalFormat, verticalFormatAltas the clockvertical-bar label formats
showTodoBadgetrueundone-todo count badge on the label
storagePathPlanova prefs → ~/OrgOrg root
dailyTemplatePlanova prefs → built-inseed for new daily files
todoHeaderRegex, eventHeaderRegex, logHeaderRegexPlanova prefs → built-inssection header patterns

Use

Bar label: left click opens the panel, right click cycles the label format, middle click opens the timezone picker.

Panel keys - calendar: arrows/hjkl move the selected day (j/k by week), [] month, {} year, t today, Enter/Space focus the task list (then j/k + Space toggles a todo), a add a todo, e add an event, g add a log, r refill, o open the day file in your editor, n notes. Inside the quick-add form, Ctrl+E/Ctrl+T/Ctrl+L switch the entry type without leaving the title field. Notes: j/k move, Enter opens in your editor, / search, o new note, r (or right-click) renames, x deletes. Esc backs out, then closes.

IPC:

omarchy-shell ipc call fr.rvier.planova toggle
omarchy-shell ipc call fr.rvier.planova addTodo "buy milk"
omarchy-shell ipc call fr.rvier.planova addLog "shipped the release"

Development

PlanovaModel.js holds all parsing/insertion logic (ports of Planova's markdown_parser.dart and daily_content_helper.dart) and is Qt-free:

node --test tests/model.test.mjs

The test file includes 1:1 ports of Planova's own parser and content-helper test suites - they are the compatibility contract. If a test needs changing, Planova and this plugin have diverged.

About

An Omarchy 4 shell plugin that replaces the date/time bar widget with a Planova-backed panel: the clock label stays (plus a badge counting today's undone todos), and clicking it opens a calendar with per-day indicators, the selected day's events, tasks, and notes, quick add, refill, and a notes browser.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages