Repository navigation
Conversation
The title bar and the app's own top bar become one 40 pt strip: the window controls, the real app icon and wordmark, then the trail and the view settings. The four-square logo is gone. macOS keeps its stoplights, in a transparent titlebar, centred in the strip. Windows paints its caption buttons on the right and hit-tests them as the system's own, so snap layouts still work. On Linux the compositor keeps drawing the frame where it offers one (Hyprland, KDE); where it asks the client to (GNOME on Wayland), the strip draws close, minimize and maximize on the side the desktop's button layout says, and the window gets a resize ring and a border until it is tiled. The treemap still owns the keyboard from the first frame; the minimum size and the Wayland app_id are unchanged.
Under a floating GNOME frame the content sits inside the resize ring and border, so the cursor tooltip and the panel's resize handle, which work in window coordinates, landed 11 px off the pointer. The frame now says how far the content is inset and both take it off. The brand's drag area takes the band's full height and the padding beside it, and the space between the trail and the settings is one drag area instead of a spacer with gaps, so nothing in the strip looks like title bar without moving the window. A press that leaves the strip before its first motion no longer stays armed for a later drag across it, and a compositor that takes the frame back gets the whole surface again.
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.
Moves disktree to custom window chrome: the title bar and the app's top bar become one 40 pt strip holding the window controls, the real app icon (
assets/disktree.svg) and wordmark, the trail and the view settings. The four-square logo is gone.GNOME (Ubuntu, in a VM)
GNOME asks the client to draw the frame, so the strip draws the buttons on the side GNOME's button layout puts them (right, by Ubuntu's default).
Windows 11
Caption buttons on the right at the system's 46 px width, with the hover fill on minimize; the light theme, and the window's own rounded corners and shadow from Windows.
Per platform
app_owns_titlebar_drag), and a double-click does whatever the system's titlebar setting says. In full screen the stoplight gap closes.Which side the controls go on is decided in one place,
chrome::Frame::new.Kept as they were: the treemap owns the keyboard from the first frame, the minimum window size, and the Wayland
app_iddisktree. The window title is still set; the Window menu and window switchers read it.The wordmark folds to just the icon below 70 rem on the explore screen, so the trail keeps its room. On review and the other screens, the strip carries only the brand and a drag area, because those screens have their own header.
Tests
cargo xtask lintandcargo xtask testare green.chrome.rsunit tests: what each platform and decoration mode puts at each end.Not run
start_window_moveunimplemented. On macOS the strip was checked by eye in a release build; dragging, double-clicking and the Windows and GNOME buttons were not exercised by hand.