Commit graph

7158 commits

Author SHA1 Message Date
Vaxry
b5ea887f07
debug/overlay: optimize rendering, cleanup and nicetify (#14097)
optimizes the rendering, drops direct cairo, fixes up api.
Also improves the visuals etc of the overlay
2026-04-16 19:47:53 +01:00
UjinT34
66ea2e2c9e
renderer: Various CM fixes, part 8 of refactors (#13860)
Part 8 of Ujin's refactors.
2026-04-16 19:19:25 +01:00
Vaxry
4cce7f60a9
notifications: move and small refactor (#14094)
moves to notification/, and adds a new style manager getter.
2026-04-16 17:56:25 +01:00
Nikolai Nechaev
ff459f4a2a
groups: fix movewindoworgroup when moving from group to group (#14086)
* Add test for movewindowgroup

* groups: Fix `movewindoworgroup` moving into group

Fixes `CKeybindManager::moveWindowIntoGroup` to
remove a window from a group before attempting
to add it to another group. Addresses #13843.

But the animation of moving a window from a group
into another group now looks weird: as if the
whole target group is being moved.
2026-04-16 17:54:04 +01:00
Visal Vijay
1ea0a43615
monocle: avoid repeated workspace monitor lock() calls (#14085)
* refactor(monocle): avoid repeated workspace monitor lock() calls

* clang-format

* cleanup: avoid repeated weak_ptr::lock() calls

* style: shorten variable name PMONITORWORKSPACEOWNER to PMONITOR
2026-04-16 17:53:12 +01:00
Vaxry
ed349e84d2
notifications: optimize rendering (#14088)
drop cairo, use proper gpu rendering
2026-04-16 13:57:27 +01:00
ErrorNoInternet
e6c5040f41
init: drop CAP_SYS_NICE from ambient set after gaining SCHED_RR (#14082) 2026-04-15 23:20:20 +01:00
Visal Vijay
88f3e7e9d5
monitor: ensure swapchain is updated before mode test (#14065)
* monitor: ensure swapchain is updated before mode test

* monitor: ensure swapchain update via helper for all mode set paths

* monitor: fix formatting

* monitor: move swapchain helper to CMonitorState

* monitor: move swapchain helper to CMonitorState
2026-04-14 18:24:44 +01:00
Vaxry
e539d21174
config: fix safe mode config generation (#14024) 2026-04-13 22:19:37 +01:00
933a24caa6
screencopy: clear buffer before rendering (#14064)
If reusing wl_buffers when capturing a transparent window, the current
frame would overlay the previous frame instead of replacing it.
2026-04-13 09:17:10 +01:00
Vaxry
814337fdd2
keybinds: fix wrong space assignment in pin (#14061) 2026-04-12 23:04:42 +01:00
Vaxry
d67c4e2b7f
layout/algo: preserve focused target if applicable on layout switches (#14058)
fixes #13804
2026-04-12 18:04:56 +01:00
Visal Vijay
24b121c7a3
cleanup: avoid repeated weak_ptr lock() calls in conditions (#14057) 2026-04-12 17:57:06 +01:00
Lucas Zanoni⠀⠀⠀⠀⠀ ⠀╱|、 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ (˚ˎ 。7 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ |、˜〵 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀じしˍ,)ノ
fe369dd9fb
input: fix focus_on_close=2 (MRU) routing to cursor path instead of getNextCandidate (#13969) 2026-04-12 17:30:29 +01:00
Saladin
3830200cff
clang-tidy: fix duplicate entry in .clang-tidy (#14045)
* Fix duplicate entry in .clang-tidy

Removed duplicate entry for 'bugprone-forward-declararion-namespace'.

* Remove same duplicate in checks too
2026-04-12 16:51:44 +01:00
David
3649c18668
hyprctl: fix lib64 pkgconfig for version-checking (#14051)
Fedora Linux uses /usr/lib64/ for 64-bit shared libraries. Because of
that the pkgconfig dir on Fedora is /usr/lib64/pkgconfig
2026-04-12 16:51:27 +01:00
chocoblocko9
dbc07064ef
compositor: fix floating input/visual z-order desync after fullscreen (#14015) 2026-04-11 15:08:39 +01:00
Visal Vijay
f7755322fc
input: avoid repeated weak_ptr::lock() and ensure consistent usage (#14039) 2026-04-10 14:38:28 +01:00
Pppp1116
fb46d16fc2
rules: make rule prop reset less cursed (#14003) 2026-04-08 12:06:58 +01:00
Visal Vijay
aa8cea6671
renderer: extract window skip conditions into named booleans (#14005) 2026-04-08 12:04:28 +01:00
75dc67e63f input: lazy cache getWindowIdeal() 2026-04-07 12:07:36 -04:00
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