Pigeonv0.1.7service ยท bar-widget
Your ntfy inbox, in the bar.
Pigeon keeps a live subscription open to ntfy.sh or your own server and turns every message into an Omarchy toast and an entry in a themed inbox with topic tabs, search, actions, attachments and a compose box.

Install
omarchy plugin add https://github.com/chr0nzz/omarchy-pigeon.git --enableomarchy bar set xyzlab.pigeon server https://ntfy.example.comomarchy bar set xyzlab.pigeon topics alerts,homeUpdate with omarchy plugin update xyzlab.pigeon, remove with omarchy plugin remove xyzlab.pigeon.
Needs
- Omarchy 4 shell
- curl, jq, wl-copy and python3 with python-gobject for toasts, all shipped with Omarchy
- pw-play or aplay for the optional chime
Then set it up
What to do once it is installed. Anything marked optional can wait.
Authenticate, if your server needs it
optionalLeave it alone for ntfy.sh public topics. A topic with no auth is the public address it is, so treat it that way.
omarchy bar set xyzlab.pigeon auth tokenomarchy bar set xyzlab.pigeon token tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxBind a key
Opens the inbox from anywhere.
In
~/.config/hypr/bindings.luao.bind("SUPER + N", "Pigeon inbox", "omarchy-shell shell toggle xyzlab.pigeon '{}'")Send yourself a test message
It should arrive as an Omarchy toast and land in the inbox.
omarchy-shell pigeon publish alerts "Hello" "Pigeon is working"
In Tokyo Night
Every shot was taken on a real Omarchy desktop with that theme applied. Pick another and they follow.

The inbox, with topic tabs, unread dots and priority labels.
What it does
Always connected
One JSON stream per subscription with automatic reconnect, a keepalive watchdog and catch-up after sleep. Inbox and read state survive shell restarts.
Any server
ntfy.sh or your own instance behind a reverse proxy. Anonymous, access token, or username and password.
Native toasts
Every message becomes an Omarchy toast with its emoji tag and ntfy priority mapped to urgency. Messages that arrive together become one toast, and reading or deleting them dismisses it.
A proper inbox
Topic tabs that wrap onto extra lines, search, unread dots, expand in place, image preview, view and http actions, open link, copy, delete, mark read or unread, mute and reconnect.
Compose
Publish from the panel with a topic picker, title and priority. Your own messages arrive already read and never toast.
Keyboard first
j and k move, h and l switch topics, o opens the link, c composes, / searches. The bar pill follows the theme and works in any section.
Scriptable
Status, publish, mute, clear and reload over omarchy-shell IPC.
Sensible limits
Oversized lines are dropped, image previews stop at 10 MiB, messages for topics you have not configured are ignored, publisher http actions are off until you allow them, and a topic with no auth is treated as the public address it is.
Private by default
Tokens, passwords, topic names and copied text stay off the command line, and the saved inbox and image previews are readable only by you.
Keys
| Keys | Action |
|---|---|
| j / k, arrows | Move the cursor |
| h / l | Switch topic tab |
| Enter, e | Expand or collapse, marks the message read |
| o | Open the message's click link |
| a | Open the attachment |
| 1 2 3 | Run the matching ntfy action |
| y | Copy the message |
| d, x, Delete | Delete the message |
| D | Clear the inbox or the current tab, after asking |
| u | Mark all read in the current tab |
| m | Mute or unmute toasts |
| c | Compose. Enter sends, Esc closes |
| / | Search |
| s | Settings editor |
| r | Reload the backfill window |
| g / G | First and last message |
| Tab / Shift+Tab | Switch to the neighbouring bar panel |
| Esc | Close |
Settings
Change any of these from the bar settings, the plugin's own settings editor, or omarchy bar set xyzlab.pigeon <key> <value>.
| Key | Purpose |
|---|---|
| server | Base URL of the ntfy server |
| topics | Comma separated topic names |
| auth | none, token or basic |
| token | Access token for auth = token |
| username / password | Credentials for auth = basic |
| toasts | Desktop toasts for new messages |
| sound | A short chime with each toast |
| toastMinPriority | Lowest priority that produces a toast, 1 to 5 |
| backfill | History to load for a new topic: all, 12h, 3d or none |
| maxMessages | Messages kept in the inbox |
| allowHttpActions | Let publisher defined http actions run |
| showCount | Unread count next to the glyph |
| showZero | Show the count even when it is zero |
| glyph | Replace the pigeon with your own glyph |