-- ───────────────────────────────────────────────────────────────────────────── -- Monitors -- -- Kuycon P20 on DP-2: 4500x3000 @ 60Hz, 1.5x fractional scale. -- 4500/1.5 = 3000 and 3000/1.5 = 2000, both integers, so this is a "clean" -- fractional scale and Hyprland will not complain. -- -- On HDR -------------------------------------------------------------------- -- GNOME runs this panel in bt2100/HDR. Hyprland CAN do that (cm = "hdr"), but -- on 0.56.x it currently breaks screencopy: grim screenshots come back empty, -- and OBS/Sunshine capture and hyprlock's blurred background go with them. -- Root cause is still open upstream. Since screen capture matters more here -- than an HDR desktop, the desktop runs SDR at 10-bit and HDR is handed to -- fullscreen games only, via render.cm_auto_hdr in looks.lua. -- -- To try full-time HDR anyway, set cm = "hdr" below (or override it in -- overrides.lua) and read the notes in that file first. -- ───────────────────────────────────────────────────────────────────────────── local prefs = require("prefs") -- Per-output overrides written by Panama Settings, keyed by output name: -- { ["DP-2"] = { mode = "3840x2160@60", scale = 2, transform = 0 } } -- -- Only mode, scale, and transform are read. Colour management and bit depth -- stay here, because those are the settings with a documented reason attached -- (see the header) rather than preferences, and a settings page has no way to -- explain the screencopy tradeoff at the moment you would be changing it. local displays = prefs.get("displays", {}) local function override(output, field, fallback) local entry = displays[output] if type(entry) ~= "table" then return fallback end local value = entry[field] if value == nil or type(value) ~= type(fallback) then return fallback end return value end hl.monitor({ output = "DP-2", mode = override("DP-2", "mode", "4500x3000@60"), position = "0x0", scale = override("DP-2", "scale", 1.5), transform = override("DP-2", "transform", 0), -- 10-bit output. 4500x3000@60 at 10bpc is ~24 Gbps, right at the edge of -- DP 1.4 HBR3, so this relies on DSC. If the display fails to light up or -- falls back to a lower mode, drop this line first. bitdepth = 10, -- "auto" = sRGB at 8bpc, wide gamut at 10bpc. Not HDR; see header. cm = "auto", }) -- Any monitor not named above: sane defaults rather than nothing. hl.monitor({ output = "", mode = "preferred", position = "auto", scale = "auto", }) return true