summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* compositor: recalculate workspace state after fs state update (#14369)mainVaxry2026-05-082-1/+55
|
* keybind/actions: `cycle_next` w/ `tiled = true` doesn't choose only tiled ↵erstarr2026-05-082-4/+80
| | | | | | | | | windows (#14164) * fix tiling only selection: actually select only tiling when chosen * clang-format * test: cycle_next float only and tiled only
* build: bump hyprutils to 0.13.1 (#14365)phanium2026-05-082-4/+4
| | | Fail to build from source
* algo/scrolling: various scrolling view related bugfixes (#13974)erstarr2026-05-0829-51/+863
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix scrolling view move when a grouped window is closed - prevent redundant space assignment for a grouped window that's about to be unmapped, add a `FOCUS_REASON` for unmapping grouped windows * fix focus_fallback after unmapping a window floating moving view * fix view change when changing workspaces (special and normal). add an optional `RECALCULATE_REASON` parameter to `recalculate()` calls of all algorithms. add an optional `RECALCULATE_MONITOR_REASON` parameter to `recalculateMonitor()` calls. add 2 new `FOCUS_REASON`s, for workspace change and special workspace toggle * Fix hyprctl keyword causing scrolling view move. rename INPUT_MODE_KB to INPUT_MODE_HARD since it seems to have little to do with keybinds * fix fullscreen/maximise moving the scrolling view * fix opening of layer 3 programs moving scrolling view * refactor, clean up and clang-format * fix bad decisions * fix includes, clang-format. * remove TODO * `focuswindow` no longer moves scrolling view when `follow_focus = 0` * fix: changes in a group's current window no longer casues scrolling view shift when `follow_focus = 0` * fix: `moveintogroup`, `movewindoworgroup` no longer causes scrolling view change if `follow_focus = 0` * clang-format * add `RECALCULATE_REASON_UNKNOWN`, `RECALCULATE_MONITOR_REASON_UNKNOWN`, `REMOVE_FROM_GROUP_REASON_UNKNOWN` remove optional wrapper from their enums, refactor code to work with the change * dispatches that call `switchtoWindow()` in CKeybindManager no longer cause scrolling view to move if `follow_focus = 0`. They still cause the move if `follow_focus = 1` Dispatches effected by this: `movefocus`, `cyclenext`, `focuscurrentorlast`, `focuscurrentorurgent` * Fix for Lua: switchToWondow * Fix for Lua: focus({window}) * Fix for Lua: Move Window Into Group * clang-format * Drop `hyprctl keyword` change * test: `focus({window})` with `follow_focus = false` * test: `focus({window})` with `follow_focus = true` * test: test Focus Fallback * test: Focus Fallback with groups * test: workspace change * test: special workspace toggle * test: workspace change - special to special also minor refactoring * test: close window in a group * test: move window into group `follow_focus = false` minor fix in test: expect -> assert * test: move window into group `follow_focus = true` * test: new layer * test: maximise fix in test: expect to assert. * test: fullscreen * test: `dispatch window.focus({ direction })` when `follow_focus = false` * test: `dispatch window.focus({ direction })` when `follow_focus = true` test-fix: expect -> assert * test: move focus within group when `follow_focus = false` * test: move focus within group when `follow_focus = true` * test-fix: kill all layers before killing all windows in layers test. prevents internal post test cleanup function failing to kill all layers test-fix: maximized and fullscreen swapped between their tests test-fix: testScrollingViewBehaviourMoveFocusInGroupFollowFocusTrue missing layout initialization test-fix: testScrollingViewBehaviourWorkspaceChange, testScrollingViewBehaviourCloseWindowInGroup have stale window class in a comment clang-format * catch up with main: move to new test function * clean-up the clean-up part of the tests: redundant * clang-format * pain * suffering: fix rebase fail * test: manually kill all layers since the cleanup function fails * remove test: fullscreen and maximise. scrolling has its own behaviour now
* renderer: fix shadow CM calculations (#14364)Vaxry2026-05-082-8/+9
|
* config: allow hashes for parsing colors (#14337)Vaxry2026-05-0818-195/+277
|
* desktop/workspace: fix visibility criteria matching (#14349)Vaxry2026-05-083-2/+56
| | | ref https://github.com/hyprwm/Hyprland/discussions/14233
* layout/scrolling: fix edge detection in recalculate() (#14359)Vaxry2026-05-082-4/+10
| | | ref #14339
* cmake: fix permissions for directories by defaultVaxry2026-05-081-0/+6
|
* repo: ignore the autogen file `meta/hl.meta.lua` (#14336)erstarr2026-05-082-1247/+3
|
* config: always call refresh after config reload (#14346)Vaxry2026-05-082-4/+2
|
* config: find lua paths first (#14335)Mihai Fufezan2026-05-082-30/+17
| | | | | * config: find lua paths first * config/supplementary/jeremy: use designated initializer list
* gestures: add scroll_move (#14063)Vaxry2026-05-077-4/+349
|
* renderer: more FP16 fixes (#14070)UjinT342026-05-0728-271/+607
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix fp16 blur with invalidation * restore tonemap code * fix fade outs * add sdr compat for unaware surfaces * use a better work space, not linear, only for sdr * fix hl tf -> wp tf * cache workbuffer descriptions * linear not normalised WIP * clear offload fb * CM math * fix includes * use precalculated cm for shadows * inner glow cm * quad cm * fix unmodified copy * codegen * cache color CM * mark blur dirty when CM/DS changes * avoid icc workbuffer * fp16 blur finish hack * fix output hdr luminances * use srgb for mirroring/sharing with fp16 * defaults people --------- Co-authored-by: Vaxry <vaxry@vaxry.net>
* hl.mata.lua: add string to NotificationOptions's icon param. (#14334)erstarr2026-05-071-1/+1
|
* i18n: update brazillian portuguese (pt_BR) translation (#14248)Nakaeri2026-05-071-0/+13
|
* layout/scrolling: handle fullscreen manually (#14190)Vaxry2026-05-0730-165/+834
| | | Makes scroll handle fullscreen by itself, allowing for fs scrolls.
* meta/stubs: fix notification icon type (#14320)Maxim Andreev2026-05-071-1/+1
|
* cmake: remove dependence on hyprland.confVaxry2026-05-074-7/+3
|
* config: use lua by default, generate lua if no config presentVaxry2026-05-076-22/+34
|
* example: remove old .conf fileVaxry2026-05-071-340/+0
|
* propRefresher: fix misnamed valueVaxry2026-05-061-1/+1
|
* config/legacy: fix missing fallbacks crashing device gettersVaxry2026-05-061-4/+20
|
* config: fix propRefresher to not run on first launchVaxry2026-05-065-64/+20
|
* config/lua: fix device bool int reads (#14313)ImperishableSecret2026-05-0615-9/+79
| | | | | * config/lua: fix device bool int reads * config/lua: fix device typed reads
* config/lua: add simple layout API (#14258)Vaxry2026-05-0623-37/+1133
| | | Adds a simple layout lua api
* config/refresher: refresh watcher state properly (#14307)Vaxry2026-05-065-6/+7
| | | ref #14301
* config/refresher: fix refreshing of cursor zooms (#14283)Vaxry2026-05-065-16/+19
|
* [gha] Nix: update inputsvaxerski2026-05-051-18/+18
|
* groups: add groupbar middle_click_close option (#14242)Maxim Andreev2026-05-054-3/+49
|
* config: add device tags (#13728)ArchSav2026-05-059-3/+31
| | | | | --------- Co-authored-by: Mio Argillander <mio@argillander.me>
* windows/focus: add fallbacks when focussing workspaces (#14270)fazzi2026-05-046-12/+29
|
* config/legacy: fix crash on getConfigValue of plugin fnsVaxry2026-05-041-0/+9
|
* render: scale background to monitor resolution (#14250)davc0n2026-05-042-12/+61
| | | | | | | | | | | | | * render: scale background to monitor resolution Currently the background is not scaled, e.g. 8k size image always uses ~128Mb of VRAM. We could reduce the consumption for low-end devices and monitors with lower resolution: - ~8Mb for 1080p - ~16Mb for 2k - ~32Mb for 4k * render: use gpu to scale bgtex and fix missing reset on size change
* tests: skip pointer tests in CI due to missing input environment (#14238)Visal Vijay2026-05-032-1/+6
| | | | | | | | | | | | | | | * tests: skip pointer tests when pointer input is non-functional * tests: skip pointer tests in CI due to unreliable cursor behavior * tests: skip pointer tests when no reliable input environment is available * tests: skip pointer tests when pointer behavior is unreliable * tests: temporarily disable pointer tests due to unstable CI environment * tests: enforce deterministic pointer behavior (flat accel + fixed sensitivity) * tests: temporarily disable pointer tests due to unstable CI environment
* config/lua: add clear tag api (#14273)Lichie2026-05-036-0/+36
|
* config/lua: fix dispatcher shapes to not be callable (#14268)Vaxry2026-05-037-62/+215
| | | this would only lead to abuse, explicitly forbid it
* compositor: move SessionLockManager init from STAGE_LATE to STAGE_BASICINIT ↵Maximilian Seidler2026-05-031-3/+3
| | | | (#14272)
* InputManager: add guards to confineToRegion to avoid issues (#14269)fazzi2026-05-031-0/+6
|
* sessionLock: send locked instead of denied when missing a lock frame for 5 ↵Maximilian Seidler2026-05-032-21/+16
| | | | | | | | | | | | | | | | seconds (#14271) The protocol seems to allow this, because it explicitly mentions either session lock surface or compositor blanking the output in this sentence: > The locked event must not be sent until a new "locked" frame (either from a session lock surface or the compositor blanking the output) has been presented on all outputs and no security sensitive normal/unlocked content is possibly visible. Since `locked_screen_delay` is capped to 5 seconds, after the 5 seconds this timer is registered for, we assume that all outputs are covered either by lockedead or by an actual lock frame. Thus sending locked is ok.
* desktop/windowRule: add parser switch for confine pointer (#14263)fazzi2026-05-021-0/+1
|
* layout/master: fix rollprev/rollnext focusing the wrong window (#14209)Kyler Clay2026-05-022-4/+81
| | | | | * layout/master: fix rollprev/rollnext focusing the wrong window * tests/master: add tests for rollnext/rollprev focus
* cmakelists: fixup errors failing build on arch ci (#14259)Vaxry2026-05-021-0/+2
|
* screenshare: round captureBox after scaling to fix region capture at ↵Tony Miller2026-05-021-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | fractional scales (#14257) After scaling m_captureBox from logical to pixel coordinates, the box may have non-integer dimensions (e.g. logical 401x301 at scale 1.25 -> pixel 501.25x376.25). m_bufferSize is then computed as captureBox.size() and sent to the client as int32 width/height (truncating the fraction), but m_bufferSize itself stays as a fractional Vector2D. When the client allocates the integer-sized buffer and submits it, CScreenshareFrame::share() rejects it with ERROR_BUFFER_SIZE because Vector2D::operator== is exact double comparison: (501, 376) != (501.25, 376.25). The frame is sent failed, and the client retries forever. The SHARE_WINDOW path already rounds its bufferSize; the SHARE_REGION path didn't. Round the captureBox immediately after scaling so all downstream consumers (m_bufferSize, render translates) see clean integer pixel coordinates. Reproducer at scale 1.25 on a 1920x1080 monitor: wf-recorder -g '500,200 401x301' -f /tmp/x.mp4 # "Failed to copy frame, retrying..." until exit wf-recorder -g '500,200 400x300' -f /tmp/x.mp4 # works (400*1.25=500, 300*1.25=375, both integer)
* internal: improve cursor size logging (#14180)Niko Savola2026-05-021-2/+2
|
* desktop/windowRule: add `confine_pointer` window rule (#13379)fazzi2026-05-026-27/+55
|
* hyprctl: fix bools in getoptionVaxry2026-05-021-0/+4
|
* keybinds: fix keycode matching on lua (#14254)Vaxry2026-05-024-33/+66
|
* config/lua: workspace.move/rename should accept "workspace" instead of "id" ↵Gregor2026-05-021-3/+3
| | | | as a parameter (#14232)
* renderer: only set presentationmode when required (#14252)Tom Englund2026-05-021-2/+3
| | | | if guard the setPresentationMode with the current state, shows up in profiling as minor waste on each frame.