xyzlabplugins for Omarchy

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.

Pigeon: The inbox, with topic tabs, unread dots and priority labels.

Install

omarchy plugin add https://github.com/chr0nzz/omarchy-pigeon.git --enable
omarchy bar set xyzlab.pigeon server https://ntfy.example.com
omarchy bar set xyzlab.pigeon topics alerts,home

Update 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.

  1. Authenticate, if your server needs it

    optional

    Leave 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 token
    omarchy bar set xyzlab.pigeon token tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  2. Bind a key

    Opens the inbox from anywhere.

    In ~/.config/hypr/bindings.lua

    o.bind("SUPER + N", "Pigeon inbox", "omarchy-shell shell toggle xyzlab.pigeon '{}'")
  3. 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.

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

KeysAction
j / k, arrowsMove the cursor
h / lSwitch topic tab
Enter, eExpand or collapse, marks the message read
oOpen the message's click link
aOpen the attachment
1 2 3Run the matching ntfy action
yCopy the message
d, x, DeleteDelete the message
DClear the inbox or the current tab, after asking
uMark all read in the current tab
mMute or unmute toasts
cCompose. Enter sends, Esc closes
/Search
sSettings editor
rReload the backfill window
g / GFirst and last message
Tab / Shift+TabSwitch to the neighbouring bar panel
EscClose

Settings

Change any of these from the bar settings, the plugin's own settings editor, or omarchy bar set xyzlab.pigeon <key> <value>.

KeyPurpose
serverBase URL of the ntfy server
topicsComma separated topic names
authnone, token or basic
tokenAccess token for auth = token
username / passwordCredentials for auth = basic
toastsDesktop toasts for new messages
soundA short chime with each toast
toastMinPriorityLowest priority that produces a toast, 1 to 5
backfillHistory to load for a new topic: all, 12h, 3d or none
maxMessagesMessages kept in the inbox
allowHttpActionsLet publisher defined http actions run
showCountUnread count next to the glyph
showZeroShow the count even when it is zero
glyphReplace the pigeon with your own glyph