v0.46.0
The Hyprland overlord (also known as Santa in December) is proudly bringing you 0.46.0.
Merry Hypr Christmas!
Breaking changes
- window/layer rule regexes now require a full match (not any match) to trigger.
cursor:dumb_copy
is gone in favor ofcursor:use_cpu_buffer
. This should allow no-downsides Nvidia hardware cursors. Please note it's experimental.
Notes for packagers
- New deps: hyprgraphics, re2
New features:
- binds: add option to allow fullscreening a pinned window (#8526)
- config: add 'force' option for 'cursor:warp_on_change_workspace' (#8681)
- core: Add support for hyprqtutils' update screen (#8651)
- core: add a few festive splashes
- core: move colorspace handling to oklab (#8635)
- dispatchers: Add an option to prioritize focus change within groups with movefocus (#8601)
- hooks: add pre connected/disconnected monitor events (#8503)
- hyprctl: add an inhibitingIdle field to windows
- hyprctl: add directScanout to hyprctl monitors
- hyprctl: add json output on hyprctl -j plugins list (#8480)
- input: add warp_back_after_non_mouse_input
- logging: Add some context to config error logs (#8326)
- makefile: add stub to discourage direct make
- pointer: add drm dumb buffers for cursors (#8399)
- renderer: add lockdead_screen_delay (#8467)
- renderer: add option to blur IME popups (#8521)
- version: add link versions for other utils (#8619)
- windowrules: add rules for mouse and touchpad scroll factors (#8655)
- xwayland: Support cross DnD from Wayland (#8708)
Fixes:
- Fix example config name in auto-generated cfg header (#8509)
- animationmgr: fixup stack-use-after-return
- compositor: fix monitor arrangement with mixed auto directions
- core/data-device: expand damage region to fix minor px errors
- core: Add clang-tidy (#8664)
- core: Fix workspace selector parsing (#8687)
- data-device: fixup wrong box expansion
- defaultConfig: fixup smart gaps rules
- hyprpm: fix incomplete unmet dependencies message
- internal: fix changeWindowZOrder reordering incorrectly (#8494)
- internal: fix some misused configStringToInt conversions
- internal: fixup some missed updateColorsOk() calls
- layerrules: fix ignorezero not working
- monitor: fix default focus when switching to a fs workspace
- opengl: fixup invalid ogl uniform reads
- opengl: fixup missed /4 in oklab parsing
- renderer: fix incorrect early return (#8590)
- renderer: fixup blur optimization considitons
- seat: fix double scrolling in some applications (#8583)
- shm: fix shm fd size check before creating or resizing shm_pool (#8572)
- windowrules: fix prop rules with boolean values
- workspace: fix missing name via focusworkspaceoncurrentmonitor (#8484)
Other:
- CI/Nix: temporarily disable cross build
- Lock uwsm desktop file behind feature flag
- Nix: create TAG info from version
- Nix: disable uwsm desktop file installation
- bezier: optimize setup of bezier curves (#8528)
- bind: new long press option (#8302)
- cleanup: remove leftover var in ThreadManager.cpp (#8611)
- config: Changed the default value of decoration:blur:ignore_opacity to true (#8418)
- config: don't overwrite errors in gradients
- config: throw an error explicitly when parsing colors in gradients
- config: update the configStringToInt implementation (#8476)
- constraints: don't warp pointer position on release (#8491)
- core/data: Use pointer focus for DnD operations (#8707)
- core/output: don't send enter too aggresively
- core: Move regex from stdlib to re2 (#8736)
- core: Optimize window/layer rule application and scanning (#8735)
- core: drop using deques in favor of vectors
- core: feeling a bit quirky today.
- core: guard pmonitor in focuswindow
- core: move to os/Process from hyprutils
- core: move version include to hyprctl
- core: removed Herobrine
- core: workspace-related function cleanup / refactor
- crashreporter: avoid clang warning
- debug: clean up fetching of the contents of /proc/device-tree (#8413)
- debug: clean up opening of files in HyprCtl (#8401)
- descriptions: change allow_pin_fullscreen value to false (#8592)
- drm: enable explit out fence in AQ (#8431)
- github: mention PR guidelines in the template
- hyprctl: avoid crash on null pwuid
- hyprctl: verify runtime dir exists in instances()
- hyprland-uwsm.desktop: Just reference plain entry (#8553)
- hyprpm: move temp files to XDG_RUNTIME_DIR
- hyprpm: target installed instead of running version (#8634)
- internal: minor cleanups for color results
- keybinds: actually suppress internal keybinds instead of passing them along (#8538)
- keybinds: allow repeating multiple binds (#8290)
- keybinds: don't animate fullscreen size/pos changes coming in
- keybinds: move to managed pointers
- layersurface: use lastMonitor and not monitor from cursor for new ls
- master: make center ignore reserved areas (#8625)
- meson: autodetect systemd
- miscfunctions: move configStringToInt to std::expected
- nix/meson: add re2 dependency (#8738)
- pointer: map devices across all outputs by default (#8352)
- protocols: mark primarySelection as not privileged
- rename hyprland-systemd.desktop and remove hyprland-session.service
- renderer: don't render unmapped popups
- renderer: drop requesting OUT_FENCE_PTR
- renderer: restore discard mode after IME render pass
- renderer: scaled surfaces could have zero area (#8423)
- renderer: simplify blur enabling logic
- shell: don't use fgrep, prefer grep -F
- shell: propagate new machanism from hyprctl to miscfunctions
- snap: account for position of multiple monitors (#8543)
- snap: bias reserved area when its size is greater than zero (#8694)
- snap: check which corner is being grabbed for monitor snapping (#8637)
- snap: use the bit mask to check if snapping occurred (#8659)
- systemd: hyprland-systemd.desktop -> hyprland-uwsm.desktop
- versionkeeper: init version to 0.0.0 if no file is present
- windows/xdg: minor cleanup of min/max size calculations
- windows: allow replacing existing fullscreen (#8566)
- workspace: update hasFullscreenWindow in updateWindows
- workspacerules: Do not check 'on-created-empty' if using a workspace windowrule (#8486)
- xcursors: store themes in a std:set to order it (#8474)
- xdg-shell: don't report invalid min/max sizes on unset
- xdg-shell: even more robust layout min/max size
Special Thanks
Massive thanks to these chads for donating $$$ to keep this ball rollin:
- Xoores
- taigrr
- SomeMediocreGamer
- Azelphur
- maltbeverage
- johndoe42
- yyyyyyyan
- alukortti
- Theory_Lukas
- MasterHowToLearn
- ari-cake
- AuHunter
- Amaan Q.
- Jas Singh
- Hongdu
- Gerenier
- DEFLATE
- Matej Drobnic
- Snootiful
- al
- niraami
- Ricebal
MRs
- debug: clean up opening of files in HyprCtl by @WavyEbuilder in #8401
- debug: clean up fetching of the contents of /proc/device-tree by @WavyEbuilder in #8413
- pointer: map devices across all outputs by default by @JManch in #8352
- renderer: scaled surfaces could have zero area by @dawsers in #8423
- systemd-desktop - replace contents to rely on uwsm to start a systemd session. Remove hyprland-session.service by @izmyname in #8376
- Changed the default value of decoration:blur:ignore_opacity to true by @nnra6864 in #8418
- Add some context to config error logs by @SoSeDiK in #8326
- drm dumb buffers for cursors by @vaxerski in #8399
- xcursors store themes in a std:set to order it by @gulafaran in #8474
- Enable explicit out fence in AQ by @UjinT34 in #8431
- bind: new long press option by @littleblack111 in #8302
- Fix: Workspace name not assigned via hyprctl dispatch focusworkspaceoncurrentmonitor by @sslater11 in #8484
- Window/Workspace Rules: If workspace is created by a windowrule, don't create it as empty workspace by @alyanser in #8486
- fix: json output on hyprctl -j plugins list by @tetrois in #8480
- renderer: add the lockdead_screen_delay by @aacebedo in #8467
- Plugins: add pre connected/disconnected monitor events by @levnikmyskin in #8503
- pointer constraints: don't warp pointer position on release by @hanatos in #8491
- fix changeWindowZOrder by @Aqa-Ib in #8494
- Fix example config name @ auto-generated cfg header by @webknjaz in #8509
- config: update the configStringToInt implementation by @PaideiaDilemma in #8476
- allow repeating multiple binds by @MightyPlaza in #8290
- bezier: optimize setup of bezier curves by @gulafaran in #8528
- actually suppress internal keybinds instead of passing them along by @m4rch3n1ng in #8538
- renderer: add option to blur IME popups by @ErrorNoInternet in #8521
- binds: option to fullscreen pinned window by @littleblack111 in #8526
- snap: account for position of multiple monitors by @myQwil in #8543
- protocols: fix shm fd size check before creating or resizing shm_pool by @nabil-otsmane in #8572
- Just reference plain entry by @Vladimir-csp in #8553
- fix double scrolling in some applications by @ikalco in #8583
- renderer: fix incorrect early return by @Agent00Ming in #8590
- sessionLock: don't send motion events on every surface commit by @AThePeanut4 in #8584
- descriptions: change allow_pin_fullscreen value to false by @nnyyxxxx in #8592
- Fix incomplete unmet dependencies message from Hyprpm by @DaringCuteSeal in #8604
- remove: left over var in ThreadManager.cpp by @littleblack111 in #8611
- use doLater instead of using wayland idle event sources by @ikalco in #8624
- Ignore reserved areas when centering master window by @UjinT34 in #8625
- version: add link versions for other utils by @vaxerski in #8619
- core: move colorspace handling to oklab by @vaxerski in #8635
- snap: check which corner is being grabbed for monitor snapping by @myQwil in #8637
- snap: use the bit mask to check if snapping occurred by @myQwil in #8659
- Add support for hyprqtutils' update screen by @vaxerski in #8651
- core: Add clang-tidy by @vaxerski in #8664
- replacing existing fullscreen by @littleblack111 in #8566
- Fix workspace selector parsing by @sasoiliev in #8687
- config: add 'force' option for 'cursor:warp_on_change_workspace' by @JarKz in #8681
- hyprpm: target installed instead of running version by @RoootTheFox in #8634
- snap: bias reserved monitor area when its size is greater than zero by @myQwil in #8694
- Modified the
movefocus
dispatcher to prioritize focus change within groups. by @normaltaro in #8601 - core/data: Use pointer focus for DnD operations by @vaxerski in #8707
- xwayland: Support cross DnD from Wayland by @vaxerski in #8708
- core: Optimize window/layer rule application and scanning by @vaxerski in #8735
- core: Move regex from stdlib to re2 by @vaxerski in #8736
- {nix/default,meson}: add re2 dependency by @khaneliman in #8738
New Contributors
- @WavyEbuilder made their first contribution in #8401
- @nnra6864 made their first contribution in #8418
- @littleblack111 made their first contribution in #8302
- @sslater11 made their first contribution in #8484
- @tetrois made their first contribution in #8480
- @hanatos made their first contribution in #8491
- @webknjaz made their first contribution in #8509
- @m4rch3n1ng made their first contribution in #8538
- @nabil-otsmane made their first contribution in #8572
- @AThePeanut4 made their first contribution in #8584
- @nnyyxxxx made their first contribution in #8592
- @DaringCuteSeal made their first contribution in #8604
- @sasoiliev made their first contribution in #8687
- @JarKz made their first contribution in #8681
- @RoootTheFox made their first contribution in #8634
- @khaneliman made their first contribution in #8738
Full Changelog: v0.45.0...v0.46.0