Happy 2 years of Hyprland!! Thanks to everyone who has supported Hyprland in any way shape or form, couldn't have done it without yall. <3
A chonker update for y'all for this occasion.
Notes for packagers
- New dependency: hyprcursor
New features:
- config: Add input:scroll_factor configuration (#4980)
- cursormgr: add fallbacks for unknown cursors
- hyprpm: Add support for specifying exact git revisions for plugin repo (#4983)
- input: add general:resize_corner for manual resizing (#5090)
- input: fix window move stutter by introducing additional checks for low-hz monitors (#4553)
- keybinds: Add the 'catchall' keyword that matches all keys (#4930)
- layers: add fully featured animations
- makefile: add make asan
- notify: Add custom fontsize support for notifications (#4981)
- socket2: Add 5 IPC event with support for workspace ID (#5022)
- subsurface/popup: expand on map/unmap to add buffering
Fixes:
- CI/Nix: attempt to fix broken cache (#4963)
- CrashReporter: Fix compilation with musl libc (#4805)
- animations: fix m_Goal not being set after #4911 (#4992)
- build: fix libc++/clang build (#4886)
- configmgr: fix compile on 32-bit archs
- core: add additional headers for Popup.cpp and InputMethodRelay.hpp (#4909)
- core: Fix typo and check grandchild PID in spawn() (#5070)
- core: fix crashes on access of deleted wlr_ surface
- cursormgr: fix invalid access to hyprcursor in xwayland init
- cursormgr: fix memory leak with cursor buffers
- hyprctl: Fix incorrect invalid fontsize kwarg response (#5013)
- input: fix minor default cursor reset conditions
- input: fix window move stutter by introducing additional checks for low-hz monitors (#4553)
- internal: minor fixups for fading out xwayland windows
- keybinds: Fix typo (#5081)
- layers: minor fixes for new animations
- layout: Fix toggling fullscreen special workspace on different monitor (#5000)
- lock: fix red screen issues with multiple monitors (#5100)
- master: Fix animate resize (#4942)
- master: Fix master layout window focus and scroll (#5074)
- master: fix invalid config usage
- opengl: fix compilation on legacy renderer (#4928)
- popup: minor fixes to xdg geometries
- renderer: fix invalid access on non-assigned surfaces
- renderer: minor fixes to transformations
- subsurface: fix visibility check
- surface: fix damage tearing feedback
- windowrules: fix center
- xwayland: fix no_xwayland compiles
Other:
- Nix: remove hyprland-unwrapped leftover
- Nix: use propagatedBuildInputs instead of wrapping
- animations: Refactor AnimatedVariable (#4911)
- ci: pack hyprpm to the release tar
- compositor: ignore grab extend behind special workspaces (#4944)
- compositor: reject focus to noFocus OR xwayland windows
- compositor: update state after moving to workspace
- config: improve config value infrastructure
- config: more safety around monitor keyword
- config: report errors from sourced files
- config: update per device input configs link (#4951)
- constraints: only warp cursor on deactivate if constraint is locked. (#5056)
- cursormgr: use XCURSOR_THEME for x themes
- drag: check min size for reisze drags
- dwindle: preserve fs state on switchWindows
- events: apply monitor state on sessionActive
- events: don't switch to active workspace on workspace rule
- events: ignore setTitle when title didn't change
- events: update render data after workspace window rule (#4931)
- hyprctl: hide unmapped windows without -a
- hyprctl: parse custom types in getoption
- hyprctl: print format and modes
- hyprpm: don't copy .so if file doesn't exist
- input: Rewritten pointer constraints (#4889)
- input: only override dragging corner on floating (#5092)
- input: scale local coords in constraints
- input: send motion to confined cursors
- internal: Support libhyprcursor (#5009)
- internal: Removed Herobrine
- keybinds: Allow fullscreen/maximize in special workspace (#4921)
- keybinds: Better handling of workspace_back_and_forth (#4952)
- keybinds: better follow xkb translation state
- keybinds: track submap at press for keypresses
- keybinds: unconstrain mouse on focusmonitor and cyclenext (#4863)
- layer-shell: allow for popup creation before map
- layout: unfullscreen on toggle into tiled fullscreen
- layout: warp the cursor when focusing windows (#4982)
- master: change active monitor when moving windows around (#5001)
- monitor: remove commas from short description (#4970)
- notifs: Implement notification dimissing (#4790)
- popup: send scale on map
- props: bump ver to 0.37.0
- refactor: move a few things to desktop/
- renderer: Allow headless mode in hyprland (#4794)
- renderer: adjust surface dimensions for oversized not-yet ackd surface sizes
- renderer: force a few render frames on init anim end
- renderer: respect forceNoBlur when rendering small surface windows (#4932)
- sessionlock: refocus after destroy focused surface (#5117)
- splashes: add 2ya splash
- subsurface: Rewrite the subsurface tree (#4877)
- subsurface: don't update transform on unmap
- subsurfaceTree: assign surfaces to a CWLSurface
- surface: unify owners
- surfacetree: Revert "subsurfaceTree: assign surfaces to a CWLSurface"
- window: ignore surface updates in unsafe / on invalid monitors
- window: prevent vector modification segfault while iterating
- window: remove unused list
- windowrules: Make min/maxsize rules dynamic (#4775)
- windowrules: check if floating when resizing from maxsize (#5019)
- windowrules: minor improvements to min/max size
- xdg: check for floating conditions before sending tiled size hint
- xdg: minor improvements to initial size reporting
- xdg: rewrite entire popup implementation
- xkb: handle invalid keymaps in updateXKBTranslationState
- xwayland: Set xwayland's name prop (#4924)
- xwayland: disable initial focus for xwayland dialogs (#4936)
- xwayland: set scaledBy for unmanaged windows in map
- xwaylandmgr: don't read xwayland surface from unmapped xwayland
Special Thanks
Special thanks as always to these people for donating moolah to me:
- alukortti
- Wickedly
- pulsar256
- Philipp Soldunov
- MasterHowToLearn
- Theory_Lukas
- Goggi
- gigo
- BW Drop-Ins!
- UNH Grad Student
- ismd
- abihf
- drweissbrot
- FrothyMarrow
- tootwrangler / brettalcox
- JustasPolis
- dek
- Igor Ramazanov
- CosmixFrost
- matthewp
- Sheepmilk
MRs
- keybinds: unconstrain mouse on focusmonitor and cyclenext by @JManch in #4863
- Rewrite the subsurface tree by @vaxerski in #4877
- fix libc++/clang build by @pg83 in #4886
- add additional headers for Popup.cpp and InputMethodRelay.hpp by @brettalcox in #4909
- animation: Refactor AnimatedVariable by @GartoxFR in #4911
- Add missing nix devshell dependencies for make asan by @vesdev in #4919
- Implement notification dimissing by @ItsDrike in #4790
- Rewritten pointer constraints by @vaxerski in #4889
- events: update render data after workspace window rule by @JManch in #4931
- Add the 'catchall' keyword that matches all keys by @Cu3PO42 in #4930
- renderer: respect forceNoBlur when rendering small surface windows by @JManch in #4932
- disable initial focus for xwayland dialogs by @phonetic112 in #4936
- opengl: fix compilation on legacy renderer by @MrRoy in #4928
- Fix master layout animate resize by @thejch in #4942
- compositor: ignore grab extend behind special workspaces by @JManch in #4944
- Update per device input config link in the default config file by @Isaiah-Hamilton in #4951
- Better handling of workspace_back_and_forth when using focusworkspaceoncurrentmonitor dispatcher by @tomben13 in #4952
- build: attempt to fix broken cache by @musjj in #4963
- Allow fullscreen/maximize in special workspace by @thejch in #4921
- monitor: remove commas from short description by @MikeWalrus in #4970
- layout: warp the cursor when focusing windows by @MikeWalrus in #4982
- Allow for input:scroll_factor configuration by @gammons in #4980
- CrashReporter: Fix compilation with musl libc by @earboxer in #4805
- resize-limiter: add additional check for low-hz monitors by @bvr-yr in #4553
- animations: fix m_Goal not being set after #4911 by @outfoxxed in #4992
- hyprpm(feat): Support specifying exact git revisions for plugin repo by @ItsDrike in #4983
- Add custom fontsize support for notifications by @ItsDrike in #4981
- Master layout: fix issue of active monitor not changing when moving windows around by @thejch in #5001
- Fix toggling fullscreen special workspace on different monitor by @thejch in #5000
- Fix incorrect invalid fontsize kwarg response by @ItsDrike in #5013
- Make min/maxsize rules dynamic by @phonetic112 in #4775
- check if floating when resizing from maxsize by @phonetic112 in #5019
- change dwl link in README.md to new codeberg link by @Fxzzi in #5026
- IPCEvent: Add 5 IPC event with support for workspace ID by @A7R7 in #5022
- Set xwayland's name prop by @vaxerski in #4924
- Support libhyprcursor by @vaxerski in #5009
- only warp cursor on deactivate if constraint is locked. fix #5055 by @s-viour in #5056
- flake: bump inputs by @NotAShelf in #5066
- Fix typo and check grandchild PID in spawn() by @lucasreis1 in #5070
- chore: Update KeybindManager.cpp by @eltociear in #5081
- Fix master layout window focus and scroll by @thejch in #5074
- Resize corner by @djvs in #5090
- fix by @djvs in #5092
- Allow headless mode in hyprland by @thejch in #4794
- lock: fix red screen issues with multiple monitors by @PaideiaDilemma in #5100
- fix: refocus after destroy focused surface by @drendog in #5117
New Contributors
- @pg83 made their first contribution in #4886
- @GartoxFR made their first contribution in #4911
- @vesdev made their first contribution in #4919
- @MrRoy made their first contribution in #4928
- @Isaiah-Hamilton made their first contribution in #4951
- @musjj made their first contribution in #4963
- @gammons made their first contribution in #4980
- @Fxzzi made their first contribution in #5026
- @A7R7 made their first contribution in #5022
- @s-viour made their first contribution in #5056
- @lucasreis1 made their first contribution in #5070
- @eltociear made their first contribution in #5081
- @djvs made their first contribution in #5090
- @PaideiaDilemma made their first contribution in #5100
- @drendog made their first contribution in #5117
Full Changelog: v0.36.0...v0.37.0