Commit graph

7270 commits

Author SHA1 Message Date
Visal Vijay
222f19b5e0
Merge f1d768f75a into 1681bea42d 2026-05-06 16:49:34 +01:00
Vaxry
1681bea42d
config/lua: add simple layout API (#14258)
Adds a simple layout lua api
2026-05-06 13:56:12 +01: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