Bug 497239

Summary: "Reduce Motion" setting
Product: [Applications] systemsettings Reporter: Martin <spleefer90>
Component: kcm_accessibilityAssignee: Plasma Bugs List <plasma-bugs-null>
Status: CONFIRMED ---    
Severity: wishlist CC: duha.bugs, nate
Priority: NOR Keywords: accessibility
Version First Reported In: 6.2.4   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Martin 2024-12-09 14:44:38 UTC
Some applications, as an accessibility feature, implement a setting to reduce/disable non-essential animation motions.
They read this setting from the operating system, or on Linux, the DE.

For example, browsers have a "prefers-reduced-motion" CSS value to enable websites to reduce animations for the users.

For a more specific example, Firefox attempts to read the value from the environment these ways - https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion#user_preferences

In macOS, it reads the "Reduce motion" setting,  in iOS "Accessibility->Motion", in GNOME, it reads from "Reduced animation", ...

Unfortunately, KDE/Plasma does not currently seem to have a setting for this, so on Plasma, Firefox gets it from: 
"System Settings > Workspace Behavior -> General Behavior > Animation speed" 

and checks if the animation slider is set to all the way to right to "Instant", which means it is currently checking whether animations are outright disabled (and it checks for Disabled Animations on Android too, but that's for another tracker).

Sometimes, this motion reduction is conflated with latency, as Firefox is doing there (as it has no choice), but they are different concepts.

Imagine that every time you Minimize an application, your OS plays:
#1 An effect of the application swirling on its own axis
#2 Followed by a vacuum effect of sucking the window into the place of the icon where it can be interacted with again

#1 Is eye candy, it does not provide functionality, but perhaps most users enjoy looking at it, so it is there
#2 Has a function of telling you where you can interact with the application again

Now, as a user, due to perhaps vestibular or distractability issues (or simple preference, from the non-accessibility reasons):
A) Disable all animations, completely removing #1 and #2
B) Reduce/slowdown motion for both effects, slowing down both 1 and 2 visually, potentially relying on a second implementation of the animation, which does not necessarily change animation time
C) Disable animations without a function, swirly #1 goes out, highlighting vacuum #2 stays in

Neither of those three motion options conflicts with reducing animation times for people who need or desire lower latency.

Personally, I prefer to disable unnecessary animations animations, keep the important ones, and at the same time I prefer low latency, so my current setting is about 80% animation speed in Plasma, and Firefox takes it as me not wanting reduced animations, since I did not disable them all.

To re-iterate, Firefox is not the only application that does or could be taking this setting into account, and other KDE components could too, in the future.

Being able to at least *set* this value in Plasma, even if it won't immediately be used for anything and will need integrations from apps, would be a great start.
Comment 1 Nate Graham 2024-12-10 22:52:12 UTC
Sorry, what's the issue here? As you discovered, Firefox triggers its mode when animations are globally disabled. For a person who suffers from issues with animations, why isn't disabling animations entirely in the manner you found the correct solution?
Comment 2 Martin 2024-12-10 22:57:32 UTC
It is a preference for reduced motion, not disabled animations.

Plasma should have an option to set reduced motion preference without forcing animations to be disabled.
Comment 3 Nate Graham 2024-12-10 23:49:21 UTC
What does reduces motion actually mean though? What's the expectation for what that should do? This seems like a very nebulous description.
Comment 4 Martin 2024-12-11 14:32:20 UTC
> This seems like a very nebulous description.

Nothing wrong with making it more friendly and/or more clear!

As my proposal here is to *ONLY* add a toggle for user preference applications to read from - and no rework of any animations is proposed - I simply desire an accessibility toggle - the toggle can simply be called:
"Let applications know you prefer reduced animation motion", 

With a tooltip saying:
"Applications can use this to decide if to reduce animation motion, to help people with sensitivity to moving elements"

> What does reduces motion actually mean though? 

See the linked document above - https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion - which also links to another document within.

They are not exhaustive documents of issues one could suffer from that require special care with animations, but it should give you an idea why it is needed.

If a real example that affects me *personally* will help you any, having a large, zooming/unzooming/rotating image preview is enough to make me want to throw up at times, **even if it is dog slow**. 

Thankfully. it happens rarely to me, but not everyone is as lucky.

>  What's the expectation for what that should do?

If this is asking about how to change existing KDE animations - this is not part of this proposal, nor is KDE bad with animations, they are rather fine in general.
You are still welcome to read some about it in the linked resources, though!

If this is asking about what I desire to resolve in this report - add a toggle to allow applications to take user preference into account.

Hopefully I gave exhaustive enough information this time around.
Comment 5 Nate Graham 2024-12-11 15:56:42 UTC
Thanks, that makes sense now. I think what we have right now is fine. If animations — even slow ones — make you want to throw up, the clear solution is to disable them, which is what we already have the ability to do, and other apps are free to read this setting to turn on their own "reduced motion" setting.

Of course, the fact that apps have to read our KDE-specific setting and GNOME's GNOME-specific setting is not ideal. The solution there is for someone to add an XDG spec for this, and then encourage DEs and apps to support it, or even submit patches for them to do so.

However in the absence of that, I'm afraid what we have will have to suffice.
Comment 6 Martin 2024-12-11 18:29:08 UTC
> the clear solution is to disable them (all)

As repeatedly explained above, disabling all animations is not the same as motion reduction. 

It is just not.

See another example in the form of iOS implementation: 
  "Reduce Motion: When off, more items in the user interface animate, such as the parallax effect of icons."
  https://support.apple.com/en-gb/guide/iphone/iph0b691d3ed/ios

  "Screen transitions and effects use the dissolve effect instead of zoom or slide effects."
  https://support.apple.com/en-us/111781

> I think what we have right now is fine

Reduced motion is an accessibility accommodation that not everyone requires. It should be possible to make applications and websites behave better in regards to motion without having to work-around it by disabling animations completely.

"Sucks to be you, works fine for me as is" is not a valid reason to close such a request.

> the fact that apps have to read our KDE-specific setting and GNOME's GNOME-specific setting is not ideal

I am not asking for something that requires adding an XDG spec, I am not asking for some new concept, I am asking for an accessibility toggle that every operating system has, and every system (sans Android, for now) uses such the toggle exactly as I am describing, not only a "disable everything or bust" approach.

It is available everywhere, it just sucks on Plasma, as animations have to be force-disabled to use it.

Closing an accessibility request as "works for me" feels done in bad taste at best, and I would appreciate if someone else had a look at this ticket before relegating it as WORKSFORME/NEEDSINFO again.
Comment 7 Nate Graham 2024-12-11 18:34:03 UTC
As I understand it, you're asking for two things:
1. A standard "reduce motion" setting that apps can look at
2. ...which also, when used, makes animations throughout KDE software that use motion instead cross-fade or fade out

Is that right?
Comment 8 Martin 2024-12-11 18:41:44 UTC
Just the "reduce motion" toggle.

The cross-fade was just an example of what the an application may do with the setting.

Thanks.
Comment 9 Nate Graham 2024-12-11 20:12:48 UTC
The challenge is that if we create this, every app in the universe will have to begin the process of porting to respect it. Apps often don't want to do this unless the setting is governed by some kind of cross-desktop spec to prevent it from changing — which is precisely what you're proposing. :) Firefox found an existing setting to key off of, and if we add a new one, they'll have to start using that one. This is why I was saying it would probably be best if we get an XDG spec to govern it.