Skip to content

feat: add native titlebar option#300

Closed
mastern2k3 wants to merge 1 commit intoRunMaestro:mainfrom
mastern2k3:f/native-titlebar
Closed

feat: add native titlebar option#300
mastern2k3 wants to merge 1 commit intoRunMaestro:mainfrom
mastern2k3:f/native-titlebar

Conversation

@mastern2k3
Copy link

Adds a toggle in Settings > General to switch from Maestro's custom title bar to the OS native title bar. Useful for tiling window manager users where the custom title bar is wasted vertical space. Requires restart to take effect.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@pedramamini
Copy link
Collaborator

Thank you for this contribution. We're deep in the throws of getting 0.15.0 out the door and then implementing a short code freeze to complete some refactoring, but then will swing over to playing with this. You're not the first to bring up the desire but you're the first to submit a PR! 🙏

@pedramamini pedramamini self-assigned this Feb 5, 2026
@pedramamini pedramamini added the blocking Can't move forward due to some hurdle. label Feb 5, 2026
@pedramamini
Copy link
Collaborator

@mastern2k3 finally getting around to this. can you rebase and if convenient drop a screenshot?

@pedramamini
Copy link
Collaborator

@greptile review
@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Feb 19, 2026

@pedramamini: I'll review the changes in this PR now.

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai
Copy link

coderabbitai bot commented Feb 19, 2026

Warning

Rate limit exceeded

@pedramamini has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 0 minutes and 16 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps
Copy link

greptile-apps bot commented Feb 19, 2026

Greptile Summary

Added a toggle in Settings > General to switch between Maestro's custom title bar and the OS native title bar, requiring a restart to take effect. This is useful for tiling window manager users where the custom title bar wastes vertical space.

Key changes:

  • Added useNativeTitleBar boolean setting (default: false) throughout the settings system
  • Conditionally applies titleBarStyle: 'hiddenInset' in window manager based on setting
  • Hides custom title bar UI and removes top padding when native title bar is enabled
  • Updated tests to include new setting in expectations

Note: The titleBarStyle: 'hiddenInset' option is macOS-specific - Windows and Linux always show native title bars by default, so this setting primarily benefits macOS users with tiling window managers.

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • Clean implementation following established patterns. All changes are additive, non-breaking, with proper defaults. Tests updated correctly. The feature is well-scoped and the restart requirement is clearly communicated.
  • No files require special attention - implementation is straightforward and follows existing conventions

Important Files Changed

Filename Overview
src/main/app-lifecycle/window-manager.ts Conditionally applies titleBarStyle: 'hiddenInset' based on setting - implementation is clean but may have platform-specific behavior differences
src/renderer/App.tsx Conditionally hides custom title bar UI and adjusts padding when native title bar is enabled - correctly updates both layout and visibility
src/renderer/components/SettingsModal.tsx Added toggle control for native title bar setting with restart notice - UI follows existing pattern with proper accessibility attributes

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[User toggles setting in SettingsModal] --> B[useSettings hook persists to electron-store]
    B --> C[Setting requires restart]
    C --> D[App restarts]
    D --> E[main/index.ts reads early settings via getEarlySettings]
    E --> F[useNativeTitleBar passed to window manager]
    F --> G{useNativeTitleBar?}
    G -->|false| H[Apply titleBarStyle: hiddenInset on macOS]
    G -->|true| I[Use OS native title bar]
    H --> J[Renderer shows custom title bar with pt-10]
    I --> K[Renderer hides custom title bar with pt-0]
    J --> L[Custom draggable title bar visible]
    K --> M[OS native title bar controls]
Loading

Last reviewed commit: b18ff3d

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

7 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

minHeight: 600,
backgroundColor: '#0b0b0d',
titleBarStyle: 'hiddenInset',
...(useNativeTitleBar ? {} : { titleBarStyle: 'hiddenInset' as const }),
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

titleBarStyle: 'hiddenInset' is macOS-specific and ignored on Windows/Linux where native title bar is always shown regardless of this setting. Consider documenting this platform-specific behavior in the settings UI description.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

pedramamini added a commit that referenced this pull request Feb 19, 2026
Add native title bar and auto-hide menu bar toggles under Settings >
Display > Window Chrome (implements PR #300 and #293 as proper
settings). Both are read as early settings before window creation
and conditionally applied to BrowserWindow options.

Extract buildUnifiedTabs and ensureInUnifiedTabOrder into tabHelpers
as shared utilities, replacing duplicate implementations in
useTabHandlers and tabStore. Fix orphaned tab repair in
reopenUnifiedClosedTab and include file tabs in session restoration
fallback for unifiedTabOrder.
@pedramamini
Copy link
Collaborator

Closing this PR but the code is making it in! Credit will still apply. I simply merged it into a "polish" branch first so that I could unify the experience:

#418

image

@mastern2k3
Copy link
Author

hey @pedramamini , sorry for the late response, glad to hear it made it in. Is there anything else you need me to do?
The bot said something about titleBarStyle: 'hiddenInset' being macOS-specific.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocking Can't move forward due to some hurdle.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments