Commit graph

7137 commits

Author SHA1 Message Date
ec8c336e14 decoration/border: simplify damage callback 2026-04-07 12:07:36 -04:00
a1c8c2f1f4 pass/surface: cache texBox 2026-04-07 12:07:36 -04:00
0448e707fc desktop/popup: cache tree count 2026-04-07 12:07:36 -04:00
8a97b11b22 desktop/popup: cache popup extents
caches popup extents in the head to avoid potentially expensive traversals
2026-04-07 12:07:36 -04:00
Vaxry
10c8a863d2
config: move misc:vfr to debug: (#14021)
this is a debug-only option and should never be turned off
2026-04-07 14:15:29 +01:00
vaxerski
b6e9c930b8 [gha] Nix: update inputs 2026-04-07 11:12:56 +00:00
phanium
559d7be475
build: bump hyprgraphics to 0.5.1 (#14013)
fail to build from source
```
src/managers/screenshare/CursorshareSession.cpp:8:10:
fatal error: hyprgraphics/egl/Egl.hpp: No such file or directory
```
2026-04-07 12:11:17 +01:00
Vaxry
aaa2fc342f
layouts/dwindle: override force after window drags (#14002) 2026-04-05 20:19:49 +01:00
Tom Englund
809b9b9e78
egl: move over to use hyprgraphics (#12988)
use the hyprgraphics helpers instead.
2026-04-05 19:37:07 +01:00
Linux User
5c5ba65ad3
desktop/history: include ranges header (#14000)
Fixes error `no member named 'views' in namespace 'std'` on llvm/musl
2026-04-05 19:36:13 +01:00
Anubhav
bf97fac9b9
subsurface: use geometry-aware damage and recurse into nested trees (#13933)
* subsurface: use geometry-aware damage and recurse into nested trees

Replace per-surface damageSurface() calls in recheckDamageForSubsurfaces()
with box-based damage that tracks each subsurface's last known global
position and size. When geometry changes, both the old and new areas are
damaged to correctly clear stale pixels and paint the new location.

Additionally, recurse into child subsurfaces so that nested subsurface
trees are properly damage-checked, with a depth limit of 32 to guard
against cycles. Cached geometry is invalidated on map/unmap to avoid
stale comparisons across surface lifecycle transitions.

* clang-format
2026-04-05 16:54:56 +01:00
Andreas Backx
8edb7c5663
xwayland: pipe through monitor in coordinate mapping (#13700)
* xwayland: prefer monitor-aware hover coords

Introduce monitor-aware XWayland coordinate helpers and keep the X11 hover path anchored to the main surface box while preserving detailed debug logging, reducing dependence on nearest-monitor guesses in layout-sensitive input paths.

* xwayland: use window monitor for reported coords

Report X11 window positions through the window's known monitor instead of the generic nearest-monitor heuristic so boundary-aligned outputs keep stable XWayland coordinates.

* xwayland: use window monitor for real position restore

Convert XWayland geometry back into compositor space using the window's current monitor when available so vertically offset layouts do not round-trip through the wrong output.

* xwayland: use window monitor for unmanaged geometry

Restore override-redirect X11 geometry through the window's known monitor so helper windows and popups avoid nearest-monitor misclassification on offset layouts.

* xwayland: remove monitor conversion debug logging

Drop the temporary XWayland hover and coordinate conversion diagnostics now that the monitor-selection bug is confirmed and the window-monitor based conversions fix the issue.

* xwayland: drop unrelated focused-motion change

Remove the exploratory X11-specific pointer focus scaling from InputManager so the monitor mapping fix stays narrowly scoped to the XWayland coordinate conversion changes that actually resolve the bug.

* clang-format XWaylandManager
2026-04-05 16:54:38 +01:00
Visal Vijay
6983b1906c
data/dnd: guard against expired dndPointerFocus and ensure consistent usage (#13996) 2026-04-05 14:48:44 +01:00
Ioannis Tzavaras
d7edc50eb4
tests: add unit tests for CDamageRing (#13995)
Adds GTest unit tests for CDamageRing in src/helpers/DamageRing.hpp.

Covers:
  - setSize: initial full damage, same-size no-op, resize re-damage, zero-size
  - damage: in-bounds accept, empty/out-of-bounds reject, partial clip
  - damageEntire: normal path and zero-size no-op
  - rotate: clears current, preserves as previous, wraps beyond ring length
  - getBufferDamage: age<=0 and age>ring return full screen, age=1 current only,
    age=2 accumulates previous, full ring accumulation, coalescing fallback,
    empty ring returns empty
  - hasChanged: false initially, true after damage/damageEntire, false after
    rotate, false for out-of-bounds damage

27 new test cases, all passing.
2026-04-05 14:47:58 +01:00
Tom Englund
3af9b10890
internal: silence compiler warnings about unused return values (#13997)
* misc: silence warnings about ignoring return value on reads

silence warnings on ignored return values on read() and print an error
if it occurs.

* misc: silence warnings about ignoring return value on writes

silence warnings on ignored return values on write() and print an error
where we can, or pass them the maybe_unused attribute.

* misc: silence warnings about ignoring return value on pipe

silence warnings on ignored return value on pipe(), print an error and
exit on failure.
2026-04-05 14:45:27 +01:00
3a7bd8fea2 renderer: add a cm settings cache 2026-04-04 19:00:34 -04:00
1c2bd2c818 render/decorations: improve cache performance 2026-04-04 19:00:34 -04:00
3c88ac8ead desktop/window: optimize getRealBorderSize() 2026-04-04 19:00:34 -04:00
Ioannis Tzavaras
5bf2bbeda9
build: add format-check and format-fix Makefile targets (#13936) 2026-04-04 23:35:25 +01:00
97ee042757 render/opengl: optimize getShaderVariant's map access 2026-04-04 14:42:04 -04:00
9b05dc1b4c render/decoration: cache input extents as well 2026-04-04 14:42:04 -04:00
d170a627b5 render/decoration: improve extent calculations 2026-04-04 14:42:04 -04:00
Emre Bener
442ccb069d
renderer/groupbar: fix a group indicator rounding bug (#13975)
single tab edge case handled
2026-04-04 19:16:37 +01:00
af4e196583 renderer: simplify renderWorkspaceWindowsFullscreen 2026-04-04 11:53:49 -04:00
e40857fc8a render/pass: optimize simplification and blur calculations 2026-04-04 11:53:49 -04:00
4f34bd4768 renderer: don't damage decos individually in damageWindow 2026-04-04 11:53:49 -04:00
a151c67165 animation: avoid redundant damage calls in tick
animated variables would independently damage, that's redundant.
2026-04-04 11:53:49 -04:00
vyfor
13fec3de9b
render: fix SIGFPE in addWindowToRenderUnfocused when misc:render_unfocused_fps is 0 (#13973) 2026-04-04 14:06:16 +01:00
Vaxry
29cf6264a2
desktop/window: reduce window deco updates (#13980)
AVARDAMAGE_ENTIRE doesn't mean the geometry changed, so no point in an expensive update
2026-04-04 14:06:07 +01:00
43f7f683d0 debug-tools: add flame 2026-04-04 08:50:36 -04:00
b898fc1c34 cmake: add -fno-omit-frame-pointer to debug 2026-04-04 08:50:36 -04:00
Visal Vijay
49686f96c7
miscfunctions: reuse monitor pointer instead of repeated calls (#13977) 2026-04-04 13:36:58 +01:00
Ioannis Tzavaras
a3d262d148
tests: add unit tests for CTagKeeper (#13970)
Cover all public methods of the tag management helper:

- applyTag: set (+prefix), unset (-prefix), toggle (no prefix)
- applyTag with dynamic=true: star suffix appended
- isTagged: exact match, dynamic/star matching, strict mode
- isTagged: negative prefix inversion
- removeDynamicTag: removes star-suffixed entries
- getTags: returns full internal state
2026-04-04 13:26:54 +01:00
Pppp1116
2b9696eb72 renderer: skip redundant render-path work 2026-04-04 08:26:24 -04:00
Pppp1116
4c42269ce6 monitor: centralize solitary and scanout eligibility checks 2026-04-04 08:26:24 -04:00
Pppp1116
d5b00bbc17 scheduler: keep a strong monitor ref in frame callbacks 2026-04-04 08:26:24 -04:00
Pppp1116
0647b5449c protocols: avoid repeated per-client work in hot paths 2026-04-04 08:26:24 -04:00
Pppp1116
4c897c2d47 protocols: prune stale subsurface refs in hot traversals 2026-04-04 08:26:24 -04:00
f25473b21b
render: fix layer blur_popups ignoring ignore_alpha when blur is off (#13947) 2026-04-02 22:36:58 +01:00
ad906a473f
layout: revert "replace string comparison with ID-based matching in WorkspaceAlgoMatcher (#13943)"
This reverts commit 529f72249c.

It's not better, see https://github.com/hyprwm/Hyprland/pull/13943#issuecomment-4180474615

God damnit.
2026-04-02 22:34:04 +01:00
Pppp1116
a84e98d2a8
seat/compositor: fix minor issues (#13958) 2026-04-02 22:29:45 +01:00
Ioannis Tzavaras
b2a29e1bf2
tests: add unit tests for MiscFunctions helpers (#13934) 2026-04-02 22:14:42 +01:00
Aivaz Latypov
90a79dc990
i18n: update Tatar translations (#13930) 2026-04-02 22:11:10 +01:00
Vaxry
febf550a20
algo/scrolling: add expel, consume, and consume_or_expel (#13869)
ref https://github.com/hyprwm/Hyprland/discussions/13403\#discussioncomment-15972750
2026-04-02 21:10:00 +01:00
Visal Vijay
529f72249c
layout: replace string comparison with ID-based matching in WorkspaceAlgoMatcher (#13943)
* perf(layout): replace string comparison with ID-based matching in WorkspaceAlgoMatcher

* perf(layout): replace string comparison with ID-based matching in WorkspaceAlgoMatcher
2026-04-01 23:20:56 +01:00
Visal Vijay
7fbf8f9847
seat: store surface in pointerFocus before sendEnter (#13941)
ptr could expire
2026-04-01 14:29:37 +01:00
Ioannis Tzavaras
36f184ead8
tests: add unit tests for Math transform utilities (#13935) 2026-04-01 00:16:23 +01:00
Visal Vijay
ccdfa4070e
refactor: improve readability of monitor rule comparison (#13884) 2026-03-31 16:39:07 +01:00
Ioannis Tzavaras
179e1de507
tests: add unit tests for match engine types (#13903)
* tests: add unit tests for match engine types

* clang-format: fix formatting in TagMatchEngine test
2026-03-31 16:38:18 +01:00
Ioannis Tzavaras
fdd2607b9b
tests: add unit tests for Math::CExpression (#13924) 2026-03-31 16:37:49 +01:00