v0.45.0
A big update, with tons of fixes, improvements and new stuff!
Breaking changes
no_gaps_when_only
has been removed. See the wiki for equivalent workspace rules.decoration:shadow_
variables have moved. See here for the new names.
New features:
- feat: add a custom made treewide formatter (#7992)
- groups: add group_on_movetoworkspace (#8159)
- groups: add merge_groups_on_groupbar (#8362)
- hyprctl: add caps/num lock state for keyboards (#8145)
- hyprctl: add mirrorOf to hyprctl monitors
- hyprpm: Add option to notify on fail and keep original notify (#8167)
- input: add snapping to floating windows (#8088)
- layout: add drag_into_group to control merging dragging windows (#8004)
- layout: add merge_floated_into_tiled_on_groupbar (#8042)
- pointer: add default auto for no_hw_cursors
- protocols: Add support for hyprland-ctm-control-v1 (#8023)
- renderer: Add a missing texture asset and a user check
- renderer: add expand_undersized_textures
- shadow: add sharp and refactor options
- snap: add option
border_overlap
and other improvements (#8289)
Fixes:
- CMake: systemd fixes
- IME: Fixup IME popup candidate windows position when scale is not 1.0 (#8117)
- Makefile: fix legacyrendererdebug typo (#8214)
- Systemd fixes
- config: fix generateConfig loop (#8164)
- core: fix group members disappearing when you move the group to another monitor (#8237)
- drm-lease: fix crashes and implementation (#8116)
- drm-syncobj: fix crash on missing timelines
- drm-timeline: Add check for conflicting acquire and release points (#8083)
- group: fix moveWindowIntoGroup (#8297)
- groups: fix swallowing (#8223)
- hyprerror: fix height calc with bottom bar (#8043)
- hyprpm: Fix crashes due to misplaced fmt argument(s) (#8140)
- input: Fix VRR for constrained cursors (#6877)
- internal: cleanup CMonitor usage and fix a few ref hogs
- keybinds: fixup xkb_states for resolve_by_sym
- layersurface: fixup brace style
- layout: fix auto group when opening a new window in a non-focused workspace using window rules (#8006)
- layout: window snapping cleanup + fixes
- makefile: fix typo (#8127)
- misc: Fix bad links to wiki (#8240)
- monitors: fix vrr breaking monitor disconnect (#8314)
- notif-overlay: add a bit of padding for icons
- renderer: fix floating window damage (#8182)
- renderer: minor fixup to window rendering logic (#8359)
- screencopy: fix build with legacyrenderer
- screencopy: fix screencopy frames not being cleaned up (#8017)
- shaders: fixup jagged edges in texture rounded corners
- shadow: fix double premultiplication
- xwayland: minor cleanups and fixes (#8076)
- xwayland: minor fixups for stability (#8323)
Other:
- Build with hyprland-session.service (#8251)
- config/example: add optional smart gaps to the default config
- defaultConfig: add a nofocus rule for weird X windows
- Improve hyprland-session.service (#8225)
- Nix: build aquamarine and hyprutils in debug when using hyprland-debug
- compositor: make sure we don't ret early on no surface
- config/layout: nuke no_gaps_when_only (#8072)
- config: give simple help for super+q not working
- core: move internal structures to monitor pointers (#8266)
- default/config: improve default animations
- defaultConfig: improve smart gaps
- defaultConfig: update default config values for shadows (#8360)
- dispatchers: allow leading whitespace in window parameter (#8016)
- example: update desktop file to include DesktopNames
- example/hyprland-session.service: add support for xdg autostart (#8230)
- foreign-toplevel-wlr: don't send updates to X11 OR windows
- foreign-toplevel: don't send updates to X11 OR windows
- gammactrl: guard pMonitor in setGamma
- groupbar: set locked color when groups are globally locked (#8257)
- hyprctl: convert std::cout and std::cerr to std::println()
- hyprctl: move setprop into dispatchers (#8275)
- hyprctl: reload windowrules on reloadAll
- hyprerror: make hyprerror reserve space (#8040)
- hyprland-systemd.desktop improvements (#8318)
- hyprland-systemd.desktop: change name back to Hyprland (#8351)
- hyprland: convert std::cout and std::cerr to std::println()
- hyprpm: convert std::cout and std::cerr to std::println()
- hyprpm: disallow shallow on unknown branch
- input: Refocus window on scrolling if follows mouse (#8361)
- input: cleanup device naming logic
- input: ignore non-kb ls-es in refocusLastWindow
- internal: Move CMonitor to SP (#8178)
- internal: Remove some unused lambda captures (#8218)
- internal: check size limit in layouts (#8298)
- internal: few more marginal optimisations from profiling (#8271)
- internal: improve version query and define HYPRLAND_VERSION (#8034)
- internal: more profiling less calls and local copies (#8300)
- internal: optimize cursor move a bit (#8264)
- internal: removed Herobrine
- internal: use clampWindowSize to unify min/maxsize handling (#8014)
- keyboard: update group state on change for the sym resolve state
- layershell: check if workspace is valid in onMap
- layershell: minor cleanups and improvements to focus
- layersurface: round geom in arrangeLayerArray
- layout: deny auto-grouping a new floating window into a tiled group (#8108)
- layout: don't snap to self and allow same-pid snaps
- layout: enable group rules for new floating windows (#8122)
- layout: move applyGroupRules() to onWindowCreated() (#8139)
- layout: remove unnecessary check after 45e8219 (#8037)
- layout: simplify the conditions to autogroup (#8120)
- layout: slight adjustments to snapping logic (#8273)
- misc: refactor version command (#8027)
- monitor: avoid crash on released buffer in surf
- monitor: modernize/refactor last legacy-handled events
- output/xdg-output: avoid sending events to released globals
- output: send enter events on late wl_output binds
- output: update state even if no owner exists (#8044)
- pointer: expand sw cursor damage box
- renderer: don't rely on datarootdir for local share
- renderer: improve api around new framebuffer changes
- renderer: reserve space for error at the bottom if that's set
- renderer: safeguard against non-sampleable currentFB in blurMainFb
- seat: avoid sending pointless 'keymap' and 'repeat_info' events (#8276)
- security-context: avoid UB in C macro (#8229)
- security-context: close client fds after disconnect
- security-context: implement protocol
- session-lock: reset seat grab on a new session lock (#8147)
- shaders: improve corner AA in borders shader
- swallow: check if swallow_regex doesn't exist (#8265)
- tablet: use inputMgr unified naming scheme
- window: properly break cycles in X11TransientFor
- windowrules: allow specifying max size in size window rule (#8021)
- xcursor: don't crash on broken permissions in X themes
- xwm: avoid infinite parent lookup loop in lookupParentExists
Special Thanks
Special thanks as always to these chads for donating some $$$ to keep this thing goin':
- Xoores
- ari-cake
- taigrr
- SomeMediocreGamer
- Azelphur
- maltbeverage
- alukortti
- MasterHowToLearn
- Theory_Lukas
- johndoe42
- Milan
- yyyyyyyyyan
- different-name
- AuHunter
- Daisetsu
- Steven Rotelli
- Amaan Q.
- awsumatt
- Jakub Komarek
- Eike
- Captain duh
- quiet__owo
- Jas Singh
- Octatonic Sunrise
- exnihilo
MRs
- layout: fix auto group when opening a new window in a non-focused workspace using window rules by @Aqa-Ib in #8006
- flake.nix: add xdph follows by @timon-schelling in #8012
- feat: add a custom made treewide formatter by @amadalusia in #7992
- use clampWindowSize to unify min/maxsize handling by @MightyPlaza in #8014
- fix screencopy frame leaks by @ikalco in #8017
- layout: add drag_into_group by @Aqa-Ib in #8004
- misc: refactor version command by @davc0n in #8027
- Support hyprland-ctm-control-v1 by @vaxerski in #8023
- dispatchers: allow leading whitespace in window parameter by @JManch in #8016
- layout: remove unnecessary check after 45e8219 by @Aqa-Ib in #8037
- Make hyprerror reserve space by @vaxerski in #8040
- output: update state even if no owner exists by @Trimutex in #8044
- hyprerror: fix height calc with bottom bar by @JManch in #8043
- layout: add merge_floated_into_tiled_on_groupbar to fine control merging dragging windows by @Aqa-Ib in #8042
- layouts: Nuke no_gaps_when_only by @vaxerski in #8072
- xwaylandmanager minor fixes by @JassonCordones in #8076
- improve version query and some code and add HYPRLAND_VERSION by @Toni500github in #8034
- Add check for conflicting acquire and release points by @Edgars-Cirulis in #8083
- Fix VRR for constrained cursors by @UjinT34 in #6877
- convert std::cout and std::cerr to std::println() by @Toni500github in #8085
- layout: deny automatically grouping a new floated window into a tiled group by @Aqa-Ib in #8108
- fix drm lease protocol by @ikalco in #8116
- Update session desktop file to include DesktopNames, fixes empty XDG_CURRENT_DESKTOP in ly by @deadacute in #8110
- IME: Fixup IME popup candidate windows position when scale is not 1.0 by @fanlumaster in #8117
- layout: simplify the conditions to autogroup by @Aqa-Ib in #8120
- layout: enable group rules for new floating windows by @Aqa-Ib in #8122
- layout: move applyGroupRules() to onWindowCreated() by @Aqa-Ib in #8139
- Fix hyprpm crashes due to misplaced fmt argument(s) by @zakk4223 in #8140
- makefile: fix typo by @be4zad in #8127
- allow specifying max size in size window rule by @MightyPlaza in #8021
- session-lock: reset seat grab on a new session lock by @PaideiaDilemma in #8147
- config: fix generateConfig loop by @PaideiaDilemma in #8164
- Move CMonitor to SP by @vaxerski in #8178
- add snapping to floating windows by @myQwil in #8088
- fix floating window damage by @ikalco in #8182
- hyprpm: Add option to notify on fail and keep original notify by @KAGEYAM4 in #8167
- compositor: add group_on_movetoworkspace by @Aqa-Ib in #8159
- updated flake.lock by @chitoroagad in #8202
- Fix makefile legacyrendererdebug typo by @Honkazel in #8214
- Remove some unused lambda capture by @Honkazel in #8218
- hyprctl devices: Get caps/num lock state by @czlabinger in #8145
- Improve hyprland-session.service by @izmyname in #8225
- security-context: avoid UB in C macro by @gulafaran in #8229
- hyprland-session.service example - add support for xdg autostart by @izmyname in #8230
- fix group members disappearance when you move the group to another monitor by @Aqa-Ib in #8237
- Fix bad link in /example/hyprland.conf by @Damianu in #8240
- Build with hyprland-session.service by @izmyname in #8251
- fix swallowing for groups by @Aqa-Ib in #8223
- optimize cursor move a bit by @gulafaran in #8264
- groupbar: set locked color when groups are globally locked by @ErrorNoInternet in #8257
- Core: move internal structures from monitor IDs to pointers by @vaxerski in #8266
- layout: slight adjustments to snapping logic by @myQwil in #8273
- swallow: check if swallow_regex doesn't exist in the user's config file by @Aqa-Ib in #8265
- few more marginal optimisations from profiling by @gulafaran in #8271
- move setprop into dispatchers by @MightyPlaza in #8275
- seat: avoid sending pointless 'keymap' and 'repeat_info' events by @staticssleever668 in #8276
- Fix CKeybindManager::moveWindowIntoGroup by @Aqa-Ib in #8297
- check size limit in layouts by @MightyPlaza in #8298
- Fixed window not taking focus on scroll after workspace switch by @nickodei in #8279
- more profiling less calls and local copies by @gulafaran in #8300
- snap: add option
border_overlap
and other improvements by @myQwil in #8289 - fix vrr breaking monitor disconnect by @ikalco in #8314
- Hyprland-systemd.desktop improvements by @izmyname in #8318
- Systemd fixes by @solopasha in #8320
- flake: update nixpkgs by @diniamo in #8337
- xwayland: minor fixups for stability by @Trimutex in #8323
- flake.lock: update xdph by @Gliczy in #8268
- default/config: move shadow options to decoration:shadow by @Kam1k4dze in #8360
- Hyprland-systemd.desktop fix by @izmyname in #8351
- groups: add merge_groups_on_groupbar by @Aqa-Ib in #8362
- Don't render animating windows out of their monitor when they are not moving workspaces by @dawsers in #8359
- Focus window on scrolling by @nickodei in #8361
New Contributors
- @timon-schelling made their first contribution in #8012
- @Toni500github made their first contribution in #8034
- @Edgars-Cirulis made their first contribution in #8083
- @deadacute made their first contribution in #8110
- @fanlumaster made their first contribution in #8117
- @be4zad made their first contribution in #8127
- @KAGEYAM4 made their first contribution in #8167
- @chitoroagad made their first contribution in #8202
- @Honkazel made their first contribution in #8214
- @czlabinger made their first contribution in #8145
- @izmyname made their first contribution in #8225
- @Damianu made their first contribution in #8240
- @staticssleever668 made their first contribution in #8276
- @nickodei made their first contribution in #8279
- @dawsers made their first contribution in #8359
Full Changelog: v0.44.0...v0.45.0