Commit graph

6790 commits

Author SHA1 Message Date
vaxerski
39f3feddbe [gha] Nix: update inputs 2026-01-23 13:15:35 +00:00
c86e56ed6c
version: bump to 0.53.2 2026-01-23 13:13:43 +00:00
df8a24c0d9
hyprpm: use provided pkgconf env if available
this is required for hyprpm to work under nix develop
2026-01-23 13:13:30 +00:00
Naufal Hisyam Muzakki
a213321a82
desktop: restore invisible floating window alpha/opacity when focused over fullscreen (#12994) 2026-01-23 13:13:30 +00:00
William Wernert
7e85c6298b
animation: reset tick state on session activation (#13024)
After suspend/wake, the animation tick timer state (m_lastTickValid,
m_tickScheduled) could be stale, causing framerate drops when blur is
enabled. This was introduced in 2b0fd417 which changed the animation
tick timing mechanism.

Reset the tick state when the session becomes active to ensure a clean
state for the animation system.
2026-01-23 13:13:30 +00:00
Luke Barkess
3461022330
hyprerror: clear reserved area on destroy (#13046) 2026-01-23 13:13:30 +00:00
4350f47a33
Nix: re-enable hyprpm 2026-01-23 13:13:30 +00:00
486019e5d5
hyprpm: drop meson dep 2026-01-23 13:13:30 +00:00
e266f8bf51
hyprpm,Makefile: drop cmake ninja build 2026-01-23 13:13:30 +00:00
Tom Englund
65a7093659
anr: remove window on closewindow (#13007)
m_data was never cleaned and continously built up the m_data, remove
the entry on closeWindow.
2026-01-23 13:13:30 +00:00
Vaxry
64818bd14c
desktop/ruleApplicator: fix typo in border color rule parsing (#12995)
ref https://github.com/hyprwm/Hyprland/discussions/12746
2026-01-23 13:13:30 +00:00
6b7fd1da78
desktop/window: avoid uaf on instant removal of a window
ref https://github.com/hyprwm/Hyprland/discussions/12999
2026-01-23 13:13:30 +00:00
Vaxry
6eb6aeb7d2
desktop/workspaceHistory: fix tracking for multiple monitors (#12979) 2026-01-23 13:13:30 +00:00
John Mylchreest
3902945422
desktop/window: track explicit workspace assignments to prevent X11 configure overwrites (#12850)
* fix: track explicit workspace assignments to prevent X11 configure overwrites

Instead of only checking for special workspaces, track when workspaces are
explicitly assigned via window rules or user actions (movetoworkspace).
This prevents onX11ConfigureRequest from overwriting any explicit workspace
assignment based on window position.

Changes:
- Add m_workspaceExplicitlyAssigned flag to CWindow
- Set flag when window rules assign workspace
- Set flag when user moves window via dispatcher
- Check flag in onX11ConfigureRequest instead of just special workspace
- Add debug logging for explicit workspace assignments

* fix: simplify X11 configure request handling for special workspaces

X11 apps send configure requests with positions based on XWayland's
monitor layout, which could incorrectly move windows off special
workspaces.

Skip workspace reassignment when the window is on a special workspace
or staying on the same monitor, but always run z-order, fullscreen flag,
and damage logic since the configure request may include geometry changes.
2026-01-23 13:13:30 +00:00
John Mylchreest
4ac5fc1707
fix: handle fullscreen windows on special workspaces (#12851)
* fix: handle fullscreen windows on special workspaces

inFullscreenMode() only checked m_activeWorkspace, missing fullscreen
windows on special workspaces. This caused crashes and incorrect
behavior when fullscreen windows were on special workspaces.

Changes:
- inFullscreenMode() now checks special workspace first since it
  renders on top of regular workspaces
- Added getFullscreenWindow() helper to safely get fullscreen window
  from either active or special workspace
- Updated callers (shouldSkipScheduleFrameOnMouseEvent, Renderer,
  getFSImageDescription) to use the new helper
- Reset m_aboveFullscreen for layer surfaces when opening, closing,
  or stealing special workspaces between monitors

* test: add special workspace fullscreen detection tests

Add tests for the new special workspace fullscreen handling introduced
in the previous commit. The tests cover:

1. Fullscreen detection on special workspace - verifies that a window
   made fullscreen on a special workspace is correctly detected

2. Special workspace fullscreen precedence - verifies that when both
   regular and special workspaces have fullscreen windows, the special
   workspace window can be focused when the special workspace is opened

3. Toggle special workspace behavior - verifies that toggling the
   special workspace off properly hides it and returns focus to the
   regular workspace's fullscreen window

These tests exercise the key code paths modified in the fix:
- inFullscreenMode() checking special workspace first
- getFullscreenWindow() helper returning correct window
- Layer surface m_aboveFullscreen reset on special workspace toggle
2026-01-23 13:13:30 +00:00
7bc7a7af39
animationMgr: avoid uaf in ::tick() if handleUpdate destroys AV
ref https://github.com/hyprwm/Hyprland/discussions/12840
2026-01-23 13:13:30 +00:00
6874349236
desktop/reservedArea: clamp dynamic types to 0
ref https://github.com/hyprwm/Hyprland/discussions/12880
2026-01-23 13:13:30 +00:00
380c63f8fe
desktop/reservedArea: clamp to 0
ref https://github.com/hyprwm/Hyprland/discussions/12880
2026-01-23 13:13:30 +00:00
50ce5504da
config: don't crash on permission with a config check
ref #12872
2026-01-23 13:13:30 +00:00
Vaxry
f2a42a7783
start: use nixGL if Hyprland is nix but not NixOS (#12845)
---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2026-01-23 13:13:30 +00:00
Hiroki Tagato
7c9fb6e82f
start: add parent-death handling for BSDs (#12863)
* Add parent-death handling for BSDs

prctl() is a system call specific to Linux. So we cannot use it on BSDs.

FreeBSD has a system call procctl() which is similar to prctl(). We can
use it with PROC_PDEATHSIG_CTL.

OpenBSD, NetBSD, and DragonFly BSD do not appear to have a similar
mechanism. So intead of relying on a system call, we need to manually
poll ppid to see if the parent process has died.

With the changes, the spawned Hyprland process is terminated when the
launcher process exits, matching Linux behavior as closely as possible
on BSD platforms.

* Remove ppid polling on OpenBSD, NetBSD, and DragonFly BSD
2026-01-23 13:13:30 +00:00
ItsOhen
49293f031d
config: return windowrulev2 layerrulev2 error messages (#12847) 2026-01-23 13:13:30 +00:00
Hiroki Tagato
e11dbc058f
testers: add missing #include <unistd.h> (#12862)
FreeBSD clang needs the header to be included for read(), write(),
pipe(), close(), etc.
2026-01-23 13:13:30 +00:00
Virt
9a1311e365
pluginsystem: fix crash when unloading plugin hyprctl commands (#12821) 2026-01-23 13:13:30 +00:00
ab1d80f3d6
version: bump to 0.53.1 2026-01-02 22:20:57 +01:00
3254fa7b49
desktop/layerRuleApplicator: fix an epic c+p fail
ref https://github.com/hyprwm/Hyprland/discussions/12779
2026-01-02 22:20:42 +01:00
27bee5bf99
core/xwaylandmgr: fix min/max clamp potentially crashing 2026-01-02 22:20:42 +01:00
Vaxry
23d8c372b1
dekstop/window: read static rules before guessing initial size if possible (#12783) 2026-01-02 22:20:42 +01:00
Vaxry
c57b20dc1e
desktop/window: use workArea for idealBB (#12802) 2026-01-02 22:20:42 +01:00
429e366afd
input/ti: avoid sending events to inactive TIs
ref https://github.com/hyprwm/Hyprland/discussions/12105
2026-01-02 22:20:42 +01:00
Vaxry
2ca2c1c701
desktop/LS: avoid creating an invalid LS if no monitor could be found (#12787) 2026-01-02 22:20:42 +01:00
skrmc
587402e539
input: guard null view() when processing mouse down (#12772) 2026-01-02 22:20:42 +01:00
Vaxry
12d6819621
desktop/window: go back to the previously focused window in a group (#12763) 2026-01-02 22:20:42 +01:00
127e206e58
desktopAnimationMgr: fix slide direction
ref https://github.com/hyprwm/Hyprland/discussions/12744
2026-01-02 22:20:42 +01:00
ea444c35bb
version: bump to 0.53.0 2025-12-29 16:21:36 +01:00
UjinT34
6a055fc747
cm: allow force disabling WCG and HDR per monitor (#12733) 2025-12-28 14:44:04 +01:00
Ikalco
a8452705d6 gitignore: add hyprland.desktop generated by cmake 2025-12-27 23:23:32 +02:00
Aditya Singh
e5d20b56bc
keybinds: simulate mouse movement after bringing active window to top (#12703)
Fixes https://github.com/hyprwm/Hyprland/discussions/12702
2025-12-27 21:27:59 +01:00
UjinT34
5faa66d297
protocols/cm: fix CColorManagementSurface m_imageDescription init (#12734) 2025-12-27 20:25:57 +01:00
610c59dc34
opengl: properly combine transforms in renderTexture
ref #12666
2025-12-27 20:18:57 +01:00
UjinT34
e5f22c06b4
master: fix placement with center_ignores_reserved (#12695) 2025-12-27 19:17:51 +01:00
UjinT34
6d3b17ee83
render/cm: various updates, remove old protocols (#12693)
* fix named primaries

* default to gamma22

* mark mastering primaries as supported

* remove xx-cm and frog support

* immutable primaries and image descriptions

* clang-format
2025-12-27 18:01:46 +01:00
Vaxry
42447a50d6
rules/windowRuleApplicator: fix min/max size effects (#12491)
fixes #12412
2025-12-27 12:43:45 +01:00
Mr. Goferito
d7f26038ee
keybinds: fix multikey binds breaking after scroll wheel events (#12638) 2025-12-26 23:16:31 +01:00
33df518f97
input: fix pending perm keyboards being enabled
fixes #12359
2025-12-26 16:08:31 +01:00
9ea565054a
example/hyprland.desktop: fix path 2025-12-26 14:39:29 +02:00
1f1a39d46c example/hyprland.desktop: install with full path in Exec 2025-12-25 20:36:32 +02:00
14c49230cc Nix: re-enable uwsm desktop file 2025-12-25 20:36:32 +02:00
2525052779
start: avoid crash in dtor after forceQuit 2025-12-24 20:27:00 +01:00
f7f357f15f
keybindmgr: fix focusCurrentOrLast 2025-12-23 15:04:56 +01:00