GNOME Shell crashes when a resize edge is touched with a finger #7
Labels
No labels
bug
duplicate
feature request
linux
macos
needsinfo
severity: high
severity: low
severity: medium
telegram_gw
ui/ux
windows
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
another-im/anotherim-js#7
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
On Linux under GNOME (Wayland, mutter 50.2), touching the window's resize edges with a finger can crash GNOME Shell, which ends the whole session. It happened four times on 2026-10-13 on a touchscreen laptop, always at the same address.
What happens
With the client-side title bar, the invisible resize edges (
aim-window-frame,ui/src/views/window-controls.ts) callstartResizeDraggingonmousedown. WebKitGTK sends amousedownfor a touch too, so a finger on an edge makes Tauri/GTK sendxdg_toplevel.resizewith the touch's serial. If mutter has already cancelled that touch, it dereferences NULL:meta_wayland_touch_cancel()clearsfocus_surfaceon every active touch but keeps each touch's serial until the finger lifts, andtouch_can_grab_surface()readstouch_info->focus_surface->surfacewithout a check. This is a mutter bug (any client can trigger it; muttermainstill has the same code), but our resize edges are what set it off here.Fix on our side
Have the edges react to
pointerdownand skippointerType === 'touch': a 6px edge is no target for a finger anyway, and mouse resizing stays as it is. A local change does this, with a case inui/test/window-frame.test.ts(41/41 pass,tscclean):Moving the window by dragging the title bar with a finger (
ui/src/views/window-drag.ts,startDragging→xdg_toplevel.move) goes through the same unchecked mutter code. It was not seen to crash and is worth keeping, but it may need the same guard if it does.Upstream
The mutter fix is a NULL check in
touch_can_grab_surface(); it is to be sent to GNOME/mutter. Until then, NixOS users can carry it as a patch onmutter.