7764 Commits
Author SHA1 Message Date
erStarrandGitHub 866b8085f9 README: add explicit mention of built in layouts (#15983)
Add explicit mention of glow
Note many types of blur
Add mention of spring animations
Reorder
2026-08-24 15:48:52 +02:00
erStarrandGitHub 951ab550e7 core/fullscreen: fix not accounting for special workspaces when client requests FS with a monitor request attached (#15806) 2026-08-23 19:21:04 +02:00
VaxryandGitHub 45a79e5e84 config/propRefresher: damage monitor on refresh cursor zooms (#15957)
wtf was I smoking before?
2026-08-23 00:07:24 +02:00
VaxryandGitHub 357513949b monitor: solitary cannot have an underlying subsurface (#15958)
ref #15923
2026-08-23 00:07:08 +02:00
VaxryandGitHub 6ffae9c5aa config: fix CONFIG_VALUES not returning proper current values (#15948)
ref #15940
2026-08-22 18:05:31 +02:00
vaxerskiandgithub-actions[bot] 0251f09fd1 [gha] Nix: update inputs 2026-08-22 15:28:39 +00:00
VaxryandGitHub d8e657eaea renderer/gl: implement swappable blur variants (#15661)
Adds multiple variants to the blur shader
2026-08-22 17:27:16 +02:00
VaxryandGitHub 175aa0743a desktop/window: warp pos/size on x11 configure to avoid jitter (#15950) 2026-08-22 16:54:23 +02:00
Romain GehrigandGitHub bb415864a5 input: use logical monitor size for eis regions (#15945)
That fixes the advertise regions for monitors with a scale != 1 and/or
output transform (eg. rotation).
2026-08-22 15:18:59 +02:00
VaxryandGitHub 9c7b45e628 decoration/groupbar: fix crash when group returns no match (#15947)
ref #13853
2026-08-22 15:18:38 +02:00
Navon John LukoseandGitHub 5ccc5d4401 pointer: colour-manage the hardware cursor buffer (#15905)
The hardware cursor plane is blended by the display engine after the
compositor has already encoded its framebuffer into the output's colour
space. renderHWCursorBuffer() renders the cursor as plain sRGB, so on a
colour-managed output those values are reinterpreted in the output space.

On a PQ output that means a white cursor lands near peak luminance and is
blinding relative to every other SDR surface, which is what
hyprwm/Hyprland#14419 reports. Setting cursor:no_hardware_cursors=1 avoids
it because software cursors go through the normal, colour-managed pass.

Tag the cursor framebuffer with the monitor's image description so the
texture pass converts into the output colour space. The target selection in
CHyprOpenGLImpl already prefers the current FB's image description when it
has one, so no other plumbing is needed.

wlroots fixed the same issue in its DRM backend (!5190, "cursor: apply
output image description when preparing texture").
2026-08-22 14:35:13 +02:00
Navon John LukoseandGitHub faa8d40e5d monitor: damage the monitor when the output image description changes (#15908)
applyCMType() replaces the output's image description and marks the blur FB
dirty, but never damages the monitor. Anything already composited under the
previous colour transform therefore stays on screen until something else
happens to damage it.

It is most visible on transparent surfaces after leaving HDR: a faint grey
overlay that persists for roughly half a second, until the surface repaints
for an unrelated reason. Confirmed by A/B - leaving HDR normally shows it,
while leaving HDR followed immediately by a forced full repaint does not.

This was previously masked by the ~1s blank an HDR transition used to cause,
which force-repainted everything.
2026-08-22 14:35:04 +02:00
fazziandGitHub 3feae7a493 config: enable skip_non_kms_dmabuf_formats by default (#15803) 2026-08-22 13:58:14 +02:00
34839b4f64 session: add disable-able systemd session target (#15776)
* add systemd session target

* session: stop graphical-session so we block, near other systemd cleanup

* session: don't start session ourselves if MANAGERPID is set

This avoids doing systemd stuff if we're already in a systemd-managed
session, like UWSM. Env vars and targets and such should already be
handled for us.

* session: store state, rather than rechecking env var at exit

---------

Co-authored-by: Dregu <dregu@dreg.us>
2026-08-22 13:57:45 +02:00
StephanandGitHub d29916a91c input: decouple pointer focus from layer-surface keyboard_interactivity (#15899)
* input/layers: let new layer-surfaces take pointer focus

* input/layers: decouple pointer focus from keyboard interactivity

zwlr_layer_surface_v1::set_keyboard_interactivity:

  "Layer surfaces receive pointer, touch, and tablet events normally.
  If you do not want to receive them, set the input region on your
  surface to an empty region."

We were previously treating keyboard interactivity also as pointer
interactivity, by forcing pointer focus onto any new
'keyboard_interactivity != none' surfaces in onMap(), as well as
redirecting all regular pointer input to any existing
'keyboard_interactivity == exclusive' surface.

* layers: rename 'interactivity' identifiers to specify *keyboard*-interactivity

The Lua config field is also renamed from 'interactivity' to
'keyboard_interactivity'.
2026-08-21 23:03:40 +02:00
jmanc3andGitHub cd83a26c7e renderer: fix blur not clipping when rounded (#15884)
* Fix blur not clipping when rounded

* fix unused
2026-08-21 22:09:35 +02:00
VaxryandGitHub a287842067 config/propRefresher: damage monitor on shader refresh (#15924)
ref #15889
2026-08-21 17:10:22 +02:00
VaxryandGitHub 0f97a22d11 config/lua: allow get_monitors with a table for specifying args (#14693)
adds { all } to get all monitor objects including disabled ones
2026-08-21 13:26:23 +02:00
VaxryandGitHub 8d50be06aa keybinds: fix subchord matching for release binds (#15904) 2026-08-20 17:24:01 +02:00
VaxryandGitHub 52b368f1d7 config/lua: adjust rounding limits (#15756)
ref https://github.com/hyprwm/Hyprland/discussions/15728
2026-08-19 13:24:19 +02:00
gumballriggyandGitHub 9d4f7a83ce CMake: omit -Wno-clobbered flag (#15867) 2026-08-18 21:37:31 +03:00
Meehir PrabhakarandGitHub 0e737901cd tests: add fallback focus test for pinned windows on special workspaces (#15826)
* tests: add fallback focus test for pinned windows on special workspaces

* add comments to the test-case
2026-08-18 19:04:00 +02:00
VaxryandGitHub af0d014cb2 desktop: refactor views, major cleanups (#15779)
Tons of stuff cleaned up, etc.
2026-08-17 22:26:04 +02:00
Aqa-IbandGitHub 5751911091 tests: decompose group tests into smaller units (#15875) 2026-08-16 19:56:19 +02:00
Nikolai NechaevandGitHub a1b9dc0e8c config: Add cursor:warp_on_monitor_change (#15844)
Allow to control cursor warping when switching to a workspace
on a different monitor.
2026-08-15 17:17:59 +02:00
Lucas RitzdorfandGitHub fea3b3367b config/lua: make stable_id field a string, matching hyprctl (#15869) 2026-08-15 16:59:12 +02:00
a0c6946d66 config: allow exit_window_retains_fullscreen to be configurable for groups (#15731)
Co-authored-by: mugen <iorjgiodr3548769uyj@534ytgr89ui0ji.345tu>
2026-08-15 16:48:02 +02:00
VaxryandGitHub 6d43ce8453 input/seat: check HID caps directly for focus enters (#15841)
ref #15765
2026-08-12 20:57:58 +02:00
VaxryandGitHub 153df31d2c errorOverlay: fix reserved area tracking (#15839) 2026-08-12 20:57:46 +02:00
VaxryandGitHub ab2d313b55 monitor: fix layer arrangement on layout changes (#15842) 2026-08-12 20:57:27 +02:00
erStarrandGitHub 1256bd180e scrolling/fullscreen: fix notification layer creation causing mouse flick in scrolling covering FS windows (#15795) 2026-08-12 19:25:43 +02:00
VaxryandGitHub 24e23ca4bb config: deprecate special_scale_factor (#15832)
workspace rules achieve the same effect
2026-08-11 19:57:59 +02:00
VaxryandGitHub a269fd77b0 layout/drag: fix draggingTiled not being reset properly (#15833)
ref #15789
2026-08-11 19:57:49 +02:00
VaxryandGitHub 0cef51ab72 config/lua: fix empty object construction not resulting in nil (#15831) 2026-08-11 19:47:37 +02:00
8a24bb3bb6 render/cm: fix hdrMetadataEqual returning inverted result (#15825)
std::memcmp returns a nonzero value when the buffers differ, so
hdrMetadataEqual() returned true for differing metadata and false for
identical metadata. The caller in commitFrame compares
!hdrMetadataEqual(WANTED, CURRENT), which inverted this again: identical
HDR metadata was treated as changed every frame, re-sending
AQ_OUTPUT_STATE_HDR and forcing a full DRM modeset on every commit.

Fixes a per-frame modeset loop on displays with HDR metadata configured
(e.g. cm=hdredid).

Co-authored-by: neonvoidx <me@neonvoid.dev>
2026-08-11 19:06:15 +02:00
Mihai Fufezan 45c8510c9c flake.lock: update 2026-08-11 19:39:50 +03:00
Meehir PrabhakarandGitHub 58c22e7af4 chore: add keyboard-modifiers.txt to .gitignore (#15828) 2026-08-11 17:02:12 +02:00
Aqa-IbandGitHub 814603164e tests: auto-group a new tiled window into the focused floated group (#15797) 2026-08-11 16:04:10 +02:00
StephanandGitHub b5a6d81f47 renderer: fix surface buffer transform and viewport spec compliance (#14441)
* renderer: Invert set_buffer_transform-provided transform

* viewporter/compositor: Correct wp_viewport order of operations
2026-08-10 18:09:51 +02:00
erStarrandGitHub 3cbff91e8e config/actions: remove redundant if condition in center (#15814) 2026-08-10 17:41:55 +02:00
Meehir PrabhakarandGitHub c8a51d4f5b desktop/window: fix special workspace hiding on window unmap fallback (#15763) 2026-08-10 17:41:04 +02:00
erStarrandGitHub 963c5cf818 config/actions: fix center not saving the new pos of a floating window (#15810) 2026-08-10 16:36:14 +02:00
Tom EnglundandGitHub e3bbfe3cfa shaders: make each SRC/DST TF a variant (#15792)
* shaders: make each SRC/DST TF a variant

by making each SRC/DS transferunction a variant we reduce the branching
and instruction count by up to 60%, measured with INTEL_DEBUG=fs,gs,vs

* opengl: cache activetex, blendfunc, VBO, FBO

this was about 9% of a 10 second apitrace capture of redundant gl calls
with same things over and over. just cache it like we do with other
things. because i dont trust the driver to even act accordingly.
2026-08-10 16:25:38 +02:00
Lucas RitzdorfandGitHub f7daeb7f79 hyprctl: random Lua-adjacent fixes (#15767)
* hyprctl(repl): go interactive if no Lua was given via args

The previous check would mess up if `-i` was provided, since it'd see
*an argument* and refuse to go interactive, even when it should've (i.e.
`hyprctl -i 0 repl`).

* ipc(socket1): new escape parsing for batch commands

Semicolons are still the command separator, so those have to be escaped
if they appear anywhere inside of commands (e.g. multi-statement Lua
code). Also, literal backslashes need to be escaped as well.

* tests(ipc): add test for hyprctl batch mode

This test case includes slightly weird stuff (semicolons in Lua code;
square brackets) that would break the old parsing logic.

* format: dang braces
2026-08-09 20:00:17 +02:00
epsilonshmepsilonandGitHub b20621d48b layout: pinned floating windows now retain their last position (#15784)
information when changing workspaces (fixes not reverting to the last
position after exiting fullscreen)
2026-08-09 15:46:47 +02:00
vaxerskiandgithub-actions[bot] 5dee44a724 [gha] Nix: update inputs 2026-08-08 22:23:34 +00:00
Will TempleandGitHub 0e98ddc9c3 render/cm: re-send HDR metadata when its content changes (#15761)
Compare the metadata we would send against what is already committed and
send if there is any difference.

Found this testing whether MaxCLL influences in-panel tonemapping.
setHDRMetadata was only called when the monitor entered or left HDR or
in some cases surrounding direct scanout. Changes to the metadata itself
while the monitor stayed in HDR was computed and stored in the image
description, but never sent.

This particularly effects mastering data and min/max/max_avg luminance
changes.

Signed-off-by: Will Temple <will@wtemple.net>
2026-08-09 00:21:00 +02:00
Nikolai NechaevandGitHub 05819c4ad6 tests: prefer SPAWN_KITTY over Tests::spawn_kitty in tests (#15754)
* tests: Recommend using macros instead of Tests::{spawnKitty,spawnLayerKitty}

* tests: Replace `Tests::spawnKitty` with `SPAWN_KITTY` where possible
2026-08-09 00:20:47 +02:00
AurelleandGitHub dcd544e422 input: no keyboard exclusivity during dnd (#15780) 2026-08-09 00:20:16 +02:00
Tom EnglundandGitHub 5b1c0fda73 renderer/fp16: fix blur clear and invalidate (#15791)
the clear was scissored to m_renderData.damage while we fakeDamaged full
monitor. so in render pass when m_blurFBShouldRender is hit the FB was
cleared over partial damage but rendered over whole monitor causing
stale blur blends into the new outside damage. so save old damage,
render fakeDamage, restore old damage.

invalidate({GL_DEPTH_STENCIL_ATTACHMENT}) at end of
renderTextureWithBlurInternal cant set m_cleared = false because its not
invalidated the COLOR_ATTACHMENT, so guard invalidate.
2026-08-08 22:46:26 +02:00