Enable disabling color management for selected applications #15265
Unanswered
wilecoyote2015
asked this question in
Feature requests - Window management
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Main Issue:
Some applications working in different color spaces than sRGB do not advertise their output color space properly.
Hence, Hyprland interprets them as sRGB and hence a wrong output transformation is applied, leading to inaccurate colors.
Background:
Some graphics applications like darktable provide (more or less) sophisticated color management pipelines.
In particular, they usually do internal processing in a large working color space.
If an icc profile for the display is supplied, they can transform directly into the display color space.
Important use Case:
One uses a display with larger gamut than sRGB (e.g. P3) and wants to edit their Photos covering the gamut of their display - in particular seeing colors that are out of gamut of sRGB.
This AFAIK not possible with Hyprland since the removal of the
cm_fs_passthroughoption, if the application does not advertise it's output color space.See: darktable-org/darktable#19977
The only way to get accurate colors in this scenario is to set the display profile in the application to sRGB, which is what Hyprland assumes, so that the correct transformation
working space (app) -> srgb (app) -> display (Hyprland)is applied.However, the gamut is clipped to the sRGB here as it is the smallest color space in the pipeline.
In an ideal scenario, where the application advertises it's color space correctly, we would have:
working space (app) -> display (Hyprland)Or, as an alternative, set the ICC profile of your display in the app if it advertises the color space to Hyprland.
Here, the app transforms to display color space and Hyprland knows that it already is in display color space, so that no further transform is required
working space (app) -> display (app)As a workaround, one could previously set the display ICC profile in the app, make it fullscreen and set
cm_fs_passthrough = truein hyprland. In this case, the application manages the whole transform pipeline correctly by itself:working space (app) -> display (app)Solution:
I propose to add an effect
disable_cmfor window rules.This way, color management can be disabled for an individual application so that the application can handle the color management pipeline.
I see two motivations for this feature:
All reactions