Stow is a macOS menu-bar manager for moving selected app icons out of view and bringing them back when needed.
It uses two plain zones:
- On Bar: always visible.
- In Stow: hidden until opened.
The app deliberately fails open. Stow never moves another app's icon and never touches your pointer. If Stow's own control would ever leave the bar, it shows everything instead.
Stow uses the Aurora palette:
#A3E635 -> #14B8A6 -> #4F46E5
The mark shows one app tile moved beneath the menu bar. The full app icon uses Aurora color; the small menu-bar form keeps the same geometry at 18 points.
The behavior-first icon study is available at
docs/stow-name-icon-study.html.
- macOS 14 or later
- Accessibility permission
- A stable signing identity is recommended so Accessibility permission survives reinstallations
Stow uses Accessibility to identify status items and to open a stowed app's menu. It does not require Screen Recording.
Command-Shift-Escape is the global emergency shortcut for Show Everything.
It also cancels pending automatic re-tucks.
./test.sh
./install.shThe installer builds a release app, stamps the version and source metadata,
signs it, transactionally replaces /Applications/Stow.app, launches it, and
checks that it remains running.
Useful diagnostics:
swift run Stow --version
swift run Stow --probeStow uses bundle identifier dev.starkpat.stow and stores configuration at
~/.config/stow/config.json.
On its first launch, Stow imports Airlock's configuration, remembered item positions, and saved seam placement without modifying the Airlock data. Installing Stow stops a running Airlock process so both apps cannot compete for the same menu-bar geometry.
Because the bundle identity changes, macOS requires Accessibility permission to be granted to Stow once.
macOS has no public API for hiding another application's status item, and no public API for moving one. Stow does neither. It owns one narrow status item, the boundary, and widens it to push everything to its left off the bar.
Which icons sit left of the boundary is normally your decision, made once with a real Command-drag in the real menu bar. Arrange can also do that placement for the apps you explicitly select: after a confirmation it synthesizes those Command-drags, temporarily controls the pointer, verifies every result, and restores the pointer. macOS honours either placement and remembers every item's position across restarts. Stow never moves icons while opening, refreshing, hiding, applying profiles, or running rules.
The Arrange window is a live mirror of your bar with the boundary drawn in it, so you can see what is stowed while you drag. It records where you put things and points out drift later: an app that came back to the visible side, or a new app that appeared, becomes a notice with a "Keep on bar" choice rather than something Stow moves for you.
Clicking a stowed app in the panel shrinks the boundary for a few seconds, opens that app's menu where it really is, then widens the boundary again. Profiles are boundary widths: switching one is instant and cannot be refused.
Configuration is schema-versioned. Older vaulted assignments migrate to
tucked, and unknown fields are retained so a newer config is not silently
flattened by an older build.
https://github.com/pstarkgit/Stow