A new, big update 0.43.0 brought to you by Yours Truly.
Many bugfixes, and new features, as always.
Notes for packagers
- Hyprland now requires C++26 support to build. gcc>=14 or clang>=18 will be needed.
- Installable assets have moved to
assets/install/
. All pngs there should be installed to$PREFIX/share/hypr/
New features:
- IPC: Add config descriptions (#7377)
- animations: add workspace in/out configs
- config: Add a variable to prevent groups from merging after being dragged (#7650)
- config: Add a window rule to render while unfocused (#7582)
- config: Added default button mapping for xf86 keys (#7672)
- config: add exec-shutdown for running commands on shutdown (#7683)
- core: add option to control which window to focus on close (#7368)
- cursormgr: add a new setting to sync gsettings (#7253)
- env: Add HYPRLAND_NO_SD_VARS env condition (#7358)
- hyprctl: add active and all to switchxkblayout
- logs: Add file path to asset ERR log (#7336)
- windowrules: add fullscreenstate field (#7466)
- xwayland: add option to enable/disable xwayland (#7633)
Fixes:
- Fix crash reports having execute permission
- Fix missing include needed by clang
- build: Fix NO_XWAYLAND compilation (#7538)
- config: add missing header for libc++ after 92744b5 (#7403)
- config: fix explicit sync option warning (#7293)
- config: fix uninitialized values with mode parsing
- core: fix crash on monitor removed with gammaControl (#7601)
- core: fix data race and a unsigned int rollover (#7278)
- cursormgr: fix cursor gsettings on session change (#7295)
- data-device: Fix selection mismatch when wlr resets primary selection (#7598)
- decorations: fix manual resize not recalculating decos (#7323)
- example/config: fix typo in default config (#7446)
- gamma-control: fix crash on monitor disconnect (#7353)
- helpers: fix: revert to signed arithmetic for cycling through workspaces (#7339)
- hyprpm: Fix checking dependencies (#7504)
- input: Fix disabling tap-to-click (#7304)
- input: Fix modifier keys getting stuck if depressed during config reload (#7486)
- install: Prepend ${DESTDIR} when creating hyprland symbolic link (fixes #7280). (#7281)
- keybinds: Fix fullscreenState toggling behaviour (#7288)
- keybinds: Fix syncFullscreen inconsistent with state when set by fullscreenState (#7343)
- keybinds: fixup misused kb state
- misc: fix some minor typos (#7530)
- pointermgr: fix initial cursorwarp (#7286)
- presentation-feedback: minor fixups
- protocol: fix logm template checks
- render: fixup format mismatch after leaving DS
- renderer: minor direct scanout fixes (#7594)
- screencopy: fix 10b format r/b flip
- screencopy: fixup 10-bit sharing via shm on nvidia
- sessionLock: fix misc:allow_session_lock_restore (#7511)
- textinput: fix ime activation in some edge cases (#7660)
- workspacerules: fix on-created-empty window focus (#7657)
Other:
- CI: clarify Nix CI jobs; disable on forked repositories
- CI: disable stale workflow on forks (#7535)
- CMake: drop duplicate -luuid after 5262292
- CMake: drop unused deps after 016da23
- CMakeLists: wayland.xml is in wayland-scanner pkgdatadir
- Nix: exclude wayland-scanner until next staging merge
- Nix: include xcursor regardless of xwayland
- Nix: remove unused dependencies
- README: Change image sources from vaxerski/Hyprland to hyprwm/Hyprland (#7315)
- Revert "syncobj: wait for deadline instead of available"
- Update aquamarine input in flake
- compositor: update suspendstate on window move (#7396)
- core: Include cstring whenever strncpy is used (#7267)
- core: Move to C++26 and use native_handle to CLOEXEC the debug fd (#7219)
- core: Preserve existing XDG_CURRENT_DESKTOP (#7347)
- core: make most for loops use const references (#7527)
- cursor: make inactive_timeout setting a float (#7268)
- data-device: send dndFinished when dnd offer is destroyed while unfinished
- eventloop: don't dispatch in enterLoop
- examples: more systemd examples (#7409)
- headers: set correct paths to header files (#7245)
- hyprctl: avoid parsing string::npos on invalid cmd (#7544)
- hyprpm, hyprctl: update shell completions
- hyprpm, hyprctl: remove Makefiles
- input: don't emit idle activity when calling simulateMouseMovement (#7649)
- input: kb focus mouse focused window if unset (#7666)
- input: move idle notify to input handlers (#7659)
- input: try to refocus a focusable window when seat grabs are reset (#7669)
- internal: introduce new types to avoid unsigned int rollover and signed int overflow (#7216)
- internal: removed Herobrine
- keybinds: refactor dispatchers to be better (#7331)
- keybinds: release mods after sendshortcut (#7581)
- layersurface: don't unref from monitor until dtor
- layersurface: dont rollover on size_t (#7451)
- layersurface: remove layer on destroy from monitor (#7457)
- linux-dmabuf: allow on split-node systems
- logs: don't get timezone every time logging (#7550)
- meson: explicitly specify path for find(1) (#7590)
- misc: Rename all instances of "emtpy" to "empty" (#7522)
- misc: constify the remaining for loops (#7534)
- monitor: avoid dangling references to old monitors being undestroyed
- monitors: avoid crash on wayland output removal
- output: dont cast enum out of range (#7448)
- protocols: avoid crashing in drmlease (#7290)
- protocols: destroy new xdgDialog protocol at right time (#7600)
- protocols: refactor protocol logging to a macro (#7324)
- renderbuffer: ensure framebuffer gets deleted (#7363)
- renderer: better lockscreen dead behavior (#7574)
- renderer: fade out windows on silent moves
- renderer: pass custom modelines to aq
- screencopy: nuke unused stuff
- sessionLock: ensure sls focus in some edge cases (#7647)
- shm: align size to stride (#7383)
- syncobj: wait for deadline instead of available
- textinput: don't deactivate ime if another ti is focused (#7617)
- textinput: send deactivate to ime on destory ti (#7614)
- window/xwayland: minor property cleanup
- window: don't focus on activate if window isn't mapped yet
- windows: support size with pseudo tiled
- xcursor: handle file errors when loading xcursor themes (#7326)
- xcursormgr: dont apply scale on gsettings (#7316)
- xdg-dialog: implement new protocol
- xwayland: deactivate xwayland focus if wayland is focused (#7458)
- xwayland: update overrideRedirect on map and configure (#7575)
- xwaylandmgr: minor refactor to activateSurface
- xwm: don't mark selection events as succeeded
- xwm: read atom name from xcb (#7546)
Special Thanks
Special thanks to these chads for donating, as always:
- Xoores
- taigrr
- SomeMediocreGamer
- Azelphur
- ari-cake
- alukortti
- MasterHowToLearn
- Theory_Lukas
- maltbeverage
- Plyply
- Poor as shit
- Milan
- johndoe42
- yyyyyyyan
- seb
- Cromat_tux
- DaGaugl
- Philipp Soldunov
- nico
- atomicptr
- ircurry
- normal
- Mikey G
- JPEG
- Sven
- neoney
- Valentin MATHIEU
- Morally2412
- Enzi
- Logno
- Mihail
- niraami
- KelpShake
MRs
- core: Move to C++26 and use native_handle to CLOEXEC the debug fd by @vaxerski in #7219
- type conversion to new types to avoid unsigned int rollover and signed int overflow by @gulafaran in #7216
- fix: set correct paths to header files by @matt1432 in #7245
- xcursmgr add a new setting to sync gsettings by @gulafaran in #7253
- Include cstring whenever strncpy is used by @earboxer in #7267
- cursor: make inactive_timeout setting a float by @wwaltb in #7268
- fix initial cursorwarp by @gulafaran in #7286
- Prepend ${DESTDIR} when creating hyprland symbolic link fixes #7280) by @yangyingchao in #7281
- fix explicit sync option warning by @ikalco in #7293
- fix data race and a unsigned int rollover by @gulafaran in #7278
- Fix fullscreenState toggling behaviour by @txkyel in #7288
- protocols avoid crashing in drmlease by @gulafaran in #7290
- fix cursor gsettings on session change by @ikalco in #7295
- readme: Change image sources from vaxerski/Hyprland to hyprwm/Hyprland by @PaddeCraft in #7315
- fix resizing by @MightyPlaza in #7323
- Add file path to asset ERR log by @davc0n in #7336
- handle file errors when loading xcursor themes by @ikalco in #7326
- helpers: fix: revert to signed arithmetic for cycling through workspaces by @ErynGalen in #7339
- Fix syncFullscreen inconsistent with state when set by fullscreenState by @txkyel in #7343
- gamma-control: fix crash on monitor disconnect by @PaideiaDilemma in #7353
- Preserve existing XDG_CURRENT_DESKTOP by @Vladimir-csp in #7347
- protocols refactor protocol logging to a macro by @gulafaran in #7324
- Add HYPRLAND_NO_SD_VARS env condition by @Vladimir-csp in #7358
- renderbuffer ensure framebuffer gets deleted by @gulafaran in #7363
- xcursormgr dont apply scale on gsettings by @gulafaran in #7316
- Add config descriptions by @vaxerski in #7377
- Update aquamarine input in flake by @leiserfg in #7382
- Fix disabling tap-to-click by @sliedes in #7304
- shm align size to stride by @gulafaran in #7383
- compositor: update suspendstate on window move by @gulafaran in #7396
- flake: update aquamarine by @diniamo in #7395
- hyprpm, hyprctl: update shell completions by @LOSEARDES77 in #7399
- Unbreak build with libc++ by @jbeich in #7403
- feat: more systemd examples by @JL2210 in #7409
- Fix typo by @arash28134 in #7446
- feat: add a config to control which window to focus on when closing window by @ParaN3xus in #7368
- dont cast enum out of range by @gulafaran in #7448
- fix: static asan patch by @JL2210 in #7439
- dont rollover in layersurface by @gulafaran in #7451
- CMakeLists: wayland.xml is in wayland-scanner pkgdatadir by @flokli in #7467
- Fix crash reports having execute permission by @Redender64 in #7469
- layersurface remove expired layers on arranging by @gulafaran in #7457
- Fix modifier keys getting stuck if depressed during config reload by @MahouShoujoMivutilde in #7486
- windowrules: add fullscreenstate field by @sungyoonc in #7466
- refactor dispatchers to be beetter by @ikalco in #7331
- hyprpm: Fix checking dependencies by @ntnn in #7504
- xwayland: deactivate xwayland focus if wayland is focused by @Trimutex in #7458
- sessionLock: fix misc:allow_session_lock_restore by @PaideiaDilemma in #7511
- Rename all instances of "emtpy" to "empty" by @adharmic in #7522
- build: fix 32bit builds by @gulafaran in #7510
- make most for loops use const references by @gulafaran in #7527
- fix some minor typos by @gulafaran in #7530
- constify the remaining for loops by @gulafaran in #7534
- CI: disable stale workflow on forks by @NotAShelf in #7535
- Fix missing include needed by clang by @GreatGameGal in #7490
- Fix NO_XWAYLAND build by @gekola in #7538
- hyprctl: avoid parsing string::npos on invalid cmd by @gulafaran in #7544
- don't get timezone every time logging, its expensive cause cpp dum by @ikalco in #7550
- nix(flake): update aquamarine by @diniamo in #7540
- ensure buffer format on commit by @ikalco in #7556
- renderer: better lockscreen dead behavior by @vaxerski in #7574
- xwayland: update overrideRedirect on map and configure by @Trimutex in #7575
- keybinds: release mods after sendshortcut by @darkwater in #7581
- Add a window rule to render while unfocused by @vaxerski in #7582
- meson: unbreak build with BSD find(1) by @jbeich in #7590
- fix direct scanout by @ikalco in #7594
- CI: clarify Nix CI jobs; disable on forked repositories by @NotAShelf in #7595
- fixes crash on Hyprland exit by @ikalco in #7600
- Fixed selection mismatch during 'wlr reset primary selection'. by @TheMical in #7598
- fix crash on monitor removed with gammaControl by @ikalco in #7601
- xwm: read atom name from xcb by @gulafaran in #7546
- textinput: send deactivate to ime on destory ti by @sungyoonc in #7614
- textinput: don't deactivate ime if another ti is focused by @sungyoonc in #7617
- CMake: drop unused dependencies (a la Meson) by @jbeich in #7626
- input: don't emit idle activity when calling simulateMouseMovement by @PaideiaDilemma in #7649
- sessionLock: ensure sls focus in some edge cases by @PaideiaDilemma in #7647
- config: add option to enable/disable xwayland by @Trimutex in #7633
- config: Add a variable to prevent groups from merging after being dragged by @Sonotsugipaa in #7650
- textinput: fix ime activation in some edge cases by @sungyoonc in #7660
- workspacerules: fix on-created-empty window focus by @sungyoonc in #7657
- input: move idle notify to input handlers by @PaideiaDilemma in #7659
- input: kb focus mouse focused window if unset by @outfoxxed in #7666
- input: try to refocus a focusable window when seat grabs are reset by @outfoxxed in #7669
- Added default button mapping for laptop multimedia keys for volume an… by @DarthChillash in #7672
- config: add exec-shutdown for running commands on shutdown by @Trimutex in #7683
New Contributors
- @matt1432 made their first contribution in #7245
- @wwaltb made their first contribution in #7268
- @txkyel made their first contribution in #7288
- @PaddeCraft made their first contribution in #7315
- @davc0n made their first contribution in #7336
- @ErynGalen made their first contribution in #7339
- @Vladimir-csp made their first contribution in #7347
- @leiserfg made their first contribution in #7382
- @JL2210 made their first contribution in #7409
- @arash28134 made their first contribution in #7446
- @ParaN3xus made their first contribution in #7368
- @flokli made their first contribution in #7467
- @Redender64 made their first contribution in #7469
- @ntnn made their first contribution in #7504
- @adharmic made their first contribution in #7522
- @GreatGameGal made their first contribution in #7490
- @gekola made their first contribution in #7538
- @TheMical made their first contribution in #7598
- @Sonotsugipaa made their first contribution in #7650
- @DarthChillash made their first contribution in #7672
Full Changelog: v0.42.0...v0.43.0