Skip to content

v0.49.0

Latest
Compare
Choose a tag to compare
@vaxerski vaxerski released this 08 May 20:28
· 131 commits to main since this release
9958d29

After a while, your Overlord is proud to announce Hyprland 0.49.0.

Breaking changes:

  • cursor:warp_on_change_workspace no longer controls warps for special workspaces. Use warp_on_toggle_special for more fine control.
  • master:center_master_slaves_on_right has been changed to master:center_master_fallback providing more options than just right.
  • you'll now need to input your sudo password for sensitive hyprpm operations. Due to that change your repositories and enabled plugins will be reset.

New features:

  • InputManager: add config option to disable keybinds per device (#10064)
  • InputManager: add nofollowmouse (#9994)
  • Permission Manager: add permission management for screencopy (#9930)
  • animations: Add option for animating workspaces as if the first and last were adjacent (#10277)
  • anr: add config for ping number before popup shows up (#9782)
  • async: add Promise and use it for AsyncDialogBox
  • binds: add drag_threshold for click/drag isolation (#9839)
  • groupbar: Add options for setting group bar title font weight (and indicator gap) (#9617)
  • groupbar: add text offset and upper gap settings (#9733)
  • helpers: Add an async dialog box impl (#9919)
  • input: add warp_on_toggle_special (#9945)
  • keybinds: add sendkeystate dispatcher (#9599)
  • layerrules: add abovelock to render above lockscreen (#9793)
  • permissions: add perms for plugin loading (#10184)
  • protocols: add Hyprland toplevel mapping implementation (#9775)
  • protocols: add support for xdg-system-bell-v1
  • protocols: add xdg_toplevel_tag_v1 support
  • renderer: add render:send_content_type setting (#9851)
  • socket2: add minimized event for foreign-wlr
  • socket2: add monitorremovedv2 event (#10229)
  • windowrules: add noclosefor
  • workspaces: Add binds:hide_special_on_workspace_change (#9728)

Fixes:

  • asyncDialogBox: fix missing pid
  • asyncdialogbox: fix missing header
  • ci: minor fixes to glaze
  • compositor/surface: fix surface opaque and input regions not being updated (#10055)
  • compositor: fix crash when moving a workspace to a monitor with size 0x0 (#9848)
  • compositor: fix getMonitorInDirection skipping active monitor (#10114)
  • config: Fix matching monitor by description to allow space prefix (#9788)
  • configmgr: fix CConfigValue<> from plugins
  • core: fix artifacts when fullscreening (#9778)
  • core: fix crash in data device on shutdown (#9997)
  • core: fix null ref when resuming system (#9794)
  • ctm: fix crash when finishing ctm progress with a destroyed monitor (#9835)
  • framebuffer: Fix framebuffer size check (#10068)
  • helpers: add missing include for BSDs after 3c12867 (#9982)
  • hyprpm: add missing include for libc++ after 858c0e2 (#10234)
  • hyprpm: add missing return (#10299)
  • input/layers: Fix exclusive LS focus / refocus after unmap (#9984)
  • internal: fix minor ubsan errors (#9743)
  • internal: fix name confusion in SAlphaValue
  • keybindmgr: fixup bindn regression
  • layerrules: fix abovelock interactivity for touch input (#10253)
  • makefile: add new shaders to make installheaders (#9783)
  • makefile: fix find command in installheaders
  • monitors: fix disconnected monitors are reconnected to an empty workspace (#9874)
  • renderer: Simplify and fix hdr metadata setting (#9706)
  • socket2: fix order of window events on map (#10341)
  • solitary: Fix the non-working tearing #9429 (#9772)
  • swipe: fix prev workspace remembering
  • swipe: fix swiping onto a new workspace bound to another monitor (#8176) (#9927)
  • window: Fix order of urgency flag and event emission (#10163)
  • workspaces: Fix empty flag not selecting active workspace (#10237)
  • workspaces: minor fixes to persistence
  • xdg-bell/xdg-tag: fix moved resource usage
  • xdg-bell: fix wrong resource cast
  • xdg-shell: fix some null refs (#9992)

Other:

  • CursorManager: Store cursor pixel data retrieved from X/HC as a copy (#9986)
  • DMABuffer: reserve vector and avoid UB (#10317)
  • DataDevice: position icon at cursor hotspot (#9895)
  • DonationNag: ask after each major update (#10213)
  • Groupbar: apply scaling factor to text (#9731)
  • IHyprLayout: center floating window at cursor when picked up from fullscreen (#10063)
  • IHyprLayout: respect minimum window size (#10017)
  • SECURITY: init security policy
  • ci: close unwanted issues automatically (#10106)
  • cm: Use precomputed primaries conversion (#9814)
  • cmake: do not install version.h.in (#10035)
  • cmake: ignore Wclobbered
  • compositor: avoid crash on null window monitor move
  • compositor: refactor class member vars (#10141)
  • compositor: set fullscreenstate on movetoworkspace (#10303)
  • config: Refactor class member vars (#10124)
  • config: use natural increase and decrease of brightness for default cfg (#10210)
  • core: Don't damage the entire surface every frame (#9763)
  • core: wait for dmabuf readiness (#9806)
  • ctm: enable fade animation on nvidia driver versions 575 and above (#10095)
  • debug: refactor class member vars (#10130)
  • decoration: bring back border_part_of_window
  • decorationPositioner: update posinfo on window update
  • desktop: Damage subsurface when position changes (#10094)
  • desktop: cleanup code and use std::ranges (#10289)
  • devices: refactor class member vars (#10206)
  • dwindle: ignore fullscreen window for positioning when use_active_for_splits=false (#9838)
  • dwindle: use idealIgnoreReserved for moveWindowTo bbs
  • github: remove issue templates
  • groupbar: round boxes
  • helpers: properly support next/prev for workspace switching (#10074)
  • helpers: refactor class member vars (#10218)
  • hyprerror: refactor class member vars (#10227)
  • hyprpm: Minor optimizations and refactor of helpers and progress bar (#10246)
  • hyprpm: clean up root access and properly check input (#10304)
  • hyprpm: extend dep list
  • hyprpm: move to system directories for storing plugins (#10211)
  • hyprpm: wrap sudo cmd in quotes
  • input: don't use pointer hold logic for unmapped surfs
  • inputs: refactor class member vars (#10230)
  • internal: Don't force default cursor on config reload/monitor reconfigure (#9815)
  • internal: Removed Herobrine
  • internal: Use vecnotinrect instead of !vecinrect (#10262)
  • keybinds: allow executing binds not bound to a key (#10102)
  • layerSurface: warp position and size before taking a snapshot (#10054)
  • layers: refactor class member vars (#10149)
  • layout: allow interacting with pinned windows when fullscreened (#10326)
  • layout: center floating window at cursor when picked up from fullscreen (#9780)
  • layout: properly assign workspace and monitor when moving a child to the parent (#10338)
  • layout: properly track floating window position (#9937)
  • layouts: refactor class member vars (#10228)
  • managers: refactor class member vars (#10242)
  • master: Change center_master_slaves_on_right to center_master_fallback (#10201)
  • nix/module: load plugins using exec-once (#9836)
  • opengl: check for g_pHyprOpengl pointer (#9791)
  • opengl: don't attempt to compile cm on gles3.0
  • pass/rect: include clipBox in opaque calculations
  • pass: remove renderer finalDamage since it's unused (#9996)
  • pass: remove unusued timeline in texpass (#9734)
  • pass: revert "remove renderer finalDamage since it's unused (#9996)" (#10039)
  • permissions: disable automatic reloading of permissions from cfg
  • plugins: refactor class member vars (#10257)
  • popup: damage old size on unmap as well as new (#10306)
  • protocols/meson.build: use native wayland-scanner
  • protocols: Don't update hdr metadata if image description is unchanged (#9776)
  • protocols: ensure PointerConstraints activation occurs only after attched to InputManager (#10096)
  • protocols: refactor class member vars (a-m) (#10265)
  • protocols: refactor class member vars (core) (#10259)
  • protocols: refactor class member vars (n-t) (#10273)
  • protocols: refactor class member vars (types) (#10261)
  • protocols: refactor class member vars (u-z) (#10282)
  • refactor: cshader class to sshader struct (#10324)
  • render, helpers: Call OpenGL destroyMonitorResources on disconnect (#10111)
  • render: properly release rendered buffers (#9807)
  • render: refactor class member vars (#10292)
  • renderer/opengl: Extract shaders from source (#9600)
  • renderer: always try to apply a mode if pixel size is invalid (#10291)
  • renderer: precompute fullalpha (#10319)
  • renderer: render fading out floating windows over fs
  • renderer: render tiled fading out above other tiled windows
  • screencopy: Handle explicit sync failure (#10050)
  • screencopy: don't render cursor when frame doesn't want it
  • screencopy: support hw cursors while sharing with cursor
  • seat: avoid sending null surfaces in leave/enter events
  • surfacestate: reset buffer bit before applying to current
  • surfacestate: track and apply updated state
  • synctimeline: check if fd is readable before wait (#9789)
  • tablet: naive window refocusing (#10110)
  • time: move to stl's clocks and move timer
  • versionkeeper: create version file if not present (#9829)
  • watchdog: remove watchdog
  • window: don't deactivate unfocused xwayland windows in groups (#9781)
  • window: make AsyncDialogBoxes not closeable
  • window: send fractional scale on updateScaleTransform
  • window: use stored size for new floating window when persistentsize is set (#10212)
  • windowrules: allow incrementing window props (#9566)
  • windows: refactor class member vars (#10168)
  • workspaces: refactor class member vars (#10167)
  • xcursormgr: include
  • xdg-bell: avoid crashes on null toplevel
  • xwayland: Cleanup server startup and FDs (#9769)
  • xwayland: refactor class member vars (#10312)
  • xwayland: sync primary selection with wayland (#9952)
  • xwl: dont close the fd to early (#9715)

Special Thanks

Special thanks as always to these absolute chads for donating $$$ to help fund the project:

Top Supporters:

johndoe42, Amaan Q., Driwell, RaymondLC92, Robin B., taigrr, yyyyyyyan, ari-cake, Xoores, ExBhal, AuHunter, SA1G0N, Jas Singh, alukortti, MasterHowToLearn, arc-d3v, SomeMediocreGamer, Xafierz, Theory_Lukas

New Monthly Supporters:

len0rd, Semikiwi, joker1007, Michael-Buckley, Cubeman, Hamzah Ansari, Ramez, Rosslaew, -FR, ugsto, fipso, vx, Kilikoli, TBash, nikkehtine, Firstpick(FirstPick)

One-time Donators:

Yasen, Mantas, norlock, Nyx, scanhex, Raikas, Apheleia, bobblkabb, salfel, t1mp4, drzbida, johndurkot, Danielw_kiwi, hillsprig, Yehoslav, reference, themiguelps2, shayaharuno, FirstKix, Snepsts, mautz, Thomas Engheran, ril, Eric, folkdnd, R, flwo, Khargoosh, D.L, ZeulSoare, 🅳ιzzιєє🕶👌🏾, Guido Ferri, Adam, Aaronjamt, BennetLe, Freka, cairnan, bush, Monkey, HeartBlin, ncbo4zk4, Cespen, calumhalpin, Linus Palma, omnicroissant, VEN, Folkrt, eddiezane, dzendaa

MRs

  • Simplify and fix hdr metadata setting by @UjinT34 in #9706
  • xwl: dont close the fd to early by @gulafaran in #9715
  • keybinds: add sendkeystate by @nnyyxxxx in #9599
  • Groupbar: apply scaling factor to text by @ArkadyBuryakov in #9731
  • pass: remove unusued timeline in texpass by @gulafaran in #9734
  • fix minor ubsan errors by @gulafaran in #9743
  • core: Don't damage the entire surface every frame by @PlasmaPower in #9763
  • xwayland: Cleanup server startup and FDs by @PlasmaPower in #9769
  • Extract shaders from source by @UjinT34 in #9600
  • opengl: check for g_pHyprOpengl pointer by @gulafaran in #9791
  • makefile: add new shaders to make installheaders by @micha4w in #9783
  • protocols: Don't update hdr metadata if image description is unchanged by @PlasmaPower in #9776
  • synctimeline: check if fd is readable before wait by @gulafaran in #9789
  • Config option: binds:hide_special_on_workspace_change by @LeviVanDerMaas in #9728
  • Fix matching monitor by description to allow space prefix by @emad-elsaid in #9788
  • Fix the non-working tearing #9429 by @iddm in #9772
  • core: fix null ref when resuming system by @nnyyxxxx in #9794
  • core: fix artifacts when fullscreening by @nnyyxxxx in #9778
  • anr: make pings configurable by @nnyyxxxx in #9782
  • Don't force default cursor on config reload/monitor reconfigure by @X2E4VXpZKv in #9815
  • layout: center floating window at cursor when picked up from fullscreen by @nnyyxxxx in #9780
  • window: don't deactivate unfocused xwayland windows in groups by @nnyyxxxx in #9781
  • versionkeeper: create version file if not present by @arminius-smh in #9829
  • Groupbar text offset and upper gap by @ArkadyBuryakov in #9733
  • nix module: load plugins using exec-once by @amadejkastelic in #9836
  • ctm: fix crash when finishing ctm progress with a destroyed monitor by @PaideiaDilemma in #9835
  • compositor: fix crash when moving a workspace to a monitor with size 0x0 by @PaideiaDilemma in #9848
  • helpers: Add an async dialog box impl by @vaxerski in #9919
  • DataDevice: position icon at cursor hotspot by @nnyyxxxx in #9895
  • layout: properly track floating window position by @VirtCode in #9937
  • swipe: fix swiping onto a new workspace bound to another monitor (#8176) by @kerty0 in #9927
  • helpers: unbreak build on BSDs by @jbeich in #9982
  • input/layers: Fix exclusive LS focus / refocus after unmap by @vaxerski in #9984
  • core: refactor and improve surface commit by @ikalco in #9805
  • CursorManager: Store cursor pixel data retrieved from X/HC as a copy. by @vaxerski in #9986
  • xwayland: sync primary selection with wayland by @nnyyxxxx in #9952
  • Permission Manager: add permission management for screencopy by @vaxerski in #9930
  • xdg-shell: fix some null refs by @nnyyxxxx in #9992
  • remove renderer finalDamage since it's unused by @ikalco in #9996
  • fix crash in data device on shutdown by @ikalco in #9997
  • input: add warp_on_toggle_special by @VirtCode in #9945
  • cmake: do not install version.h.in by @alba4k in #10035
  • Revert "pass: remove renderer finalDamage since it's unused (#9996)" by @vaxerski in #10039
  • screencopy: Handle explicit sync failure by @PlasmaPower in #10050
  • binds: drag_threshold for click/drag isolation by @alaricljs in #9839
  • fix surface opaque and input regions not being updated by @ikalco in #10055
  • fix(dwindle): ignore fullscreen window for positioning when use_active_for_splits=false by @rszyma in #9838
  • IHyprLayout: respect minimum window size by @nnyyxxxx in #10017
  • IHyprLayout: center floating window at cursor when picked up from fullscreen by @nnyyxxxx in #10063
  • layerSurface: warp position and size before taking a snapshot by @vaxerski in #10054
  • fix: 1x1 framebuffer creation by @psyvern in #10068
  • fix: disconnected monitors are reconnected to an empty workspace by @matjam in #9874
  • allow incrementing window props by @MightyPlaza in #9566
  • core: wait for dmabuf readiness by @ikalco in #9806
  • desktop: Damage subsurface when position changes by @PlasmaPower in #10094
  • InputManager: add config option to disable keybinds by @nnyyxxxx in #10064
  • ci: close unwanted issues automatically by @NotAShelf in #10106
  • render, helpers: Call OpenGL destroyMonitorResources on disconnect by @PlasmaPower in #10111
  • ctm: enable fade animation on nvidia driver versions 575 and above by @fxzzi in #10095
  • fix PointerConstraints activation occurring before attached to InputManager by @bk304 in #10096
  • Fix CCompositor::getMonitorInDirection does not return focused monitor by @syuzuki in #10114
  • Refactor config classes vars by @davc0n in #10124
  • input(tablet): naive window refocusing by @PtaxLaine in #10110
  • debug: refactor class member vars by @davc0n in #10130
  • managers: allow executing binds not bound to a key by @nnyyxxxx in #10102
  • InputManager: add nofollowmouse by @nnyyxxxx in #9994
  • compositor: refactor class member vars by @davc0n in #10141
  • Hyprland toplevel mapping protocol by @WhySoBad in #9775
  • Groupbar: Add options for setting group bar title font weight (and indicator gap) by @mhydock in #9617
  • layers: refactor class member vars by @davc0n in #10149
  • workspaces: refactor class member vars by @davc0n in #10167
  • Fix order of urgency flag and event emmission by @jmoggr in #10163
  • layerrules: add abovelock to render above lockscreen by @VirtCode in #9793
  • helpers: properly support next/prev for workspace switching by @nnyyxxxx in #10074
  • windows: refactor class member vars by @davc0n in #10168
  • PermissionSystem: add perms for plugin loading by @vaxerski in #10184
  • devices: refactor class member vars by @davc0n in #10206
  • Use precomputed primaries conversion by @UjinT34 in #9814
  • render:send_content_type setting by @UjinT34 in #9851
  • feat(config): natural increase and decrease of brightness by @sand4rt in #10210
  • DonationNag: ask after each major update by @vaxerski in #10213
  • render: properly release rendered buffers by @ikalco in #9807
  • helpers: refactor class member vars by @davc0n in #10218
  • hyprerror: refactor class member vars by @davc0n in #10227
  • layouts: refactor class member vars by @davc0n in #10228
  • Change center_master_slaves_on_right to center_master_fallback by @Zetta1Reid0 in #10201
  • hyprpm: move to system directories for storing plugins by @vaxerski in #10211
  • hyprpm: unbreak build with libc++ by @jbeich in #10234
  • inputs: refactor class member vars by @davc0n in #10230
  • managers: refactor class member vars by @davc0n in #10242
  • protocols: refactor class member vars (core) by @davc0n in #10259
  • plugins: refactor class member vars by @davc0n in #10257
  • layerrules: fix abovelock interactivity for touch input by @VirtCode in #10253
  • Use vecnotinrect instead of !vecinrect by @Honkazel in #10262
  • protocols: refactor class member vars (types) by @davc0n in #10261
  • protocols: refactor class member vars (a-m) by @davc0n in #10265
  • protocols: refactor class member vars (n-t) by @davc0n in #10273
  • Fix empty flag not selecting active workspace by @phonetic112 in #10237
  • protocols: refactor class member vars (u-z) by @davc0n in #10282
  • hyprpm: Minor optimizations and refactor of helpers and progress bar by @nots1dd in #10246
  • Fix renderer crashing on uninitialized FBs due to a null mode by @vaxerski in #10291
  • render: refactor class member vars by @davc0n in #10292
  • Feature: add monitorremovedv2 IPC event by @blackthorne7 in #10229
  • fix(window): use stored size for new floating window when persistentsize is set by @yuukibarns in #10212
  • Add option for animating workspaces as if the first and last were adjacent by @CyrenArkade in #10277
  • hyprpm: add missing return by @Zebra2711 in #10299
  • popup: damage old size on unmap as well as new by @vaxerski in #10306
  • hyprpm: clean up root access and properly check input by @vaxerski in #10304
  • xwayland: refactor class member vars by @davc0n in #10312
  • DMABuffer: reserve vector and avoid UB by @gulafaran in #10317
  • renderer: precompute fullalpha by @gulafaran in #10319
  • refactor: cshader class to sshader struct by @davc0n in #10324
  • set fullscreenstate on movetoworkspace by @MightyPlaza in #10303
  • layout: allow interacting with pinned windows when fullscreened by @nnyyxxxx in #10326
  • layout: properly assign workspace and monitor when moving a child to the parent by @vaxerski in #10338
  • desktop: cleanup code and use std::ranges by @nots1dd in #10289
  • socket2: fix order of window events on map by @vaxerski in #10341

New Contributors

Full Changelog: v0.48.0...v0.49.0