Repository navigation
Description
Distribution
Linux Mint Cinnamon 6.6.9 on X11
Package version
Muffin 6.6.3+zena
Graphics hardware in use
Not graphics-driver-specific; reproduced while moving ordinary application
windows on X11.
Frequency
Always
Problem
Muffin uses the physical Shift modifier as a hard-coded command to enable
legacy window snapping / edge resistance during a window move. This conflicts
with applications and Cinnamon extensions that intentionally use Shift as a
drag modifier. One example is FancyTiles, whose users may choose Shift to
match Windows FancyZones behaviour.
Setting org.cinnamon.muffin edge-tiling to false does not disable this
Shift-controlled behaviour. The interaction therefore remains active at
screen and monitor boundaries even when native edge tiling is disabled.
The behaviour comes from the two update_move() calls in
src/core/window.c, which receive CLUTTER_SHIFT_MASK during move events and
on completing the grab.
Steps to reproduce
- Disable Cinnamon edge tiling:
gsettings set org.cinnamon.muffin edge-tiling false. - Start moving a normal window with the mouse.
- Hold Left Shift while moving the window near screen or monitor edges.
- Observe Muffin's native Shift-driven edge resistance / snap behaviour.
With FancyTiles configured to use Shift, this occurs at the same time as the
extension is trying to display and apply its own zones, so the window movement
is visibly constrained or jumps to a native target.
Expected behaviour
Provide a Muffin preference to disable or rebind Shift-driven legacy snapping.
The existing behavior can remain the default, but users who use Shift for
another drag workflow should be able to opt out without rebuilding Muffin.
Additional information
This is related to, but not solved by, #657 and PR #828: those concern
window-to-window edge resistance only. This request covers the physical Shift
trigger and screen/monitor edge behaviour.
FancyTiles has an independent report of the user-facing conflict:
BasGeertsema/fancytiles#38
I verified a local proof-of-concept which suppresses the Shift flag in both
move paths. It is intentionally not proposed as a global default because that
would remove existing legacy snapping for everyone. The patch and rebuild
notes are available here:
https://github.com/jonarihen/muffin-shift-snap-fix
Activity
jonarihen commentedon Sep 19, 2026
I prepared a small opt-in implementation for discussion:
https://github.com/jonarihen/muffin-shift-snap-fix/tree/proposal/configurable-legacy-window-snap
It adds
org.cinnamon.muffin legacy-window-snap, defaulting totrue, socurrent Shift-based legacy snapping remains unchanged. Setting it to
falsesuppresses Shift-driven snapping only while moving windows; it does not change
resizing or normal edge tiling.
The patch is based on Muffin 6.6.3 and was validated with a full Meson build
(720 targets) and an isolated GSettings schema check (default true, accepts
false, reset restores true). This is a code sketch for review rather than a
request to remove the existing behavior globally; naming or scope can be
adjusted if there is a preferred Muffin convention.
mtwebster commentedon Sep 19, 2026
I wouldn't mind getting rid of this 'feature' entirely - it's unpredictable at best, and most users never find out about it except accidentally.