Commit graph

6782 commits

Author SHA1 Message Date
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
abffe75088
desktop/window: improve fullscreen handling for grouped windows
fixes #12700
2025-12-22 17:53:28 +01:00
60efbf3f63
desktop/ls: only update the ls in question for commit to change layer 2025-12-21 23:50:53 +01:00
UjinT34
712bcfbce5
protocols/xdg-shell: fix crash on null parent in pin (#12694) 2025-12-21 14:21:51 +01:00
boinq
c87a1a7629
i18n: add Danish translation (#12333) 2025-12-20 22:18:22 +00:00
ArchSav
7bd207377c
window: automatically pin child windows (#12224) 2025-12-20 22:17:56 +00:00
Vaxry
b9bef69554
Desktop/history: Move history to desktop (#12676) 2025-12-20 22:16:13 +00:00
70f54a1e1b
animationmgr: avoid possible uaf in handling anim updates 2025-12-20 19:13:04 +00:00
EvilLary
f6c5c659a7
i18n: Add Arabic translations for safemode (#12670)
* i18n: Add Arabic translations for safemode

* update
2025-12-20 17:57:19 +00:00