feat(desktop): add Linux native window frames - #5398
Open
Act0r1 wants to merge 1 commit into
Open
Conversation
Contributor
ApprovabilityVerdict: Needs human review This PR introduces a new user-facing feature (Linux native window frame setting) with new UI components, IPC channels, and window rendering logic. New features introducing user-facing behavior warrant human review regardless of how well-scoped they are. You can customize Macroscope's approvability policy. Learn more. |
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.
What Changed
Adds a Linux-only Use native window frame switch under Settings → Appearance. The preference is stored in desktop settings and selects the native
BrowserWindowframe on the next full launch; Windows and macOS keep their existing title bar behavior.The IPC bridge reports the setting as unsupported outside Linux, and the user documentation explains the restart requirement.
Why
T3 Code always used its custom Electron window-controls overlay. Linux users running compositors such as Hyprland had no way to hand window decorations back to the window manager, unlike apps that expose a native-frame option.
UI Changes
Verification
pnpm exec vp test run apps/desktop/src/settings/DesktopAppSettings.test.ts apps/desktop/src/window/DesktopWindow.test.ts apps/desktop/src/ipc/methods/window.test.ts— 47 tests passedChecklist
Implemented with GPT-5 Codex in the Codex harness.
Note
Low Risk
Scoped to Linux window chrome and desktop settings persistence; non-Linux platforms are unchanged and coverage is added for IPC, settings, and title-bar resolution.
Overview
Linux desktop users can turn on Use native window frame in Settings → Appearance. The choice is stored as
linuxNativeWindowFramein desktop settings (default off) and exposed through new IPC/preload bridge methods that return null / no-op on Windows and macOS.On the next launch,
DesktopWindowapplies the preference viaresolveWindowTitleBarOptions: enabled on Linux usesframe: true; otherwise behavior is unchanged (hidden title bar / overlay on Linux and Windows, hidden inset on macOS). Theme sync skipssetTitleBarOverlayfor windows without an overlay.The contracts
DesktopBridgetype and install docs describe the Linux-only option and restart requirement.Reviewed by Cursor Bugbot for commit 97d20dc. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add Linux native window frame setting to the Appearance panel
linuxNativeWindowFrameboolean toDesktopAppSettings, persisted to disk and defaulting tofalse.getLinuxNativeWindowFrameandsetLinuxNativeWindowFrameIPC handlers inwindow.ts; both returnnull/falseon non-Linux platforms.resolveWindowTitleBarOptionsinDesktopWindow.tsuses the persisted preference at window creation to choose between native frame ({ frame: true }) and the existing title bar overlay.LinuxNativeWindowFrameSettingtoggle is added to the Appearance settings panel inSettingsPanels.tsx; it is hidden on Windows and macOS.syncWindowAppearance) now skipssetTitleBarOverlayfor windows created with a native frame; the setting takes effect only after a full restart.Macroscope summarized 97d20dc.