SUMMARY STEPS TO REPRODUCE 1. Enable natural scrolling 2. Go to System Settings > Window Management > Window Behavior > Window Actions > Inner Window, Titlebar and Frame Actions 3. Set mouse wheel action to Maximize/restore OBSERVED RESULT To maximize a window, it’s necessary to hold the modifier key and to rotate the mouse wheel towards myself, and away from myself to restore it. This is counter-intuitive. EXPECTED RESULT The other way round.
> The other way round. But this defeats the purpose of natural scrolling, doesn't it?
No, natural scrolling makes sense for page content (according to the people who use it, at least), but it doesn't make sense in other contexts. For example it doesn't make sense for scrolling *up* over the Audio Volume applet to make the volume go *down* (Bug 442379). There is apparently a property you can use to query whether or not the direction is invert it and ignore the inversion, for precisely this use case.
(In reply to Vlad Zahorodnii from comment #1) > > The other way round. > But this defeats the purpose of natural scrolling, doesn't it? The point of natural scrolling is for objects on the screen to move in the same direction as the user’s finger. In my mind, I’ve always associated maximization with movement towards the top, that’s why the current motion of the mouse wheel seems inconsistent to me. However, on second thought, maximization might be perceived as pulling the window towards yourself in imaginary 3D space, in which case the current motion is just right. It looks like a UI control to specify one or the other mapping between wheel rotation direction and the action triggered should be the way to go and very much in the spirit of KDE.
Git commit 4b1a90b32a0b8a2f054d5c4d6dce52b3176d5d86 by Vlad Zahorodnii, on behalf of David Edmundson. Committed on 29/09/2023 at 12:18. Pushed by vladz into branch 'master'. Implement axis relative direction This is useful for the few cases where wheel events are not for scrolling. For example adjusting the volume in the tray. In this case having the metadata that the delta is backwards is important. From a kwin POV it's just proxying the libinput isNaturalScroll setting to clients. Tested against "qtbase/examples/widgets/widgets/mousebuttons" with modified Qt and changing the setting in the UI. Not mergable until upstream lands. Relevant link: https://gitlab.freedesktop.org/whot/wayland/-/merge_requests/1 / https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/183 M +1 -1 src/backends/libinput/device.h M +5 -0 src/core/inputdevice.cpp M +2 -0 src/core/inputdevice.h M +4 -2 src/input.cpp M +2 -1 src/input_event.cpp M +6 -1 src/wayland/pointer.cpp M +2 -1 src/wayland/pointer.h M +3 -3 src/wayland/seat.cpp M +9 -1 src/wayland/seat.h https://invent.kde.org/plasma/kwin/-/commit/4b1a90b32a0b8a2f054d5c4d6dce52b3176d5d86
(In reply to Roman Odaisky from comment #3) > The point of natural scrolling is for objects on the screen to move in the > same direction as the user’s finger. I 100% agree to this. (In reply to Roman Odaisky from comment #3) > It looks like a UI control to specify one or the other mapping between wheel > rotation direction and the action triggered should be the way to go and very > much in the spirit of KDE. I'd suggest making the primary option only be "invert scrolling" and then re-introduce "natural scrolling" as a sub-setting of that, so the user can choose between inverting all scrolling or only the ones that feel unnatural to most people.
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/9353
Git commit baf4110f8070df018d28e2e5522228d62ce0564e by Vlad Zahorodnii. Committed on 09/06/2026 at 11:07. Pushed by vladz into branch 'master'. Make wheel window actions work as expected with natural scrolling Undo natural scrolling so wheel actions are applied as expected. For example, the window becomes more opaque as you scroll the titlebar up. wheelToMouseCommand() was adjusted so negative deltas (scrolling up) map to the corresponding "up" commands. M +2 -2 src/input.cpp M +5 -5 src/options.cpp https://invent.kde.org/plasma/kwin/-/commit/baf4110f8070df018d28e2e5522228d62ce0564e
Git commit 75fd1ae9ff9b9a9d3dd0ea1d01da7248f543d739 by Vlad Zahorodnii. Committed on 09/06/2026 at 11:27. Pushed by vladz into branch 'Plasma/6.7'. Make wheel window actions work as expected with natural scrolling Undo natural scrolling so wheel actions are applied as expected. For example, the window becomes more opaque as you scroll the titlebar up. wheelToMouseCommand() was adjusted so negative deltas (scrolling up) map to the corresponding "up" commands. (cherry picked from commit baf4110f8070df018d28e2e5522228d62ce0564e) Co-authored-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org> M +2 -2 src/input.cpp M +5 -5 src/options.cpp https://invent.kde.org/plasma/kwin/-/commit/75fd1ae9ff9b9a9d3dd0ea1d01da7248f543d739
Git commit 5dc99a1d917e3b9d1fbd1505f50e9732c568d6b5 by Vlad Zahorodnii. Committed on 09/06/2026 at 11:28. Pushed by vladz into branch 'Plasma/6.6'. Make wheel window actions work as expected with natural scrolling Undo natural scrolling so wheel actions are applied as expected. For example, the window becomes more opaque as you scroll the titlebar up. wheelToMouseCommand() was adjusted so negative deltas (scrolling up) map to the corresponding "up" commands. (cherry picked from commit baf4110f8070df018d28e2e5522228d62ce0564e) Co-authored-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org> M +2 -2 src/input.cpp M +5 -5 src/options.cpp https://invent.kde.org/plasma/kwin/-/commit/5dc99a1d917e3b9d1fbd1505f50e9732c568d6b5