Skip to content

Dim unfocused split panes#253

Merged
onevcat merged 1 commit intomainfrom
feature/dim-unfocused-splits
May 4, 2026
Merged

Dim unfocused split panes#253
onevcat merged 1 commit intomainfrom
feature/dim-unfocused-splits

Conversation

@onevcat
Copy link
Copy Markdown
Owner

@onevcat onevcat commented May 4, 2026

Summary

  • Adds a Ghostty-style dim overlay on inactive split panes so the active surface stands out at a glance. The mechanism mirrors unfocused-split-fill/unfocused-split-opacity from Ghostty.app: a translucent black tint laid on top of the terminal view (kept below progress/search/drag-handle overlays so those stay legible).
  • Tint strength adapts to color scheme — 0.30 in dark mode, 0.12 in light mode — to avoid washing light-theme panes in grey while still giving dark mode the same depth as Ghostty's default.
  • New Settings → Appearance → Splits → "Dim unfocused split panes" toggle, defaulting to on. Existing users who prefer the all-bright look can disable it; the value persists through GlobalSettings like every other appearance preference.
  • Softens the split divider from .secondary to NSColor.separatorColor so the seam between panes feels neutral instead of busy alongside the new dim treatment.
  • Wires focusedSurfaceID through TerminalSplitTreeView / SubtreeView / LeafView (and TerminalSplitTreeAXContainer), with all three call sites — WorktreeTerminalTabsView, ShelfOpenBookView, CanvasCardView/CanvasView — passing state.focusedSurfaceId(in:).

Test plan

  • make check
  • make build-app
  • Open a worktree, create a horizontal split, then a vertical one — confirm only the focused pane stays bright; click between panes to verify the active one swaps cleanly with a short fade.
  • Toggle Settings → Appearance → Splits → "Dim unfocused split panes" off, confirm all panes render at full brightness; toggle back on, confirm dim returns.
  • Switch the app between light and dark appearance and confirm the dim tint reads as faded (not washed grey) in both.
  • Switch to Canvas mode with multiple cards, each containing splits, and confirm dim reflects the focused surface inside each card regardless of which card is selected.
  • In a single-pane (no-split) terminal, confirm no dim is applied even when the window is unfocused.
  • Verify the split divider line reads as a subtle separator in both light and dark modes.

Adds a Ghostty-style dim overlay on inactive split panes so the focused
one stands out, with a Settings toggle (Appearance > Splits) defaulting
to on. Light mode uses a lighter tint than dark to avoid washing the
pane in grey, and the split divider switches to NSColor.separatorColor
for a more neutral look.
@onevcat onevcat merged commit 5914aa9 into main May 4, 2026
1 check passed
@onevcat onevcat deleted the feature/dim-unfocused-splits branch May 4, 2026 11:36
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