Skip to content

Show hidden items in a separate bar#358

Open
coygeek wants to merge 7 commits into
dwarvesf:developfrom
coygeek:feature/separate-hidden-items-bar
Open

Show hidden items in a separate bar#358
coygeek wants to merge 7 commits into
dwarvesf:developfrom
coygeek:feature/separate-hidden-items-bar

Conversation

@coygeek
Copy link
Copy Markdown

@coygeek coygeek commented May 31, 2026

Summary

Implements #357 by adding an opt-in Show hidden items in separate bar preference.

When enabled, Hidden Bar keeps the main menu bar collapsed and shows captured hidden menu bar items in a separate panel below the menu bar on the current display. This gives hidden items their own row instead of relying on the system menu bar having enough horizontal space.

What changed

  • Added a preference to use a separate hidden-items bar.
  • Captures hidden menu bar items and renders them in a dedicated below-menu-bar panel.
  • Preserves the existing inline expand/collapse behavior when the preference is disabled.
  • Falls back to inline expansion if Screen Recording permission is unavailable.
  • Forwards clicks from the separate bar back to the original menu bar item when Accessibility permission is available.
  • Keeps the normal macOS Cmd-drag configuration workflow working while the separate-bar preference is enabled.

Notes

This is a clean-room AppKit implementation. Thaw/Ice were used only as user-facing behavior references; no GPL source was copied.

The new mode may require Screen Recording permission for capture and Accessibility permission for click forwarding.

coygeek added 7 commits May 31, 2026 00:01
Add an opt-in preferences setting that displays hidden menu bar items in a dedicated panel below the menu bar. The implementation captures individual menu bar item windows, collapses the inline section again, masks the capture flash, and forwards clicks back to the source item when Accessibility permission is available.

Document the Screen Recording and Accessibility permission requirements while preserving the existing inline behavior by default.
When the separator is command-dragged into an invalid position, the separate-bar path could return while the separator was still using the collapsed spacer length. Restore the inline menu bar instead so the separator reappears and the user can recover the layout.
Reject separate-bar captures when the separator is not on the active menu bar row, and fall back to inline expansion instead of cloning visible items near the arrow.

Keep auto-collapse active for a visible separate panel and force the inline fallback through the normal expansion side effects for full-status mode.
Keep the separate-bar marker anchored to the captured separator location after the real menu bar is collapsed. Mask any captured hidden item that macOS still leaves visible in the menu bar so it stays in the detached panel instead of appearing twice.

Refresh status-item geometry from the live status item before falling back to cached click data, preventing hotkey opens from using stale menu-bar positions.

Refs: dwarvesf#357
Sample captured hidden item luminance before drawing the separate bar so light captured glyphs use a dark floating panel even when macOS appearance alone would choose a light background.
Let the capture shield settle before revealing hidden menu bar items for capture, and size it from the collapsed separator geometry so the full hidden section is covered instead of a fixed-width slice.
Temporarily restore the real separator width while the user Cmd-drags menu bar items so macOS still has a usable drop boundary when the separate hidden-items bar preference is enabled.

Force the temporary drag state back to the collapsed width after mouse-up to avoid stretched separator menus or invalid status item ordering.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant