Commit graph

1686 commits

Author SHA1 Message Date
Nikolai Nechaev
40d8fa8491
compositor: Configurable behavior when window to be focused conflicts with fullscreen (#12033)
Renames `misc:new_window_takes_over_fullscreen` into
`misc:on_focus_under_fullscreen` and implements the following behavior:

- By default, when a tiling window is being focused on a workspace where
  a fullscreen/maximized window exists, respect
  the `misc:on_focus_under_fullscreen` config variable.
2025-11-25 22:44:26 +00:00
bea4dev
2b0fd417d3
animation: improve animations on multi refresh rate monitors (#12418) 2025-11-23 15:48:15 +00:00
Hleb Shauchenka
c5d45b7653
hyprctl: fix no_vrr prop ref (#12410) 2025-11-20 22:40:39 +00:00
Vaxry
c249a9f4b8
windowrules: fix group rule recalcs (#12403) 2025-11-20 16:57:31 +00:00
Vaxry
c2670e9ab9
windowrules: rewrite completely (#12269)
Reworks the window rule syntax completely

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2025-11-17 18:34:02 +00:00
Giacomo Zama
b04e8e00b0
cursor: fix m_cursorSurfaceInfo not being updated while a cursor override is set (#12327) 2025-11-16 17:43:55 +00:00
Vaxry
e616e595ae
i18n: init localization for ANR, Permissions and Notifications (#12316)
Adds localization support for en, it, pl and jp

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
Co-authored-by: Aaron Blasko <blaskoazzolaaaron@gmail.com>
2025-11-16 14:51:14 +00:00
Alexandru Spînu
b35f78431f
cursor: ensure cursor reset on changed window states (#12301) 2025-11-15 19:23:32 +00:00
Luke Barkess
308226a4fc
config/keybinds: add a submap universal keybind flag (#12100) 2025-11-11 22:59:21 +00:00
bea4dev
ee2168c665
renderer/ime: fix fcitx5 popup artifacts (#12263) 2025-11-11 20:43:43 +00:00
Vaxry
061981201d
core: qtutils -> guiutils (#12231)
* core: qtutils -> guiutils

* nix: qtutils -> guiutils

* flake.lock: update

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2025-11-07 15:48:13 +00:00
Tom Englund
8e8bfbb0b1
protocols: add Fifo-v1 and commit-timing-v1 (#12052)
* protocols: add Fifo-v1

introduce fifo-v1

* fifo: only present locked surfaces

dont present to unlocked surfaces and commit pending states from the
fifo protocol.

* fifo: cformat

cformat

* protocols: add committiming and surface state queue

introduce CSurfaceStateQueue and commit-timing-v1

* fifo: schedule a frame if waiting on barrier

if we are waiting on a barrier the state doesnt commit until the next
refresh cycle meaning the monitor might have no pending damage and we
never get onPresented to unlock the barrier, moment 22. so schedule a
frame.

* fifo: properly check monitor intersection

check for m_enteredoutputs or monitor intersection if client hasnt bound
one yet, and dont fifo lock it until the surface is mapped.

* buffer: try to merge states before committing them

try to merge states before committing them meaning way less churn and
surface commits if a surface sends multiple small ones while we wait for
buffer readyness from either fifo locks or simply fences.

* buffer: dont commit states past the buffer

certain changes are relative to the buffer attached, cant go beyond it
and apply those onto the next buffer.

* buffer: set the lockmask directly

cant use .lock since the state hasnt been queued yet, set the lockmask
directly when exporting buffer fence.

* fifo: dont fifo lock on tearing

dont fifo lock on tearing.

* buffer: queue the state directly

queue the state directly and use the .lock function instead of directly
modify the lockMask on the state.

* buffer: revert creating texture at commit time

fifo barriers introduces such long wait that upon commit time a
race happends with current xdg configure implentation that the buffer
and image is actually destroyed when entering commitState, doing it at
buffer creation time with EGL_PRESERVED_KHR means it sticks around until
we are done. so revert 82759d4 and 32f3233 for now.

* buffer: rename enum and lockreasons

eLockReason and LOCK_REASON_NONE.

* fifo: workaround direct scanout lock

workaround cursor commits causing fifo to get forever locked, this
entire thing needs to be worked out.
2025-11-06 13:25:49 +00:00
Vaxry
5e6cec962c
cursor: refactor override handling (#12166)
much cleaner and more reliable. Should fix https://github.com/hyprwm/Hyprland/issues/12088
2025-10-31 00:14:08 +00:00
Vaxry
431325ff0c
config/rule: don't populate ID field for automatically id-managed workspaces 2025-10-27 21:29:35 +00:00
JS Deck
88e34d7dd2
IME: do not share keys/mods states from grabbed keyboards with ime keys/mods (#11917) 2025-10-26 18:54:48 +00:00
Vaxry
057695bc3f
desktopAnimationMgr: don't set fade 0 for members of a fs group (#12091)
fixes a flash of opacity that shouldnt be there
2025-10-22 11:32:42 +01:00
Mozzarella32
46dab01bcc
renderer: add more uniforms to the screen shader (#11986)
These are: pointer_shape from the cursor-shape-v1 protocol prepared for v2, along with left_ptr...bottom_right_corner and killing (Hyprland specific)
           pointer_shape_previous with
           pointer_switch_time to blend between shapes
           pointer_size scaled size as used by the normal cursor
           pointer_pressed_positions[32] with
           pointer_pressed_times[32] and
           pointer_pressed_killed(32 bits) for click/touch animations and if they killed something
           pointer_inactive_timeout with
           pointer_last_active to smoothly fade the pointer out
           pointer_hidden to hide it when the cursor is hidden (excluding by cursor:invisible as this config value can be used to turn off the normal cursor, which is useful when drawing it with the screen shader)
2025-10-20 12:22:50 +01:00
0rtz
a4200acfa6
input: fix refocus on grab dismiss (#12014) 2025-10-20 12:13:27 +01:00
MithicSpirit
59ff7b2f89
dispatchers: add forceidle (#11922)
The forceidle dispatcher resets all ext-idle-notify timers as if the
user had been idle for the specified number of seconds. If a
notification has already fired, but would now be set with a nonzero
delay, then it is reset. Conversely, if a timer has not yet fired, but
would now be set to a nonpositive delay, then it is immediately fired.
This process ignores any existing inhibitors, but timers are otherwise
reset as normal if any new inhibitors are created or destroyed.
2025-10-19 13:54:27 +02:00
ItsOhen
d599513d4a
config: add automatic closing to submaps (#11760)
* Allow submaps to auto reset to parent.

* Really should be a stack instead.

If hyprlang would allow for { } i would be so happy.

* Fixed: Somewhat better way to do it..

Lets you define what submap you want to go to instead.

* squash! Fixed: Somewhat better way to do it..

* God i hate cf..

* Force clang-format on the whole thing..

* Removed {}.

* Added tests

Tests and reset fix.
2025-10-11 02:40:18 +02:00
epsilonshmepsilon
6a01c399a9
input: add option to rotate device input (#11947) 2025-10-10 17:05:51 +02:00
Linux User
0dc45b54f3
managers/helpers: add missing includes (#11969)
* managers: include string header

Fixes error `implicit instantiation of undefined template 'std::basic_string<char>'` on llvm/musl

* helpers: include unistd header

Fixes error `use of undeclared identifier 'pipe'` on llvm/musl
2025-10-08 22:24:40 +02:00
Nj0be
ba24547d3d
dispatchers: add set, unset and toggle to fullscreen (#11893)
Add set, unset and toggle to fullscreen
2025-10-08 11:07:55 +01:00
rfresh2
73f06434a4
keybinds: fix repeat and long press keybinds release (#11863) 2025-10-06 21:10:56 +02:00
Vaxry
43fb4753fc
gestures: fix gesture direction detection (#11852) 2025-09-29 12:29:40 +01:00
usering-around
766acadcf1
seat: release depressed modifiers on leave (#11854) 2025-09-28 00:05:30 +02:00
Nikolai Nechaev
29b103c376
exec: Spawn processes as direct children (#11735)
* exec: Spawn processes as direct children

Spawn processes as children rather than grandchildren.
This way, spawned processes may track Hyprland's state
by watching their parent, either directly or indirectly
(e.g., Linux's `PR_SET_PDEATH_SIG`).

Fixes #11728

* tests/exec: Add the test on process spawning

Add a test that ensures that:
- A spawned process remains a direct child of Hyprland;
- Upon termination, the process does not become a zombie.
2025-09-23 19:32:48 +02:00
JS Deck
838439080a
vkeyboard: update cached mods before IME; add share_states = 2 config option (#11720) 2025-09-20 17:57:39 +02:00
Vaxry
4fc95d646d
renderer: asynchronously load background tex (#11749)
Bumps required hyprgraphics to 0.1.6

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2025-09-18 22:10:30 +02:00
nikitax44
5648077978
animation: fix slide/slidefade to accept forced direction (#11725) 2025-09-18 13:53:28 +02:00
Vaxry
4a9c4dbc04
gestures/fs: fix typo
fixes #11678
2025-09-15 22:30:08 +01:00
Vaxry
559024c331
gestures/float: fix typo 2025-09-14 01:52:41 +01:00
Stanislav Senotrusov
adbf7c8663
input: handle tablet active area scaling when axes swap due to rotation (#11661)
Some tablet rotation modes (90°, 270°, and flipped variants) swap the X and Y axes.
This change adjusts the effective physical size based on axis orientation
to ensure tablet active area coordinates are normalized correctly.
2025-09-13 01:11:30 +02:00
0xFMD
797bfe905e
dispatchers: fix movecursor not updating client pos (#11672) 2025-09-11 21:52:30 +02:00
usering-around
38169c8fdd
input: support xkb v2 format (#11482) 2025-09-11 19:42:20 +02:00
Maximilian Seidler
b8cff8a434
input: focus when first keyboard is added and m_lastFocus is set (#11645) 2025-09-10 12:22:45 +02:00
Vaxry
1e3a06560f
gestures: add unset
ref https://github.com/hyprwm/Hyprland/pull/11490
2025-09-08 20:24:51 +01:00
0xFMD
56dd1124ab
animation: fix slide/slidevert to accept params (#11574) 2025-09-06 19:24:17 +02:00
Vaxry
127aab8159
input: add per-device scroll-factor (#11241) 2025-09-02 13:16:43 +02:00
0xFMD
5bb8adbc32
dispatchers: allow window address in swapwindow (#11518) 2025-08-31 18:14:39 +02:00
Ikalco
ea42041f93
protocols: implement pointer-warp-v1 (#11469) 2025-08-29 22:16:40 +02:00
Vaxry
81bf4eccba
input: Add fully configurable trackpad gestures (#11490)
Adds configurable trackpad gestures
2025-08-28 11:20:29 +02:00
Tom Englund
b329ea8e96
syncobj: use rendernode for timelines (#11087)
* syncobj: use rendernode for timelines

use rendernode for timelines instead of the drmfd, some devices dont
support to use the drmfd for this.

* opengl: use rendernode if available

use rendernode if available for CHyprOpenglImpl

* MesaDRM: use the m_drmRenderNodeFD if it exist

try use the rendernode we got from AQ if it exist.

* linuxdmabuf: use rendernode if available

use the rendernode if available already from AQ

* syncobj: prefer rendernode over displaynode

prefer the rendernode over the displaynode, and log a error if
attempting to use the protocol without explicit sync support on any of
the nodes.

* syncobj: check support on both nodes always

check support on both nodes always so it can be used later for
preferring rendernode if possible in syncobj protocol.

* syncobj: remove old var in non linux if else case

remove old m_bDrmSyncobjTimelineSupported from non linux if else case
that will fail to compile on non linux. the nodes sets support by
default to false, and if non linux it wont check for support and set it
to true.

* build: bump aq requirement

bump to 0.9.3 where rendernode support got added.

* flake.lock: update

* renderer: glfinish on software renderer

software renderers apparently bug out on implicit sync, use glfinish as
with nvidia case on implicit paths.

* flake.lock: update

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2025-08-24 22:32:13 +02:00
Tom Englund
ced38b1b0f
disable buffer readability checks on intel (#11515)
* dmabuf: disable buffer read check on intel

readability checks directly on buffer fds on some intel laptops is
broken, see https://gitlab.freedesktop.org/drm/intel/-/issues/9415

* sync: use rvalue ref in addwaiter doonreadable

use rvalue reference in addwaiter and doonreadable, because we store the
function in the SReadableWaiter a lot of the time, move it into place
there when that happends or let it go out of scope after function call.
2025-08-24 08:57:37 +01:00
Hleb Shauchenka
fdf1612f0f
windowrules: Add novrr dynamic window rule (#11370) 2025-08-22 10:48:42 +01:00
vaxerski
1ac1ff457a touch: detach from pointer input
this detaches touch from pointer input. Touch should not affect where your cursor is, and it doesn't make much sense for it to move when we use touch
2025-08-20 13:01:31 +02:00
vaxerski
9a20206945 touch: fix popup coordinates for touch down
fixes #10626
2025-08-20 12:22:18 +02:00
Vaxry
251288ec59
renderer: add dpms animations (#11452) 2025-08-17 08:37:13 +01:00
Nihal Jere
aaedce596e
protocols: implement ext-data-control (#11323)
This protocol has superseded wlr-data-control
2025-08-15 15:38:28 +01:00
vaxerski
60d769a899 internal: unify VT getting 2025-08-14 17:13:23 +02:00