Commit graph

7258 commits

Author SHA1 Message Date
Matteo Golinelli
fc63e74c2b InputManager: Fix touch monitor focus ordering 2026-05-06 17:10:10 +02:00
Vaxry
5f1350f522
config/refresher: refresh watcher state properly (#14307)
ref #14301
2026-05-06 13:35:37 +01:00
Vaxry
6dc42e0f6d
config/refresher: fix refreshing of cursor zooms (#14283) 2026-05-06 12:41:06 +01:00
vaxerski
a531c2ed6b [gha] Nix: update inputs 2026-05-05 15:32:56 +00:00
Maxim Andreev
d6aa6af5b3
groups: add groupbar middle_click_close option (#14242) 2026-05-05 16:31:09 +01:00
ArchSav
497b48e852
config: add device tags (#13728)
---------

Co-authored-by: Mio Argillander <mio@argillander.me>
2026-05-05 16:30:19 +01:00
fazzi
eff3bfe261
windows/focus: add fallbacks when focussing workspaces (#14270) 2026-05-04 17:00:56 +01:00
2824ffdda0
config/legacy: fix crash on getConfigValue of plugin fns 2026-05-04 16:17:48 +01:00
davc0n
33044c3816
render: scale background to monitor resolution (#14250)
* 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
2026-05-04 16:08:27 +01:00
Visal Vijay
6d4bcaf075
tests: skip pointer tests in CI due to missing input environment (#14238)
* 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
2026-05-03 21:37:41 +01:00
Lichie
6a7abd0037
config/lua: add clear tag api (#14273) 2026-05-03 18:55:47 +01:00
Vaxry
21fa9b2ee2
config/lua: fix dispatcher shapes to not be callable (#14268)
this would only lead to abuse, explicitly forbid it
2026-05-03 15:41:44 +01:00
Maximilian Seidler
c0933bffcf
compositor: move SessionLockManager init from STAGE_LATE to STAGE_BASICINIT (#14272) 2026-05-03 15:30:21 +01:00
fazzi
90fe7c6569
InputManager: add guards to confineToRegion to avoid issues (#14269) 2026-05-03 15:00:16 +01:00
Maximilian Seidler
aa5e38041e
sessionLock: send locked instead of denied when missing a lock frame for 5 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.
2026-05-03 14:58:03 +01:00
fazzi
6ec0228c38
desktop/windowRule: add parser switch for confine pointer (#14263) 2026-05-02 23:12:49 +01:00
Kyler Clay
fe17cea39e
layout/master: fix rollprev/rollnext focusing the wrong window (#14209)
* layout/master: fix rollprev/rollnext focusing the wrong window

* tests/master: add tests for rollnext/rollprev focus
2026-05-02 21:41:29 +01:00
Vaxry
5202ab22f5
cmakelists: fixup errors failing build on arch ci (#14259) 2026-05-02 21:06:10 +01:00
Tony Miller
334b361c8d
screenshare: round captureBox after scaling to fix region capture at 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)
2026-05-02 21:06:00 +01:00
Niko Savola
f60e50da00
internal: improve cursor size logging (#14180) 2026-05-02 20:36:14 +01:00
fazzi
e180c59b46
desktop/windowRule: add confine_pointer window rule (#13379) 2026-05-02 20:34:43 +01:00
30cd345add
hyprctl: fix bools in getoption 2026-05-02 19:23:09 +01:00
Vaxry
a3fa7b4950
keybinds: fix keycode matching on lua (#14254) 2026-05-02 19:18:44 +01:00
Gregor
fceb15979e
config/lua: workspace.move/rename should accept "workspace" instead of "id" as a parameter (#14232) 2026-05-02 17:22:02 +01:00
Tom Englund
c3e07986cc
renderer: only set presentationmode when required (#14252)
if guard the setPresentationMode with the current state, shows up in
profiling as minor waste on each frame.
2026-05-02 16:24:20 +01:00
c065e951d6
layout/dwindle,master: return invalid layoutmsg errors 2026-05-02 00:26:35 +01:00
Barrett Ruth
f9723133cc
gestures: add live pinch cursor zoom (#14049) 2026-05-02 00:02:01 +01:00
Vaxry
c7b8fe13c1
tests: fix gtests crashing (#14244) 2026-05-01 23:50:57 +01:00
Vaxry
6e1fcfa81e
hyprctl: fix getoption with custom types (#14243) 2026-05-01 23:50:26 +01:00
Eren
4ab3a40398
screenshare: adjust session cleanup and event emission order (#14229)
* fix(screenshare): adjust session cleanup and event emission order

Revised the handling of `stoppedListener` initialization in
`getManagedSession` to ensure correct scoping and lifecycle management.
Updated the `stop` method in `CScreenshareSession` to adjust the order
of `screenshareEvents` and `stopped.emit()` to prevent potential
use-after-free scenarios.

* fix(screenshare): ensure managedSession removal uses consistent target reference

This change updates the lambda in the stopped listener to use
a pre-fetched target pointer for comparison when erasing sessions.

* fix(screenshare): use early-return and smart ptr comparison in session cleanup
2026-05-01 23:50:02 +01:00
5f9df52b55
protocolMgr: set m_self properly when updating mirrored outputs
When we have onMonitorModeChange, we can't leave an output with a null m_self as that will fuck up other things wanting a ref

ref https://github.com/basecamp/omarchy/issues/5457
2026-05-01 15:40:11 +01:00
241eeae51a
config/lua: add noop 2026-05-01 12:50:55 +01:00
Maxim Andreev
e2ba19535d
tests: fix ConfigLuaValueTypes - boolBadType test, 0 and 1 are allowed integer values for bool type (#14240) 2026-05-01 12:39:16 +01:00
Visal Vijay
a45de66d22
cleanup: avoid repeated weak_ptr::lock() usage in MasterAlgorithm (#14226) 2026-04-30 22:48:14 +01:00
Vaxry
c6fc1cab99
helpers/systemInfo: extract info fns (#14222) 2026-04-30 22:31:29 +01:00
Vaxry
450d8a0bf7
xdg-shell: queue state updates for toplevel (#14227)
ref https://github.com/hyprwm/Hyprland/discussions/14224
2026-04-30 20:41:55 +01:00
cfb2deb664
splashes: update splashes 2026-04-30 20:41:27 +01:00
shezdy
546cc71565
config/workspace-rules: support modifying persistent and monitor (#14217)
* workspace rules: support modifying persistent and monitor

* support modifying isDefault
2026-04-30 20:10:03 +01:00
Zebra2711
bac49db9a1
monitor: fix centered floating windows off-screen in special workspace (#14203)
Signed-off-by: Zebra2711 <zebra2711t@gmail.com>
2026-04-30 19:38:05 +01:00
Vaxry
859bbb11e1
config/actions: fix misuse of ActionResult's error type (#14221) 2026-04-30 14:30:18 +01:00
MightyPlaza
8884b9e6ce
binds: add an auto_consuming flag (#13919) 2026-04-30 12:59:03 +01:00
phanium
d40860e8e2
config/lua: cannot disable animation (#14215)
* config/lua: cannot disable animation

seems regression from 9ee5ff1f71

* typing typo (auto generated by cmake)
2026-04-30 12:53:51 +01:00
2ff598896d CI/Nix/Test: check gtest exit status 2026-04-30 11:15:32 +03:00
ImperishableSecret
56d7a43102
config/lua: expand properties in the workspace object (#14194) 2026-04-29 22:13:15 +01:00
31e025dbe0 desktop/window: refactor over fullscreen state 2026-04-29 22:05:32 +01:00
55a1611fd8 desktop/window: expand hidden into proper states 2026-04-29 22:05:32 +01:00
a92dae5af7 desktop/window: add alpha container for alpha calculations 2026-04-29 22:05:32 +01:00
Niko Savola
6bd15b948f
main: improve error reporting during initialization in main.cpp (#14181) 2026-04-29 22:04:28 +01:00
Vaxry
9ee5ff1f71
animations: add springs (#14171) 2026-04-29 21:31:06 +01:00
Nikolai Nechaev
45ffaee093
tests: Fix more tests failing on CI (#14159)
* tests: Relax color management requirements in the colors test

This continues the work from d4dd299 (#14142):
- Fixes a missed check assuming a fixed value for `colorManagementPreset`
- Stricten checks to require that the expected keywords are present as json keys

* tests: Refactor `Tests::getAttribute` (was `Tests::getWindowAttribute`)

- Improve ergonomics by consistently handling attribute name;
- Remove 'window' from the function name, since it is compatible with
  other responses too;
- Document the function.

* tests: Fix solitary test assuming it knows the complete set of blockers

The test was failing on the CI because new blockers appeared,
which were not expected by the text. Fix the test, so that it
just checks the set of expected blockers is a subset of actual
blockers
2026-04-29 18:32:06 +01:00