Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft: Colour filter hint in Settings Portal #1177

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

dominichayesferen
Copy link
Contributor

@dominichayesferen dominichayesferen commented Oct 28, 2023

Unlike the high contrast one, this one is a draft because I know Desktop Environments like GNOME don't yet have a concrete idea about the design they would prefer for this, the colour blindness filters they want to expose, etc.

As such, I expect this MR to thoroughly change before it exits Draft status, and for it to take forever to even exit Draft status.

Fixes #647, #1151

Introduction

Colour blindness is a prevalent problem, and Operating Systems in the XDG-compliant space are starting to realise this and accommodate to those suffering from such issues with their sight. So far, elementary OS and KDE Plasma have implemented colour filters for the colour blind users, by means of compositor shaders. However, this implementation has a design limitation that this pull request sets sight on allowing a fix to be made for.

Details

A new key on the settings portal, color-filter, would be introduced into the org.freedesktop.appearance namescape. This key currently consists of all colour blindness filters implemented by elementary OS, as well as accommodating for greyscale, however more filters could be added at a later date to this pool of values.

As aforementioned, this is largely inspired by elementary OS's implementation of their colour shaders, although this design may always be changed to accommodate for the requests of other Desktop Environments.

This hint is designed with being paired with colour shaders in mind - applications should only use this hint to adjust their user interface for the current filter.

Additionally, greyscale is made available here to allow implementations of greyscale shaders, such as elementary OS's, to be officially recognised as shaders that applications should account for.

Brown Monotone was originally considered as a shader, here, however this is easily supplemented by allowing greyscale to be redshifted.

Cases for colour filter hints for applications

Libadwaita

Libadwaita has a high reliance on colours to denote certain types of buttons, however if colour blindness filters are not accounted for, on certain colour blindness filters the denotation can end up being too similar to be uniquely identifiable.

image

This would obviously especially be the case on greyscale filters, where colours are just not usable for denotation, period.

image

If Libadwaita applications were able to know a colour filter is in use, they could then adjust themselves accordingly to better take advantage of the limited, or non-existent, colour pool.

Games, such as Geometry Dash

While not native so not able to yet leverage this standard if merged, I'd still like to use Geometry Dash to illustrate a gaming context for why applications would want to know about the current colour filter.

Before 2.2, one of the biggest aspects of Geometry Dash's gameplay, the portals and orbs, were similarly denoted by colours only. However, after concerns for colourblind players, the upcoming 2.2 update adds the option for colourblind players to add symbols to portals and orbs to allow denotion without colours (this would obviously be useful on greyscale filters, too).

image

If games are able to know which colour filter is in use, such as via this hint, they could technically automatically enable such optimisations, in their gameplay, for audiences using these colour filters.

Acks

This may be a draft currently, but to save George the effort, using the acks list from #815

@dominichayesferen
Copy link
Contributor Author

dominichayesferen commented Oct 28, 2023

Side-note: For Libadwaita + greyscale, I have a few design ideas that I'll share in the coming days when I have time to design them.

@danirabbit
Copy link

danirabbit commented Oct 28, 2023

In my research here what I heard was the folks probably want this to be a separate setting and not tied into whether they use assistive filters. Especially in collaborative or support environments this can make things actually worse because what they see on screen is not what everyone else is seeing.

For example a person with protanopia may have a concept of what they consider to be green and what they consider to be red and if they're using an assistive filter they may be able to communicate with team mates with some degree of accuracy that "this is a red button" even if they're not seeing exactly what someone else is. But if their interface is changed completely they won't be able to have that common communication with others.

I'm not sure about other platforms but iOS has a separate "different without color" binary setting that is completely independent from color assistance filters

@dominichayesferen
Copy link
Contributor Author

dominichayesferen commented Oct 28, 2023

I mean, my idea for application implementation was more-so to add subtle changes to accomodate for the shaders, such as destructive action maybe getting a subtle texture up top, akin to the unstable application header texture, in Libadwaita and/or added fallback icon for additional denotation, but yeah fair point.

@danirabbit
Copy link

I think generally we should be pushing the defaults to not rely solely on color to communicate information. If something like adding an icon or a texture is beneficial to folks with color deficiency maybe we should just do that for everyone all the time?

@dominichayesferen
Copy link
Contributor Author

I mean, yes, but there again there might be edge-cases, such as the aforementioned games context, that may still provide merit for providing a hint irregardless.

