HDR Regression Woes of 0.55

Hyprland version
Hyprland 0.55.0 built from branch unknown at commit 049595e196db4a4ab162ce58aadd016e929327c8 dirty (unknown).
Date: 2026-06-23
Tag: v0.55.0, commits: 0

Libraries:
Hyprgraphics: built against 0.5.1, system has unknown
Hyprutils: built against 0.13.1, system has unknown
Hyprcursor: built against 0.1.13, system has unknown
Hyprlang: built against 0.6.8, system has unknown
Aquamarine: built against 0.12.0, system has unknown

Version ABI string: 049595e196db4a4ab162ce58aadd016e929327c8_aq_0.12_hu_0.13_hg_0.5_hc_0.1_hlg_0.6
flags set:
nix

Git bisect issue started here config/lua: init lua config manager, use lua if available (#13817) · hyprwm/Hyprland@5ba33f8 · GitHub

Overview

HDR causes screenshots to be empty · hyprwm/Hyprland · Discussion #14931 · GitHub in summary, but hasn’t gained any traction, posting here as last hope

I have 2 HDR ultrawide monitors stacked and 1 portrait mode monitor (non HDR).
Moving to 0.55+, I moved my config to lua, in a 1:1 like swap fashion, which clearly showed regressions.

First regression (Color Management)

The HDR monitors were very dim, the cursor was oversaturated, previously I used sdrbrightness and sdrsaturation to tune HDR, which previous to 0.55 worked great.

Solution

Since then I had to swap to sdr_min_luminance and sdr_max_luminance to get colors to work as previous. This was found here in this discussion, apparently values were changed or something. That’s fine, I don’t mind doing it this way as it seems to make more sense to match monitors actual values

Second Regression (screenshare/screenshot)

Screenshots and screen share have completely been borked with the renderer changes. Previously it worked fine, albeit sometimes the screen sharing itself was a little dim previously. Now every time I screenshot it’s complete RNG if i get a valid screenshot or some glitched artifact screenshot (i.e showing a completely different workspace or window that isn’t even present anymore) or an empty screenshot. I tested this with multiple utilities, namely grim but also other third party utils and OBS.

Solution

Using render.keep_unmodified_copy=1 seems to fix these issues completely (so far from what I see), which again is fine but still a regression.

Third Regression (Cursors)

Previous to the render rework and 0.55, I did not have to set no_hardware_cursors=1. Now I have to, without setting this value to 1 now the cursor is oversaturated in HDR and off color and wrong. This causes other issues though, especially in games, where the cursor seems to lag or get stuck. Again it kind of sucks to have to choose between a) working cursor or b) properly colored cursor

Solution

Using no_hardware_cursors=1

Issue for rotated monitors which stems from using keep_unmodified_copy=1

When using keep_unmodified_copy=1, for some reason this messes up rotated monitors (i.e portrait monitors). If my mouse if not actively on my portrait mode monitor it will randomly go black for anywhere from a split second to a couple seconds. This for some reason seems amplified when running a game on my primary monitor, as the portrait mode monitor sometimes just stays black until I move my mouse to it or use a keybind to focus that workspace on the portrait monitor. This is extremely annoying to have to decide between either a) have good screenshare/copy capabilities OR b) have my portrait mode monitor work normally

I am more than willing to help test any fixes for this if needed. I am not a C++ dev though and don’t like AI, so I can’t really contribute to Hyprland or figure out this bug :(

For anyone that finds this, I THINK i figured it out, at least I haven’t seen it come back. So my 2 main monitors are HDR, my portrait mode monitor is not. I previously had use_fp16=1 which enables always, swapping it to use_fp16=2 which sets it to enabled only in hdr mode, seems to fix it. So something with use_fp16 causes non HDR monitors (possibly only rotated monitors) to flicker or go black for 1 to n seconds.

NEVERMIND IT CAME BACK, seems to be after prolonged use it happens, further leading me to believe its not me and just a render rewrite regression bug