Repository navigation
Conversation
Totopo27
force-pushed
the
fix/linux-auto-close-and-close-button
branch
from
October 4, 2026 16:40
17e9fd5 to
f99717f
Compare
Owner
|
Thank you! Auto-close on Linux is now handled on main by #160 (a pointer watch that only runs while the island is shown), extended to regular windows on GNOME/X11 (#307). The ✕ button isn't merged: it changes the shipped header, which the repo keeps as is. It will ship with the next Linux release. Generated by Claude Code |
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.
Summary
Fixes the issue where the island never auto-closes on Linux (KDE Plasma / GNOME) and provides a manual close button on the header as a reliable fallback.
Closes #136
Motivation & Root Cause
CURSOR_POLLis disabled (false) and window input shapes are applied directly viaplatform::set_input_regionto match the island shape. Moving the cursor off the island moves it outside the window's input shape, so WebKitGTK / GDK stops receiving mouse events.window.addEventListener("mouseout")withe.relatedTarget == nullfails to fire under Wayland/X11 compositors when leaving the input region, leavingthis.wasInIsland = truepermanently.expand()resetthis.homeCollapseAt = null, meaning the visual countdown never started unless the pointer first entered and exited the island.updateCountdown(), whenremaining <= 0, it only zeroed the progress bar width without callingthis.collapse().this.framewould stop if no other animation was active (busy = false), haltingupdateCountdownentirely.Key Changes
windows/src/island/island.ts:followPageCursor(), listen todocument.mouseleave,window.blur, andthis.islandEl.mouseleaveto reliably deliver(-10000, -10000)when the cursor leaves the island or window focus shifts.expand()andalert(), schedulethis.homeCollapseAtwhenever opened while!this.wasInIsland && !State.isPinned.updateCountdown(), callthis.collapse()whenremaining <= 0.busy = truewhilehomeCollapseAt != nullso the countdown bar smoothly renders down to 0 and collapses.windows/src/views/views.ts&windows/src/style.css:Close (Esc)button (ICONS.xmark) to.header-actionsso users can instantly dismiss the island if needed.Verification
npx tsc --noEmitclean.npm run buildcompleted cleanly.