7764 Commits
Author SHA1 Message Date
VaxryandGitHub ff24e1755f ipc: refactor socket1 and socket2 (#15624)
clean up the code, separate impl, etc
2026-07-28 13:12:07 +02:00
Vaxry 7b4d0b9dc1 ci/vouch: check out files first 2026-07-28 12:08:54 +02:00
Vaxry b5f71b2497 ci/vouch: fix template file 2026-07-28 01:09:01 +02:00
Vaxry 6d9b634de2 ci: remove new pr comment
we now have vouch
2026-07-28 01:00:56 +02:00
Vaxry e7d685d1e7 github: improve templates 2026-07-27 18:04:00 +02:00
Vaxry fdd49ae16e github: update PR template 2026-07-27 16:07:53 +02:00
VaxryandGitHub 65e81c116a config/lua: do not nuke package.path (#15622) 2026-07-27 15:34:25 +02:00
MightyPlazaandGitHub 9f777b130e groupbar: re-add groupbar positional dragging (#15615)
* re-add groupbar positional dragging
modified:   src/render/decorations/CHyprGroupBarDecoration.cpp

* format
modified:   src/render/decorations/CHyprGroupBarDecoration.cpp
2026-07-27 15:26:36 +02:00
Tom EnglundandGitHub dd9038373c opengl: get rid of VAO stalls once and for all. (#15603)
* opengl: use two VAO's for custom UV

instead of overwriting the same VAO only to reset it later and
glBufferData orphaningm etc. just have two VAO's one static, one for
customUV's.

* renderer: dont only rely max rects to get extents

getting extents for over 8 rects is fine when its local and small, but
scattered across the monitor it means full size damage for a few
different tiled windows. so keep rects unless extents are at most 2
times their area.
2026-07-27 13:26:59 +02:00
AwusedandGitHub 3de8c49b80 protocols/pointerwarp: send mouse frame event after motion (#15599) 2026-07-27 13:24:53 +02:00
Vaxry d91db3c707 meta: add generator and update bug templates 2026-07-27 13:22:02 +02:00
Tom EnglundandGitHub 6484f43742 compositor: merge ready states in the surface queue (#15504)
* compositor: merge ready states in the surface queue

each waiter was previously added to wl_event_loop. but the
wl_event_loop has no order guarantee, so it could mean fence
A, B, C sits in the queue ready but processes B first then C, then A,
and now we commit A -> B -> C, change waiters to return a WP to the
SReadableWaiter so we can easily track them, iterate in reverse order
check if readable. then later in tryprocess merge all ready states into
one commit. meaning A merges B and C, now we commit C.

fifo is untouched because its FIFO. this is only for fences and mailbox
rendering.

* fifo: with states merging we dont want empty fifo commits

with states merging, we really dont want empty fifo commits that early
returns, just makes it a 3 place if else guard for no gain. move it all
into the fifo protocol instead. now we only fifo lock if both setSet and
setWait is called. the client wants it locked for presentation.

however we can only lock it if previous fifo barrier has been satisfied.
otherwise its going to wait for a presentation that never comes meaning we
never commit the new state that waits for the rendererer to catch it in
the render pass.

* presentation: discard directly instead of queueing

discard presentation directly instead of queuing for a presentation
event that might never come.

* syncobj: remove a O(n) resource lookup

seen in profiling as a big cpu spender
use what other protocols uses for fromResource

* fifo: dont fifo lock synced subsurfaces

The constraint must be ignored if the surface is a subsurface in synchronized mode.

also use setBarrier for setting waitingonpresentation because. protocol
states this. so any client abusing this has only itself to blame.

when the content update containing "set_barrier" was made active at a latching deadline,
it will be active for at least one refresh cycle
2026-07-27 13:16:56 +02:00
Tom EnglundandGitHub 94fe1706eb renderer: ensure only one buffer reference is added (#15584)
* renderer: ensure only one buffer reference is added

not only does snapshots, hit endRender and add the buffer to
m_usedAsyncBuffers but the first real frame does it too, we might have duplicate
buffers added pointing to the same IHLBuffer and fences merging with themself.
so use a std::pair inside the vector to ensure uniquness

this also means we can skip buffers for surfaces that has expired. when
adding fences.

* renderer: move m_usedAsyncBuffers to CMonitor

if showing on two or more monitors, they get a surfacepass per monitor.
and both needs to add its fence.
2026-07-27 13:15:44 +02:00
Vaxry 8fd90780e8 ci/vouch: init vouch ci 2026-07-27 13:09:54 +02:00
Vaxry d8dc50309c github: materialize symlinks 2026-07-26 18:02:31 +02:00
Vaxry 6e4484f924 github: add discussion templates 2026-07-26 17:58:37 +02:00
Lucas RitzdorfandGitHub 7b8454d21e config/lua: support workspace selectors in hl.get_workspace() (#15555)
* lua: support workspace selectors in `hl.get_workspace()`

* tests: lua `hl.get_workspace()` with selectors

* lua: don't change focus in `hl.get_workspace()`

That results in an expired workspace being returned, when it should just
be `nil` for nonexistent spaces.
2026-07-26 16:17:56 +02:00
Tom EnglundandGitHub f7a711625e protocols: a few protocol error touchups (#15474)
* compositor: fix wl_surface.attach proto violations

When the bound wl_surface version is 5 or higher, passing any
non-zero x or y is a protocol violation, and will result in an
'invalid_offset' error being raised. The x and y arguments are ignored
and do not change the pending state. To achieve equivalent semantics,
use wl_surface.offset.

at commit time the supplied
buffer size must be an integer multiple of the buffer_scale. If
that's not the case, an invalid_size error is sent.

however viewport changes this slightly so only honor it in non viewport
cases.

* compositor: fix scale and transform violations

If scale is not greater than 0 the invalid_scale protocol error is
raised.

If transform is not one of the values from the
wl_output.transform enum the invalid_transform protocol error
is raised.

* subcompositor: fix spec violations

use enums that exist, add the bad_parent error.

The parent surface must not be one of the child surface's descendants,
and the parent must be different from the child surface, otherwise the
bad_parent protocol error is raised.

* shm: fix spec violations

use existing wayland enum values instead of bogus -1, validate size
before adding to m_pools also validate that size is not 0 in shmIsSizeValid.

* seat: fix protocol violations

use enum instead of bogus -1, axis_discreete states

This event is deprecated with wl_pointer version 8 - this event is not
sent to clients supporting version 8 or later.
2026-07-26 16:07:34 +02:00
Tom EnglundandGitHub 453d96e927 renderer: round m_scale calculations (#15594)
m_scale is float, and with fractional scaling and float precision we end
up with things like 1600 * 1.8f = 2879.99992 , we need to round to not
loose 1 pixel.
2026-07-25 12:53:52 +01:00
Nikolai NechaevandGitHub 225e018cea CI: fix codeownersplus status comment spam (#15597) 2026-07-25 12:17:04 +01:00
Tom EnglundandGitHub 566ff8fa72 monitor: fix rotate and mirror regression (#15587)
* monitor: fix transform logical pixels

seems to have vanished in old refactor, without setting m_size the
logical pixels are wrong if you start in non rotation, change config and
apply rotation. m_size still refers to no transformed position.

* monitor: fix added unavailable mirror workspace

applyMonitorRule moved away workspaces and m_activeWorkspace before this with setMirror(),
 but onConnect then reassigned one. if guard it.
2026-07-24 14:51:20 +02:00
VaxryandGitHub e820db90cf desktop/rule: add no_xdg_drags window rule (#15573)
* desktop/rule: add no_xdg_drags window rule

* peenor

* peenor

* pis
2026-07-24 11:59:49 +02:00
VaxryandGitHub 62d890eacc workspace: add changeworkspaceid to socket2 (#15571)
ref #15527
2026-07-23 21:20:13 +02:00
VaxryandGitHub e701768d5d protocols/outputMgmt: fix reload not being fired after no-op commits (#15570)
ref #15526
2026-07-23 21:20:03 +02:00
VaxryandGitHub 7d2ea27070 desktop/windowRule: fix exec rules leaking (#15543)
ref #15488
2026-07-22 18:35:37 +02:00
VaxryandGitHub a9902ea65f config: remove legacy config support (#15539) 2026-07-22 18:35:10 +02:00
VaxryandGitHub 4588b2958e config/lua: use openLate for window.open events (#15540)
otherwise various other things might override what the user wants to do
2026-07-22 15:09:24 +02:00
j_wiseandGitHub 36cc0e3765 scrolling: fix in-band resize for the first window of a band (#15532)
The edgeBottom branch read delta.y instead of the axis-swapped
modDelta.y, so horizontal resizeactive deltas were ignored for the
first window of a shared band on vertical scrollers.
2026-07-22 14:33:48 +02:00
c4605ba7f1 example: update hyprland.lua default springs (#15499)
yes

---------

Co-authored-by: Vaxry <vaxry@vaxry.net>
2026-07-22 14:06:30 +02:00
Lucas RitzdorfandGitHub eb21dae6fb makefile: smol Makefile QoL patches (#15491) 2026-07-22 13:54:58 +02:00
VaxryandGitHub ca90dfb0e7 compositor: add a deprecation notice to .conf configs (#15538) 2026-07-22 13:29:15 +02:00
VaxryandGitHub 1a3606234c compositor: init eventManager earlier (#15522)
fixes #15521 and adds a tiny test
2026-07-21 15:52:10 +02:00
Tom EnglundandGitHub d7188d5821 input: nullptr check eis_client_get_name (#15520)
nullptr check eis_client_get_name or return "<unnamed"
2026-07-21 11:56:03 +02:00
UjinT34andGitHub 9d3bc3b0ce fifo: minor feedback fixes (#14765)
* don't queue unrequested presentation feedbacks

* don't fifo lock unrendered surfaces

* render:not_shown_fifo_lock

* cleaner unneeded feedvacl skip

* keep fifo locks by default

* fix visibility check
2026-07-21 11:55:17 +02:00
Anthony RuhierandGitHub 7ef766c9c6 build: update hyprutils dependency to 0.14.0 (#15518)
Crashes at startup with hyprutils < 0.14.0.
Ref: https://codeberg.org/hyproverlay/hyproverlay/issues/104
2026-07-21 11:54:32 +02:00
littleblack111andGitHub 14c0939916 input-capture: fix allow_input_capture bind flag with capture_modifiers enabled (#15477) 2026-07-21 10:42:31 +02:00
VaxryandGitHub d39afc0a56 hyprctl: fix json output for binds (#15507) 2026-07-21 10:37:22 +02:00
VaxryandGitHub 2174f26a14 view: do not render monitor for tearing if it's blocked (#15500) 2026-07-20 21:04:25 +02:00
André SilvaandGitHub 5b260faeb9 init: gain real-time through rtkit (again) (#15465)
* Revert "init: revert "gain real-time through rtkit (#15411)""

This reverts commit ad317198d9.

* init: gain realtime before we enter the loop
2026-07-20 12:49:39 +02:00
Vaxry 36b2e0cfe0 version: bump to 0.56.0 v0.56.0 2026-07-20 09:50:48 +02:00
Lucas RitzdorfandGitHub 42b15274bc ci(codeowners-plus): fetch PR head before trying to diff against it (#15486) 2026-07-19 22:35:00 +02:00
myamusashiandGitHub 271b0d1eb4 desktop/focusstate: restore keyboard focus after layer closed (#15419) 2026-07-19 14:14:19 +02:00
Tom EnglundandGitHub 0a5aa45bc1 windowstate/layerstate: don't dynamic_cast a view's self-ptr during destruction (#15471)
* windowstate/layerstate: don't dynamic_cast a view's self-ptr during destruction

The view.destroy listeners erase_if'd their containers by evaluating
dynamicPointerCast<IView>(x->m_self). Since the event is emitted from
~IView, the matching view's derived member m_self is already destroyed
by then, so reading it is UB. Compare control-block identity via
PHLVIEWREF{x} instead, which never dereferences the dying object.

* iview: remove pointless destroy listener

CWindow/Layers calls removeSafe in their own onDestroy,
the best way to avoid buggy code is by simply not doing it at all :)
2026-07-19 12:56:43 +02:00
Tom EnglundandGitHub abc2ecf1d4 presentation: ensure feedbacks arent silently dropped (#15473)
earlier codex complaint, if empty fifo commit happend but contained
feedbacks it was silently dropped. also at the same time the only time
we should discard current feedbacks if there are any is when a new
buffer appears.

add a presentation bit flag, set it in onGetFeedback.
2026-07-19 11:59:52 +02:00
vaxerskiandgithub-actions[bot] ef903b8927 [gha] Nix: update inputs 2026-07-19 08:22:22 +00:00
littleblack111andGitHub c3e2d14db4 input-capture: permission type not in lua config (#15481) 2026-07-19 10:20:51 +02:00
Tom EnglundandGitHub 55ce25bd67 animation: dont .lock() a uniqueptr (#15470)
animationManager.hpp does makeUnique<CAnimatedVariable<VarType>>() , so
this has never worked.
2026-07-18 09:24:42 +02:00
Tom EnglundandGitHub 466f6bc53f protocols/presentation: associate feedback with committed surface state, attempt 2 (#15459)
* Revert "presentation: revert "associate feedback with committed surface state (#15243)""

This reverts commit 4a753eaa03.

* presentation: fix WP locks and discard failed draws

the reason it stopped working is last change that PR
did was moving from raw ptrs to UP's with WP's but tried to .lock() the
WP, we cant lock a WP that points to a UP.

also ensure all draws that isnt visible or simply failed creating
texture or invalid sizes discard in elementrenderer. and all others
present.
2026-07-17 23:54:38 +02:00
Tom EnglundandGitHub 116e636fc0 frame: fix frame scheduling being skipped or one vblank off (#15404)
* frame: fix frame scheduling being skipped or one vblank off

in renderer we need to check if we have pending damage, needsFrame can
be cleared by commits that was done while pageflip was in flight.

m_renderingActive also needs to be set after actually comitting.

add a commitTimingTarget that we check against on presentation otherwise
the committiming timer runs only on duration and might miss the upcoming
vblank period as in always being one vblank late. and use the timespec
we get from presentation.

* frame: skip early release on invalid timestamp

skip early release on invalid timestamp, and rely on the timer timeout
if missing.

makes the presented signal emit a std::optional timestamp instead.

* frame: only early release for single output

if the surface entered multiple outputs, we cant early release it
because they flip at different times and might make it release way
before the flip of the other monitor.

* frame: anchor commitTimingTarget to the client timestamp

get the absolute target directly from the requested timestamp.
reset commitTimingTarget if delay is 0, and reset it in SSurfaceState
reset.

* frame: fix codex complaints

use fromTimespec so "C++ steady-clock epoch does not exactly match
CLOCK_MONOTONIC" doesnt occur. unify the timespec code in both
monitor and commit timing protocol. always send the timespec on monitor
presented signal.
2026-07-17 23:53:09 +02:00
DreguandGitHub 26c0b380f4 pointer-warp: fix forgetting enter serial (#15462)
* pointer-warp: fix forgetting enter serial

* fix 4am code
2026-07-17 23:52:23 +02:00