Show hidden items in a separate bar#358
Open
coygeek wants to merge 7 commits into
Open
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements #357 by adding an opt-in
Show hidden items in separate barpreference.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
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.