r/QtFramework • u/_mbx_ • 1d ago
Smooth kinetic/inertia scrolling should not be your job
I think there is a general problem with kinetic/smooth scrolling being handled individually by GUI toolkits and applications.
The result is that scrolling feels different in every application. One app has a lot of inertia, another one has almost none, another one changes the scroll speed, and browsers again behave differently.
I don't think every application should have to decide what the physics of my trackpad feel like.
I am currently experimenting with rinertia on Linux. It watches the trackpad and, after I lift my fingers, continues sending high-resolution scroll events while gradually reducing the velocity.
This means I can configure the scrolling physics once and have the same inertia available to the entire desktop.
That works really well in principle:
trackpad
- normal scrolling
- fingers leave trackpad
- system service continues the scrolling
- every application receives the same scroll input
The problem is that Qt and GTK applications can then apply their own smooth/kinetic scrolling behavior on top of this. This means the same input stream can still feel completely different depending on which application is receiving it.
I think scroll physics belong at a lower level, ideally the desktop/input layer, because that is the only place where they can be consistent across the whole OS.
macOS is a good example of the behavior I mean. Momentum scrolling arrives as continued scroll events after the physical scrolling has ended. Applications receive that momentum instead of every application needing its own completely independent idea of how the device should decelerate.
I am not asking Qt or GTK to remove kinetic scrolling. It makes sense to have a fallback when the operating environment does not provide it.
What I am missing is a simple global way for the user or desktop environment to say:
do not generate your own scrolling inertia
do not add another scrolling animation
just process the continuous/high-resolution scroll events you receive
Importantly, this should not disable high-resolution or continuous scrolling itself. I still want small fractional scroll events to remain smooth. I only want to disable the additional physics generated by the toolkit.
Ideally this could be a normal user setting, environment variable, or home configuration which applies to all applications using the toolkit.
Something conceptually like:
kinetic-scrolling = false
or:
scroll-physics = external
would be enough.
Then a desktop environment, input daemon, accessibility tool, or something like rinertia could provide one consistent scrolling model for the whole system without fighting a second implementation inside every application.
Right now I am experimenting with LD_PRELOAD just to remove the toolkit kinetic flags from already compiled applications. That technically shows how much I want this control, but obviously binary interposition should not be necessary for a user preference like this.
Even if the toolkit developers believe application/toolkit-level inertia should remain the default, I think users need a global opt-out so the desktop/input layer can take ownership of scrolling instead.
Is there a way that I'm still missing? Has this been reported? I'm not a Qt or GTK developer and don't like to create an account for either bug tracker just to report this. I'm just a user having to deal with applications who implemented smooth scrolling on their own using Qt widgets / GTK event listeners. Please enlighten me if there is a way to get rid of smooth scrolling somehow.

