发布

  • feat(linux): hybrid titlebar mode for clickable in-app topbar (#538)

    frostbyte_neo 发布于 2026-05-01 06:47:16 +00:00

    • feat(linux): hybrid titlebar mode for clickable in-app topbar

    Default CLAUDE_TITLEBAR_STYLE is now hybrid: native OS frame
    plus a BrowserView preload shim that convinces claude.ai's bundle
    to render its in-app topbar (hamburger / sidebar / search / nav /
    Cowork ghost). Stacked layout instead of Windows's combined bar,
    but every button is clickable.

    Why not the upstream frame:false + WCO config: investigation
    (see docs/learnings/linux-topbar-shim.md) ruled out
    titleBarOverlay, titleBarStyle:'hidden', and the .draggable
    CSS class as the source of the topbar click-eating drag region.
    The remaining cause is a Chromium-level implicit drag region for
    frame:false windows that exists on both X11 and Wayland and has
    no Electron-API knob. With frame:true the OS handles dragging
    and Chromium pushes no drag-region map, so the buttons receive
    mouse events normally.

    Modes:

    • hybrid (default) — system frame + shim, topbar visible and
      clickable
    • native — system frame, no shim, no in-app topbar
    • hidden — frameless + WCO config, matches Windows/macOS
      upstream; topbar visible but not clickable on Linux. Kept for
      Wayland comparison and future investigation

    Tests: tests/launcher-common.bats grew 16 cases covering
    _resolve_titlebar_style, build_electron_args flag selection
    per mode, and setup_electron_env env-var wiring per mode.
    claude-desktop --doctor now reports the resolved mode and
    warns when hidden is set.

    Co-Authored-By: Claude claude@anthropic.com

    • docs(learnings): add hybrid-mode screenshot

    Visual reference of the stacked layout: DE-drawn titlebar on top
    with native window controls, claude.ai's in-app topbar
    (hamburger / search / back-forward) immediately below it.

    Co-Authored-By: Claude claude@anthropic.com

    • docs(learnings): fix codespell hit (Pre-emptive → Preemptive)

    Codespell flags hyphenated "Pre-emptive" as a misspelling of
    "Preemptive". Drops the hyphen to clear the spellcheck CI gate
    on PR #538.

    Co-Authored-By: Claude claude@anthropic.com


    Co-authored-by: Claude claude@anthropic.com

    下载附件