It all comes down to implementation on the application's side, at the end of the day, and I really don't see 100% of applications willing to accommodate deciding to accommodate anyway without knowing a colour filter is in use.

@swick
Copy link
Contributor

swick commented Oct 28, 2023

-1 for exposing color filter settings to clients
+1 for exposing color vision deficiency to clients

  • Apps should always be usable without any color information
  • Using color can increase the usability of apps
  • Apps should always chose their colors in a way that they work with various color vision deficiencies
  • Knowing about the color vision deficiency of a user increases the amount of different colors one can chose without impacting usability
  • The color vision deficiency filters are a fallback to be used when the apps fail accommodating to the users color vision deficiency

@danirabbit
Copy link

such as the aforementioned games context, that may still provide merit for providing a hint irregardless.

Right so this is exactly the kind of potentially collaborative case where the folks I spoke said they explicitly didn't use options that were designed as color assistance because it made their experience worse. Opting someone into a different interface just because they're using an assistive tool is not what they're expecting. So a hint here should be explicit about its purpose both so it feels deterministic for the people using it and so that app developers know exactly what it should do

@danirabbit
Copy link

The color vision deficiency filters are a fallback to be used when the apps fail accommodating to the users color vision deficiency

From what I've heard, I think it's more the other way around. Folks with color vision disabilities seem to largely be more interested in assistance that meets them at the severity of their disability and not like immediately jumping to segregated experiences unless their disability absolutely requires it to function

@GeorgesStavracas
Copy link
Member

GeorgesStavracas commented Oct 28, 2023

I think this needs a lot of discussion and it's not entirely clear to me how desktops should handle it, so I'm not assigning any particular milestone for this.

@dominichayesferen
Copy link
Contributor Author

Just want to be clear here:
I plan on updating this MR on Friday at the earliest to accomodate for current feedback - I'm not ignoring any feedback, just haven't had time to look in here due to assignments.

In advance, @swick how best would a redesigned version of this draft be changed to accomodate for your feedback? Besides a rename, would it remain the same but without the "higher contrast" options, or alternatively become a generalised "I am colourblind" boolean? I'm assuming the former, but thought I'd ask first.
Also, @danirabbit, would you be up for the suggestion at #1177 (comment) being applied to this draft spec idea?

@swick
Copy link
Contributor

swick commented Oct 30, 2023

In advance, @swick how best would a redesigned version of this draft be changed to accomodate for your feedback? Besides a rename, would it remain the same but without the "higher contrast" options, or alternatively become a generalised "I am colourblind" boolean?

It should describe the kind of color vision deficiency that a user has: no red, no green, no blue, no color or reduced contrast.

One could argue that a strength would also be helpful but I think we should start with a minimum and if there is need for it we can add it later.

@swick
Copy link
Contributor

swick commented Oct 30, 2023

From what I've heard, I think it's more the other way around. Folks with color vision disabilities seem to largely be more interested in assistance that meets them at the severity of their disability and not like immediately jumping to segregated experiences unless their disability absolutely requires it to function

Interesting. I guess this is also a problem with apps switching to a very different mode instead of being designed with CVD in mind and then only having to adjust slightly.

Either way, keeping them separate and not exposing the active filters gives the user more control while keeping the implementation complexity at a minimum. I think we agree here.

@Mikenux
Copy link

Mikenux commented Nov 1, 2023

The problem is that if an app has its own things to adapt to the user's vision, then it should logically know if a filter is active in order to disable it, but then the user indeed has no control . Perhaps the app should report back to the system whether it has its own adaptations, so that the user can choose to enable or disable a color filter for a specific application?

Besides, shouldn't the application also know the severity (since it was mentioned) to know if it has the necessary adaptations?

@orowith2os
Copy link

For a reference on games using this setting, DOOM Eternal provides colorblind filters in-game. It would be a perfect example of a slight possibility of games using this setting.

@dominichayesferen
Copy link
Contributor Author

dominichayesferen commented Jan 26, 2024

I'll admit - I forgot about this PR entirely since my last message.

Unfortunately I'm going to be busy until Friday, because gotta do more assignments (my free time before doing that just ended), so won't incorporate the feedback just yet, BUT if there's more feedback to be given here, do provide it in advance... and I'll try not to forget this time when I'm free again to rebase it and incorporate everyones' feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Needs Triage
Development

Successfully merging this pull request may close these issues.

High contrast and color blindness settings
6 participants