Tuck bar widgets away. They come back when something changes.
Omatender is a Bartender-style controller for the Omarchy bar. Pick the widgets you do not need to see all the time; Omatender hides them behind one small mark, keeps them running, slides one out when its status changes, and folds it away again after a few seconds. Hover or click the mark whenever you want to see everything.
- One mark, any number of widgets. Three stacked dots on the bar stand in for everything you tucked away. They turn into a double chevron while the group is open, and hold one color the rest of the time — a reveal announces itself by the widget appearing, not by the mark changing under you. The stack runs across the bar, not along it, so the mark never reads as another widget's row of status dots.
- Widgets reveal themselves when it matters. A tucked widget slides out on its own when its status changes — a new tray icon, a sync that needs attention, a count that moved — and folds back after a delay you choose.
- Drag to manage. Drop any widget on the mark to tuck it away. Reveal it and drag it back beside another widget to let it go; it stays where you dropped it.
- A picker that reads like a map. Right-click the mark to see every bar widget as a tile: filled means tucked, outlined means on the bar, a corner dot means showing right now. Click to move a widget between the two.
- Per-widget behavior. Choose whether each widget comes out by itself or only when asked, and how long it stays.
- Nothing is lost. Omatender remembers where every widget came from and puts it back when you release it or remove the plugin.
- Fully keyboard-driven, animated, and built for both horizontal and vertical bars.
- Omarchy 4 (Quattro) with the standard
omarchy-shellbar. - Nothing else. Omatender is pure QML; it bundles no binaries, installs no packages, and makes no network requests.
omarchy plugin add https://github.com/salemsayed/omatender.git --enable --yesThe mark appears in the right section of the bar. Right-click it to choose what to tuck away.
To place it elsewhere:
omarchy bar move io.github.salemsayed.omatender --after omarchy.audio| Action | Result |
|---|---|
| Hover | Peeks at the widgets grouped beside the mark; stays open while the pointer is on any of them |
| Click | Reveals every tucked widget for the reveal duration |
| Middle-click | Hides everything again |
| Right-click | Opens the picker |
| Drop a widget on it | Tucks that widget away |
Every bar widget is a tile. Click a tile to tuck the widget away or let it go, then press Apply. Tucked tiles are grouped at the front so the set you curated reads as one block; beyond four rows the grid scrolls.
The inspector under the grid describes whatever the pointer is on. For a tucked widget it sets the policy — Auto-reveal or Only when asked — and an optional reveal duration of its own.
Two maintenance buttons sit in the footer:
- Re-learn layout re-reads where every widget currently sits and saves
that as the new baseline. Omatender already picks up changes made through
omarchy bar, Setup, or a plugin install, so this is rarely needed. - Restore & remove puts every tucked widget back where it came from and takes Omatender off the bar. It asks for confirmation first.
- Drag an unmanaged widget onto the mark to tuck it away immediately.
- Reveal a tucked widget and drag it beside any unmanaged widget to release it; it stays exactly where you dropped it.
- A drop inside the group keeps the widget tucked. The mark highlights and shows an insertion line whenever it can accept the drag.
Widgets from the mark's own bar section are grouped immediately beside it. Widgets from another section stay where they are and reveal in place.
From the picker, or under Setup → Bar → Omatender:
| Setting | What it does |
|---|---|
| Reveal on | Hover + click, Hover only, Click only, or Off. Status changes reveal in every mode. |
| Stays visible for | How long a widget stays out after a status change or click, 1–300 seconds. |
| Animations | Fade, scale, reflow, stagger and update pulse. Turn off for reduced motion. |
| Hidden widget ids | The tucked set as comma-separated plugin ids, for scripting. |
| Extra watched properties | Advanced: extra widget.id=property rules for widgets whose status cannot be inferred. |
The same settings work from the command line:
omarchy bar set io.github.salemsayed.omatender hiddenWidgets 'omarchy.bluetooth,omarchy.tailscale'
omarchy bar set io.github.salemsayed.omatender revealSeconds 8 --json- Auto-reveal — the widget comes out by itself when its status changes, and on hover or click.
- Only when asked — it never comes out on its own; hover and click still work. Use this for anything whose display changes on its own, such as a clock or a countdown.
- Duration — press the duration button to use the global default, or minus/plus for a value of its own.
Inside the picker: arrows or h j k l walk the grid (up and down cross
a row), Space tucks or releases, m cycles the policy, + - 0 set its
duration, r toggles the live reveal, Enter applies, Esc steps back out.
Status. Omatender watches the visible state of each tucked widget — text, icons, badges, switches, progress, child count — and treats a change that settles for a moment as a status change. No adapter is needed. For exact control, expose one property on your bar widget:
readonly property var omatenderStatus: ({
connected: service.connected,
attention: service.needsAttention,
unread: service.unreadCount
})When it exists, only changes to omatenderStatus reveal the widget.
Tile mark. Set barWidget.icon in your manifest to a single character or
a codepoint such as "U+F0493" to choose the picker glyph. Without it,
Omatender uses your category's glyph while no other widget on the bar shares
it, and initials otherwise.
- A plugin placed on the bar more than once cannot be tucked away, because the bar identifies widgets by plugin id. The picker marks it unavailable.
- The system tray is one widget. Omatender reveals and hides the tray as a unit and opens its drawer when it reveals it; which icons the tray shows is still the tray's own setting.
- Right after the shell starts or the bar layout changes, widgets get a few seconds to finish loading before their state counts.
- A widget keeps coming out. Its display changes on its own. Set it to Only when asked.
- Widgets are not where they used to be. Open the picker and press Re-learn layout, or release the widget and tuck it again.
- The mark is dimmed. Nothing is tucked away yet. Right-click it.
Open the picker and press Restore & remove — this puts every tucked widget back where it came from and takes the mark off the bar. Then remove the plugin:
omarchy plugin remove io.github.salemsayed.omatender --yesOmatender stores its settings only in the bar's own configuration entry
(~/.config/omarchy/shell.json), which is removed with it. It writes nothing
else.
Clone into ~/.config/omarchy/plugins/io.github.salemsayed.omatender (a copy,
not a symlink), then:
bash tests/check-all.shMIT — see LICENSE.

