Skip to content

Releases: hyprwm/Hyprland

v0.50.1

19 Jul 21:37
Compare
Choose a tag to compare

A patch release backporting some fixes from main onto 0.50.0.

Fixes backported

  • socket2: fixup invalid ws passed to openwindow
  • config: default drag_lock to 0
  • framescheduler: dont if check deleted weakpointer (#11063)
  • compositor: properly set infinite region on null input
  • framescheduler: check monitor validity in doLater
  • snap: use window extents instead of border size (#11079)
  • opengl: detect android fence support and disable explicit if it's missing (#11077)
  • eventloop: avoid duplicate timers
  • eventloop: improve timer handling to avoid crashes
  • sessionlock: fix timer logic on unsafe state

Special thanks

Special thanks as always to the people who help fund this entire project:

Top Supporters:

Tonao Paneguini, MasterHowToLearn, Seishin, Amaan Q., --, SomeMediocreGamer, ExBhal, Xoores, Affax, Brandon Wang, mukaro, arc-d3v, ari-cake, Kay, RaymondLC92, travmonkey, alukortti, alexmanman5, taigrr, DHH, inittux111, Jas Singh, johndoe42, 3RM, Arkevius, Hunter Wesson, SA1G0N, Theory_Lukas, AuHunter

New Monthly Supporters:

Simen Graaten, Josh Ichiyo Lovejoy, idonthaveaname, edrodgers731, Narrador, blazebis, Nytem, kenya888, exebob, Gavilaan, JanCoe, Lasovar, Marcus Yanello, Freerunner, fossjunkie, ReaprXRam, ionut cristian cucu, yturijea, Phush, JoeKatar, Gábor Turu, Mircevski, Ronja, Anthony, N, alepez, CaptnJayce, dangatang, ismd, calumhalpin, Mike Zakes, Hyperactive Racoon

One-time Donators:

AsciiWolf, smolley, Porkinz, inlovewithhyprland, afrianjunior, Lungaro, JonesMcJon, syndicatedshannon, Tomfried, Alex M, mtj, Dustin Mason, Ashtefere, Jayge Ekenstam, Oofyeet, hmed69, Billy (bootlegbilly), pachicobue, dentych, yoorse, dorebase2006, vooshy, IamNanjo, aravinth, mbalasz, Fandermir, Munsio, Bracket, An appreciator, Luca Antonelli, Nik Reid, huckb, NathBeLive, Mateusz Wosik, Giri, NerdyByNature, Sam K, Brookesy, emeric, flashgnash, Pollo809, garypippi, Tor, Alosnah, SnUwU, DeaDvey, xxx, Nutel, kes, Franchise2099, Unboxed kitten, Oz Diamond, ddubs, Purian23, kurwa, mangust, Roman, Sumiinix, Afif Miguel Castañon, Kyurim, wyrd, Skallen, Doc, Otard95, R2D2_1234, revolverxd, sonicv6#7621, eracz

Full Changelog: v0.50.0...v0.50.1

v0.50.0

16 Jul 09:34
c4a4c34
Compare
Choose a tag to compare

Hello there, can you hear me? I've got some Hyprland news for ya.

New features:

  • Core: Add a test suite (#9297)
  • config/monitor: Add monitor v2 HDR rules (#10623)
  • config: add a new monitor v2 config syntax (#9761)
  • config: add group: selector (#10588)
  • config: add maxwidth monitor resolution mode (#10528)
  • core: add auto-center arrangements (#10527)
  • drm-lease: Add Multi-GPU Support (#10099)
  • dwindle: add better automatic window drag and drop direction detection (#9704)
  • dwindle: add the ability to specify an aspect ratio for a singular window (#10650)
  • grpupbar: Add config options to color inactive and locked groupbar titles (#10667)
  • input: add sticky option for drag_lock (#10702)
  • internal: added error log when getEdgeDefinedPoint is impossible (#10462)
  • keybinds: add an option to respect gaps out for floating to movewindow (#9360)
  • permissions: add permission management for keyboards (#10367)
  • protocols: add ext-workspace implementation (#10818)
  • renderer/cm: Add automatic hdr (#9785)
  • renderer: Added a pointer position uniform to the screen shader. (#10821)
  • renderer: add mouse zoom animations (#10882)
  • renderer: add wrapping options to renderTexture method (#10497)
  • renderer: add wrapping options to renderTextureWithBlur method (#10807)
  • snap: add option to respect gaps (#10524)
  • unbind: add unbind all
  • windowrules: Add noscreenshare (#10482)

Fixes:

  • compositor: fix race to finish on null buffer (#10970)
  • config: fix crash on misnamed variable (#10549)
  • config: fix inconsistant hint of default value (#10556)
  • config: add missing description for enforce_permissions
  • cursor: fix screencopy cursor pos and duplicate shape with sw cursors (#10519)
  • debugOverlay: fix tick measurement
  • eventLoop: fixup event source callbacks
  • hookSystem: avoid using manual mem management, fix leak
  • hyprpm: fix crash with enable without an arg
  • hyprpm: fix execute permission bit on installed dirs (#10435)
  • hyprpm: fix typo in help message (#10687)
  • hyprland-uwsm.desktop: Add TryExec
  • hyprpm: add missing include for libc++ after 1c530cb (#10344)
  • hyprpm: check version and update automatically on add (#10706)
  • hyprpm: ignore pins when adding a package with a git rev (#10502)
  • hyprpm: refuse adding a new repo without update
  • input: Fix incorrect localcoords with a surface above an XWayland window (#10773)
  • input: fix mouseDown triggering hl ops on locked (#10809)
  • internal: Fix HyprError not displaying at startup (#10606)
  • opengl: add missing skipcm if case (#10888)
  • opengl: add missing vao for screenshader (#10397)
  • protocols/cm: Fix preferred image description (#11026)
  • protocols/cm: fix wp invalid luminance check (#10752)
  • protocols/subcompositor: fixup place_above and _below
  • protocols: Remove incorrect CM proto debug check and fix preferred image description (#11023)
  • renderer: fix incorrect cursor position when screencopy region with monitor scaling (#10675)
  • renderer: fixup some missing fadeout cases with special
  • renderer: minor damage fixes
  • screencopy: fix applying noscreenshare to invisible special workspaces (#10628)
  • screencopy: fix improper box calculations for transforms (#10870)
  • screencopy: fix incorrect noscreenshare positions with monitor scaling (#10674)
  • snap: fix border_overlap option for monitor snapping (#10987)
  • xwayland: Fix crash when copying from wayland to xwayland (#10786)
  • xwayland: fix minor errors in previous refactor (#10763)
  • xwayland: fix xwayland -> wayland clipboard (#10646)

Other:

  • CMake: disable tests by default (#10899)
  • Nix: filter src using fileset
  • README: Update image cdn (#10722)
  • README: update previews
  • Renderer: Implement new render scheduling (#10936)
  • alphamodifier: move to unique ptrs
  • anr: make dialog disappear if the app dies
  • assets: update header
  • asyncDialogBox: lock box in fdWrite to prevent a uaf (#10759)
  • buffer: check if buffer fd already readable (#10894)
  • buffer: don't use crazy listener::emit()
  • build: require hyprgraphics>=0.1.3 (#10350)
  • cmake: disable gprof by default
  • compositor: dont send around int max values
  • config: Restore auto-center-* for monitors (#10660)
  • config: disable hw on mgpu nvidia by default (#11018)
  • config: disable new_render_scheduling by default
  • config: nuke explicit_sync settings
  • config: remove render_ahead* config options
  • config: use parseScale for monitorv2 (#10852)
  • core: Include cstring whenever strncpy is used (#10404)
  • core: drop the legacy renderer (#10408)
  • core: never use hw cursors when tearing
  • core: use new typed signals from hu (#10853)
  • ctmcontrol: move to unique ptrs
  • cursor: reset hc data after theme change
  • cursorshape: use unique ptrs
  • debug/pass: show live/precompile blur in debug
  • desktop: prevent layers from dismissing their own seat grabs on map (#10417)
  • dmabuf: move to unique ptrs
  • eventloop: RAII the even source on readable fd
  • groupbar: force recalc on visibility changes
  • hyprctl: Remove exceptions, use modern error handling (#10664)
  • hyprctl: don't detect a negative value as a parameter (#10671)
  • hyprctl: print no open windows instead of invalid request on empty clients
  • hyprctl: replace read-only strings with std::string_view (#10851)
  • hyprpm: print all dependencies that are missing (#10907)
  • hyprpm: reject remove without a param
  • hyprpm: switch to numeric owner/group after f8bbe51 (#10345)
  • input: always allow focus to permission popups
  • input: disallow virtual keyboards from changing LED state (#10402)
  • input: do not send mouse events when outside of a surface (#10416)
  • input: ensure seat grabs from exclusive layers can be dismissed (#10418)
  • input: grab the correct active workspace on mouseMove
  • input: revert #10416 and #10418
  • input: support configuring drag_3fg from libinput (#10631)
  • input: unhide cursor on tablet events after touch events (#10484)
  • internal: Catch filesystem exceptions while iterating RunTimeDir (#10648)
  • internal: Center window on parent if available (#10582)
  • internal: Prevent double-free in attemptDirectScanout (#10974)
  • internal: Use using instead of #define to alias smart pointers (#10673)
  • internal: clean up dead snapshot code
  • internal: embed example config (#10608)
  • internal: handle setGroupCurrent properly on fs groups (#10920)
  • internal: iso C++ prohibits anonymous structs (#10955)
  • internal: refactor to use empty() (#10599)
  • internal: removed Herobrine
  • monintor: remove rathandler
  • monitor: ensure autoDir is applied when changed (#10672)
  • monitor: mark 0, 0 presentation timestamps as invalid
  • opengl: avoid reallocations in EGLImage (#10960)
  • opengl: optimize shaders and reduce unneeded drawcalls (#10364)
  • opengl: publicize shader creation/usage functions (#10378)
  • opengl: use a stack for storing monitor transform enabled
  • pass/surface: make sure popup blurs are marked for require live blur
  • pass: overload TexPass constructor
  • permissions: properly print config requests for plugins
  • plugins: don't update config plugins on state unchanged
  • plugins: made currentWindow available in RENDER_PRE_WINDOW (#10957)
  • presentation: move to unique ptrs
  • protocols/hyprland-surface: account for scaled monitor positions (#10415)
  • protocols: simulate mouse movement after activating a toplevel (#10429)
  • protocols: support xdg-shell v7
  • protocols: whitelist wp_color_manager_v1 for security_context (#10723)
  • refactor: replace all typedef with using (#10594)
  • refactor: use std::ranges whenever possible (#10584)
  • renderer: always render snapshots as 8bit
  • renderer: clamp rounding_power (#10816)
  • renderer: make lock fail textures dynamically loaded
  • renderer: move render calculation behind if case
  • renderer: reduce a lot of glcalls and cache various states (#10757)
  • renderer: refuse rendering invalid resolutions
  • renderer: render blur on fade out (#10356)
  • renderer: use alpha for the lockttytext texture
  • renderer: use makeUnique for session-lock render passes (#11019)
  • renderpass: use unique ptr instead of shared ptr
  • screencopy: ignore hidden windows in noscreenshare
  • screencopy: store a fb before permission popup if the permission is pending (#10455)
  • session-lock: don't render workspaces when locked (#10865)
  • sessionlock: restore cursor if hidden on unlock (#10889)
  • shader: replace texture2d with texture (#10893)
  • singlepixel: move to unique ptrs
  • snap: move gapOffset logic outside of for loop (#10861)
  • splashes: add zacoons' splash
  • texture: zero out the cached states in destroy (#10954)
  • versionkeeper: don't pop up on initial launch
  • windowrules/move: clamp max pos in onscreen to avoid assert crash
  • xwayland: Don't leave shell process (#10802)
  • xwayland: Use RAII instead or freeing memory manually (#10677)
  • xwayland: do not include xcb.h when xwayland is disabled (#10407)
  • xwayland: pad pid with leading zeroes in lockfile
  • xwl: dont mark the even source as readable
  • xwm: Refactored functions in XWM.cpp (#10569)

Special thanks

As always, special thanks to these people for donating to keep the project running:

Top Supporters:

Tonao Paneguini, MasterHowToLearn, Seishin, Amaan Q., --, SomeMediocreGamer, ExBhal, Xoores, Affax, Brandon Wang, mukaro, arc-d3v, ari-cake, Kay, RaymondLC92, travmonkey, alukortti, alexmanman5, taigrr, DHH, inittux111, Jas Singh, johndoe42, 3RM, Arkevius, Hunter Wesson, SA1G0N, Theory_Lukas, AuHunter

New Monthly Supporters:

Simen Graaten, Josh Ichiyo Lovejoy, idonthaveaname, edrodgers731, Narrador, blazebis, Nytem, kenya888, exebob, Gavilaan, JanCoe, Lasovar, Marcus Yanello, Freerunner, fossjunkie, ReaprXRam, ionut cristian cucu, y...

Read more

v0.49.0

08 May 20:28
9958d29
Compare
Choose a tag to compare

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 than...

Read more

v0.48.1

28 Mar 16:19
Compare
Choose a tag to compare

This is a bugfix release with some patches cherry-picked from main on top of 0.48.0.

Fixes backported

  • renderer: Simplify and fix hdr metadata setting
  • seat: avoid sending null surfaces in leave/enter events
  • xwl: don't close the fd too early
  • groupbar: apply scaling factor to text
  • pass: remove unused timeline in texpass
  • groupbar: round boxes
  • groupbar: include clipBox in opaque calculations
  • opengl: don't attempt to compile cm on gles3.0
  • surfacestate: track and apply updated state
  • internal: fix minor ubsan errors
  • workspaces: minor fixes to persistence
  • surfacestate: reset buffer bit before applying to current
  • core: don't damage the entire surface every frame
  • xwayland: cleanup server startup and fds

Special thanks

Special thanks to these gigachads for donating $$$ to help the project run:

Top Supporters:

Azelphur, arc-nix, ExBhal, SomeMediocreGamer, Robin B., yyyyyyyan, taigrr, Amaan Q., Xoores, Jas Singh, Theory_Lukas, JanRi3D, ari-cake, alukortti, RaymondLC92, MasterHowToLearn, johndoe42, Abdulaziz Al-Khater, AuHunter

New Monthly Supporters:

Brad S, tidal608, Wateir, Firstpick(FirstPick), xyrd, realivlis, DeepBlue416, omniprezenze, azunades, aljoshare, Felix, danksa, Litheos, theailer

One-time Donators:

SymphonySimper, FlorentL, Birbirl, MeaTLoTioN, elia, mearkat7, Darmock, KD, Yehoward, nyatta, Urbinholt, InTerFace, Marcos92, Rei (os.rei), 6thScythe, sayykii, HowlVenger, Massis, Somebody, 46620, skk9, Jeffrey, Hari, IgorJ, neriss, Sleroq, Insomnes, Stefano, AJ, Troy, JNC, Gery, Dafitt, Stefan Ernst, quake, lharlanx, pscschn, Bex Jonathan, AliAhmad02, KomariSpaghetti, wjyzxcv, Daniel, Zoltar358, Airor 987, CBeerta, lcassa, Guy incognito , nobody, m3hransh, Lunics, GeoffC, Tamas Tancos, mikelpint, Nathan Lepori, fxj9a, Volodymyr Shkvarok, Haltesh, omnicroissant, grmontpetit, jw, CheeseHunter117, Hunter Wesson, eternal, ddubs, noname, bones, pixel <3, eltwig, Jose, NN, Mikol, Pekka, Andi, Treeniks, derethil, dfseifert, munsman, Cespen, jlevesy, Bill Fucking Nye, Kumungus, crappy, Alin742, Nicholas Roth, sijink, alba4k, Barry, MK, Yasen

Full Changelog: v0.48.0...v0.48.1

v0.48.0

23 Mar 15:40
Compare
Choose a tag to compare

After a while, it is my pleasure to release 0.48.0 to everyone!

Hyprland is now 3 years old since March 16th, happy birthday! :)

Breaking changes:

  • opengl:force_introspection has been removed
  • render:allow_early_buffer_release has been removed
  • windowrule v1 syntax is gone. windowrule now behaves like windowrulev2, deprecating the windowrulev2 keyword

New features:

  • animations: add the gnomed animation style for windows
  • core: add an ANR dialog
  • desktop: add ability to target pinned windows in workspace rules (#9344)
  • dispatchers: add cyclenext hist option (#9055)
  • groupbar: add an option to adjust gap sizes (#9578)
  • hyprctl: Add IPC support for Hyprsunset (#9315)
  • hyprpm: add --hl-url for custom forks
  • input: add flip_x and flip_y for touchpad (#9481)
  • input: add follow_mouse_threshold (#9392)
  • keybinds: Added toggleswallow dispatcher (#5548)
  • master: add option to keep master window position (#9537)
  • protocols: add version 2 of ext-idle-notify-v1 protocol (#8959)
  • renderer: add simple color management (#9506)
  • socket2: add activespecialv2 (#9530)
  • syncobj: ensure we only add waiters on succesful checks (#9412)
  • windowrules: add option to allow size persistence between app launches (#9422)
  • xwayland: add INCR support for clipboard transfers (#9434)

Fixes:

  • cmake: add CXX_STANDARD_REQUIRED flag to ensure c++ version must be c++26 (#9476)
  • config/descriptions: add enable_anr_dialog
  • config/hyprctl: fix keyword not updating autoreload
  • config: fix a possible crash in the monitor config parser (#9460)
  • core,hyprctl: clang, clang-tidy, typo fixes and dtors changes (#9233)
  • core/Compositor.hpp: fix non-relative Texture import (#9703)
  • core/compositor: Fix dropping cursor buffer data early (#9700)
  • core: Add null activeWorkspace check in moveWorkspaceToMonitor (#9503)
  • core: fix DS and VRR automation (#9334)
  • core: add default initializers for ccompositor ptrs
  • core: add mallopt to modify trim threshold
  • datadevice: fix wrong param (#9370)
  • deps: add libinotify-kqueue on BSDs after 8dd2cd4 (#9197)
  • desktop: fix segfault when destroying a partially create layer surface (#9247)
  • desktop: move popups to UPs and fix missing subsurface resource
  • groupbar: fix groupbar missing when indicator_height is <= 0
  • hyprctl/config: fixup config descriptions, fill out missing ones, provide more data
  • input: Fix clicking through groupbar tabs (#9606)
  • input: fix touch calibration matrix overriding
  • input: fixup mouse check for flipping x / y (#9529)
  • internal: Fix compiler warnings (#9646)
  • internal: fix include paths (#9500)
  • keybinds: fix some errors not returning a failure (#9416)
  • pass/rect: fix bounding / opaque regions
  • presentation: log a fixme when there is a feedback leak
  • protocols: Fix IWaylandProtocol onDisplayDestroy m_pGlobal double-free (#9507)
  • protocols: Fix blocked color management get_information (#9563)
  • protocols: Fix cursor shape protocol valid shape check (#9547)
  • protocols: fix wrong iface for xdg_dialog
  • renderer: add an option to disable cm and auto-skip cm if not necessary
  • renderer: fix cm_fs_passthrough (#9698)
  • renderer: fix fade out on silent moves to special
  • renderer: fix missing null checks to prevent crashes (#9332)
  • renderer: fix window offset for dragged windows (#9629)
  • renderer: various fixes towards improving gpu calls robustness (#9188)
  • subsurface: fix invalid parent typo
  • toplevelexport: fix transformed origin for shm buffers (#9343)
  • window: fix missing surface null checks to prevent crashes (#9350)
  • xwayland: fix a possible clipboard race condition (#9394)

Other:

  • CI/Nix: remove deprecated magic-nix-cache-action
  • CMake: install frag files
  • CMake: install frag files (for real this time)
  • Meson: include frags in globber
  • Nix: change meson buildtype from debugoptimized to debug
  • XWayland: restore the abstract socket, and make it optional (#9615)
  • animation: don't immediately disconnect active vars during tick (#9272)
  • animations: sync inactive/active border angles when using borderangle animations (#9401)
  • anr: add a note for no pid dialogs
  • anr: add xwayland support (#9456)
  • ci: Fail on warnings (#9668)
  • cmonitor: guard old workspace
  • compositor: don't iterate over unmapped ls-es in vectorToLS
  • compositor: guard null ws in updating fade
  • config/defaultConfig.hpp: windowrulev2 -> windowrule (#9663)
  • config: actually set initial beziers (#9400)
  • config: default movefocus_cycles_fullscreen to false
  • config: nuke windowrule v1 syntax
  • config: set no_hw_cursors to auto by default and disable on tearing
  • configWatcher: watch both symlinks and canonical paths (#9219)
  • configmgr: properly free glob memory
  • core/compositor: Correctly track SHM buffer damage (#9678)
  • core: avoid .at() and use [] operator (#9347)
  • core: begin using CFileDescriptor from hyprutils (#9122)
  • core: cleanup some smart pointer usage
  • core: cleanup window properties
  • core: ignore internal move workspace calls if the workspace doesn't change (#9516)
  • core: prevent crash when monitor list is empty (#9572)
  • core: update decorations on lockgroups (#9573)
  • descriptions: remove allow_early_buffer_release
  • desktop: move popup and subsurface ctors to factories
  • dmabuf: pop buffer on failure (#9620)
  • env: move XDG_SESSION_TYPE to before backend init (#9390)
  • example/hyprland.conf: windowrulev2 -> windowrule (#9662)
  • groupbar: pass alpha to title tex render pass
  • groupbar: remove 2 pixel gap above groupbar (#9664)
  • groupbar: remove recursive window recalc (#9561)
  • groupbar: various visual improvements
  • groups: deactivate unfocused windows in groups (#9354)
  • hyprctl/layers: print pid for layershell clients (#9468)
  • hyprctl: Error handling improvements, minor cleanups (#9536)
  • hyprctl: Extract IPC code to separate method (#9223)
  • hyprctl: don't return empty str if there are no global shortcuts
  • hyprpm: return 1 when plugins are outdated (#9694)
  • ikeyboard: free xkbSymState in clearManuallyAllocd
  • input: Provide a non-zero time for button release triggered during window unmap. (#9513)
  • input: change window grab cursor to closed hand (#9196)
  • internal: redirect exec'd app output to /dev/null (#9411)
  • internal: remove unused variable (#9402)
  • internal: removed Herobrine
  • internal: use isNumber from hyprutils (#9467)
  • keybinds): prevent crash when executing movewindoworgroup (#9551)
  • managers: Use primary backend for cursor swapchain (#9645)
  • monitor: Optimize direct scanout damage (#9653)
  • monitor: avoid crash on expired special workspace monitor owner
  • monitor: preferred mode now tries first 3 modes if preferred fails before erroring (#9246)
  • monitor: report a scheduled frame when tearing on cursor move
  • monitor: round refresh rates in sorting modes
  • nix/module: toHyprconf -> toHyprlang (#9221)
  • nix: remove wayland-protocols overlay and bump flake (#9613)
  • opengl: simplify cm pipeline
  • pass: add input region debug
  • popup: improve ::at() behavior
  • popup: stop refocusing at unmap
  • popup: take xdg geometry into account in input calcs
  • protocols: Ensure protocol dtors are called in ProtocolManager dtor (#9521)
  • protocols: Support content-type-v1 proto (#9226)
  • protocols: Support wp color management proto (#9444)
  • protocols: implement hyprland-ctm-control rev 2 (#9267)
  • refactor: clang-tidy in compositor (#9241)
  • render: enforce framebuffer offloading and remove introspection toggle (#9217)
  • renderer: calculate UV using both pixel and monitor dimensions (#9210)
  • renderer: delete now redundant ifdefs (#9651)
  • renderer: disable explicit if aquamarine output doesn't support it (#9396) (#9398)
  • renderer: don't crash if cm fails to compile
  • renderer: remove spammy log
  • screencopy, render: Use explicit sync for screencopy (#9697)
  • scripts/generateVersion.sh: convert to posix (#9433)
  • scripts: don't overwrite generated version if we're not in a git repo
  • seatmgr: avoid crash on null surfs
  • session-lock: send locked when in unsafe state (#9399)
  • splashes: update for 3ya
  • subsurfaces: dont try to access popup surfaces when handling subsurface updates (#9421)
  • syncobj: dont crash compositor on protocol errors (#9627)
  • syncobj: refactor point timelines (#9689)
  • syncobj: restore SHM buffer reset (#9675)
  • syncobj: use eventfd instead of stalling fd checks (#9437)
  • tablet: take active_area_size into account when sending tip event (#9325)
  • touch: reject swipe on locked sessions
  • types: Upgrade buffer ref from WP to SP (#9677)
  • window: move size reporting to animation begin callback (#9298)
  • windowrules: store floating size on close instead of resize (#9569)
  • windows: respect noinitialfocus with workspace changes (#9586)
  • workspaces: update persistence on workspace rename (#9368)
  • xcursor: move config check to sync gsettings (#9473)
  • xwayland: configure on a configure request and cleanup geometry conversion (#9375)
  • xwayland: correct pointer coordinate mismatch in X11 windows (#9259)
  • xwayland: handle window coords correctly (#9238)
  • xwayland: improve dnd and cleanup (#9405)
  • xwayland: prevent invalid window configurations for X11 apps (#9253)
  • xwayland: respect window size set by configure requests (#9190)
  • xwayland: send synthetic configure events (#9193)

Special thanks

Special thanks to these people for donating to help the project continue:

Top Supporters:

Azelphur, arc-nix, ExBhal, SomeMediocreGamer, Robin B., yyyyyyyan, taigrr, Amaan Q., Xoores, Jas Singh, Theory_Lukas, JanRi3D, ari-cake, alukortti, RaymondLC92, MasterHowToLearn, johndoe42, Abdulaziz Al-Khater, AuHunter

New Monthly Supporters:

Brad S, tid...

Read more

v0.47.2

02 Feb 00:51
Compare
Choose a tag to compare

A minor update on top of 0.47.1 with some additional fixes and patches.

Fixes backported

  • xwayland: handle window coords correctly (#9238)
  • monitor: preferred mode now tries first 3 modes if it fails before erroring (#9246)
  • xwayland: prevent invalid window configurations for X11 apps (#9253)
  • desktop: fix segfault when destroying a partially created ls (#9247)
  • configWatcher: watch both symlinks and canonical paths (#9219)
  • xwayland: correct pointer coordinate mismatch in X11 windows (#9259)
  • animation: don't immediately disconnect active vars during tick (#9272)
  • desktop: move popup and subsurface ctors to factories
  • popup: take xdg geometry into account in input calcs
  • desktop: move popups to UPs and fix missing subsurface resource

Special Thanks

Special thanks as always to these chads for donating:

  • Xoores
  • johndoe42
  • yyyyyyan
  • taigrr
  • SomeMediocreGamer
  • Azelphur
  • alukortti
  • Theory_Lukas
  • MasterHowToLearn
  • ari-cake
  • AuHunter
  • Amaan Q
  • Jas Singh
  • matipan
  • SViN Drawing
  • NextDreamJob.LIVE
  • Plyply
  • atomicptr
  • Skidam
  • Avid
  • FUTO
  • XoZu
  • System64
  • Pascal Nitsche
  • JustOptimize
  • billybo_o
  • denast
  • gorfxx
  • LCLP
  • Ben
  • Dainatello
  • Diego
  • Riesi
  • Xellor
  • Daniel
  • Abdulaziz Al-Khater
  • Cassio Fernando
  • Efo
  • Adrian Dobkowski
  • Ricardo C
  • JanRi3D
  • andmars
  • SiliconVillager
  • Frank Huurman
  • Francois
  • Fan2Shrek
  • anna//bool

Full Changelog: v0.47.1...v0.47.2

v0.47.1

29 Jan 23:23
Compare
Choose a tag to compare

v0.47.1 comes with, as usual, a few fixes backported from main. Some crashes, odd behavior, flickers, etc.

Fixes backported

  • xwayland: send synthetic configure events (#9193)
  • deps: add libinotify-kqueue on BSDs (#9197)
  • xwayland: respect window size set by configure requests (#9190)
  • ikeyboard: free xkbSymState in clearManuallyAllocd
  • configmgr: properly free glob memory
  • presentation: log a fixme when there is a feedback leak
  • renderer: calculate UV using both pixel and monitor dimensions
  • pass/rect: fix bounding / opaque regions
  • config/hyprctl: fix keyword not updating autoreload
  • monitor: round refresh rates in sorting modes
  • popup: stop refocusing at unmap
  • subsurface: fix invalid parent typo

Special Thanks

Special thanks as always to these chads for donating (full list from 0.47.0, as I forgot to include it in the beginning, sorry!)

  • Xoores
  • johndoe42
  • yyyyyyan
  • taigrr
  • SomeMediocreGamer
  • Azelphur
  • alukortti
  • Theory_Lukas
  • MasterHowToLearn
  • ari-cake
  • AuHunter
  • Amaan Q
  • Jas Singh
  • matipan
  • SViN Drawing
  • NextDreamJob.LIVE
  • Plyply
  • atomicptr
  • Skidam
  • Avid
  • FUTO
  • XoZu
  • System64
  • Pascal Nitsche
  • JustOptimize
  • billybo_o
  • denast
  • gorfxx
  • LCLP
  • Ben
  • Dainatello
  • Diego
  • Riesi
  • Xellor
  • Daniel
  • Abdulaziz Al-Khater
  • Cassio Fernando
  • Efo
  • Adrian Dobkowski
  • Ricardo C
  • JanRi3D
  • andmars
  • SiliconVillager
  • Frank Huurman
  • Francois
  • Fan2Shrek
  • anna//bool

Full Changelog: v0.47.0...v0.47.1

v0.47.0

27 Jan 12:11
Compare
Choose a tag to compare

New year, new Hyprland release brought to you by Yours Truly.
This update is quite large, so you might want to read these patch notes.

There have been quite a bunch of internal rewrites, mostly around memory safety, the renderer, and animation system. Although performance shouldn't change
much, it should improve stability in edge cases. Please do report any regressions you might find, if they aren't reported already.

Notes for packagers:

  • new dependency: glaze
  • I've dropped binary releases. Please use the source to build.

Breaking changes:

  • master:always_center_master has been replaced with a more flexible master:slave_count_for_center_master

New features:

  • CMake, Meson: add option controlling hyprpm building
  • config: add exec(-onec) with rules and execr(-once) (#8953)
  • core/renderer: Add GPU hotplug support (#8980)
  • core: Add a periodic donation request (#8981)
  • core: Add render:allow_early_buffer_release to make buffer release configurable (#9019)
  • core: Add support for HDR and color management protocols (#8715)
  • core: add --verify-config to verify the config with Hyprland
  • ctm: add an internal fade animation to ctm transitions
  • debug: add debug:pass for debugging the render pass
  • hyprpm: add an option to force reload all plugins (#8883)
  • hyprpm: add glaze dependency FetchContent fallback (#8899)
  • keybinds: add new window destruction dispatchers (#8962)
  • keybinds: add visible arg for cyclenext (#9045)
  • master: add option to show slaves on left in center orientation (#8940)
  • pluginAPI: add register dispatcher v2
  • protocols: add hyprland_lock_notify_v1 implementation (#9092)
  • protocols: add hyprland_surface_v1 implementation (#8877)
  • protocols: add hyprland_surface_v1.set_visible_region implementation (#9120)
  • renderer: Add supercircular window corners (#8943)
  • selectors: add a tag: to for matching window tag(s) by regex (#8985)
  • socket2: add focusedmonv2 event (#8921)
  • windowrules: add negative: prefix for negating a regex

Fixes:

  • animation: fixup adding animvars during ::tick (#9030)
  • animations: fix XWayland cursor glitch and refactor skill issues (#9033)
  • animations: fix borderangle once (#9149)
  • ci: fix "Resource not accessible by integration" for cf workflow (#9144)
  • compositor: fix incorrect cast, use lambda capture instead (#9161)
  • config: fix animations requiring all args
  • config: fix float animation speeds < 0 (#9123)
  • config/ConfigWatcher.cpp: add missing include needed for clang (#9166)
  • configmgr: fix crash on very early plugin loads
  • core/compositor: fix too early buffer release (#8966)
  • core: fix custom resolutions (#8897)
  • core: fix possible crash on null active workspace
  • data-device: fix edge case crash on null xwm
  • debug: fix ISDEBUG checking (#8823)
  • debug: fix overlay not rendering
  • desktop/DesktopTypes.hpp: fix include (#9104)
  • dwindle: fix possible crash on null ws
  • functionHooks: wait for hyprland pages before returning addr for trampo
  • helpers/Monitor.cpp: fix include path (#9039)
  • hyprctl: Fix hyprctl batch JSON command (#8749)
  • hyprctl: fix hyprctl --batch not working with exec rules (#8952)
  • hyprpm: fix hyrpm sometimes returning 0 despite errors occuring (#8761)
  • keybinds: fix movefocus fallback for special workspaces (#9040)
  • keybinds: fix nullptr deref in forcekillactive (#9021)
  • keybinds: fix previous_per_monitor logic (#9010)
  • logging: fix Gpu info (#8764)
  • pass: fixup debug mode rendering of input boxes
  • protocols: fix alpha-modifier noncompliance (#8929)
  • protocols: fix compilation error (#8988)
  • renderer: fix CRendererHintsPassElement reset duplication issue (#8928)
  • renderer: fix fullscreen hdr check (#9076)
  • renderer: fix oversized blur precalcs not blurring at all
  • renderer: fix rare case when a tiled window would be rendered over fs
  • shaders: fix blank windows when using corner rounding (#8969) (#8971)
  • window: fixup fade out animation on silent moves
  • xwayland: fix clipboard mime name and atom mismatch (#9137)
  • xwayland: fix compile with no xwayland
  • xwayland: fix crash when trying to initialize without Xwayland installed (#9077)
  • xwayland: fix dnd including xwayland
  • xwayland: fix pointer mismatches with multiple monitors (#9179)
  • xwayland: fix sending large clipboard data (#9134)
  • xwayland: various window handling fixes
  • xwm: fixup targets in selection requests

Other:

  • Meson: properly install 'hyprland' symlink (#9091)
  • Renderer: rewrite render scheduling (#8683)
  • animation: avoid crashes in ::tick() on mutations
  • animationmgr: don't warp based on POINTY value (#9000)
  • binds: cycle within group on single monitor if no window found in the argument direction. (#8714)
  • ci(clang-format): directly do the clang-format instead of error (#8955)
  • config: avoid querying the fs every tick
  • config: disable borderangle by default (#9165)
  • config: update animation even if disabled
  • config/ConfigManager.cpp: add instruction to edit config (#9130)
  • core: add LIKELY and UNLIKELY macros
  • core: Unbreak build on FreeBSD (#8762)
  • core: always use goal size to send to clients
  • core: avoid activating toplevel-less surfaces
  • core: cleanup header includes (#9088)
  • core: fade in windows when they are brought from invisible workspaces
  • core: guard workspace and monitor in moveWorkspaceToMonitor
  • core: make persistent workspaces always follow the config
  • core: move all shared_ptrs from the STL to hyprutils (#9143)
  • core: move parts of the animation system to hyprutils (#8868)
  • core: move sendWindowSize off of xwaylandmgr
  • core: move to inotify for monitoring the config files
  • core: refactor/improve monitor mode selection (#8804)
  • core: reserve vector sizes as much as we can (#9118)
  • core: update groups on movewindow (#9183)
  • core: use cpu-buffer hw cursors on nvidia by default
  • core: use readFileAsString instead of cat for os-release
  • ctm: disable fade animation by default on nvidia
  • datadevice: do the unfocus surface stuff before dndActive is true (#9157)
  • datadevice: guard XWayland server against crashes
  • desktop: move desktop types to memory-safe pointers
  • dnd/seat: avoid sending button events during a dnd op
  • foreign-toplevel: update active on null window focus (#8860)
  • fractional-scale: avoid redundant and duplicate scale events
  • github: bug issue template improvements (#8894)
  • groupbar: unify title rendering
  • groups: honor group lock window rule (#8782)
  • hooksystem: avoid huge include for HANDLE
  • hyprpm: use glaze to parse hyprctl plugin list (#8812)
  • input: abord dnd op on escape pressed
  • input: pass touch events to lock screens (#9129)
  • internal: Make static analysis more happy (#8767)
  • internal: added reference to CTimer class in KeybindManager (#8836)
  • internal: few small monitor improvements (#8890)
  • internal: remove dead code (#8748)
  • internal: removed Herobrine
  • internal: update window position/size after changing fullscreenstate (#8865)
  • keybinds: attempt to wrap around if fallback is allowed in movefocus
  • layershell: check if layer is valid (#9156)
  • layershell: return focus to a valid ls on close if possible
  • layout: apply group rules after window creation (#8779)
  • layout: damage window properly on float mode changes
  • layout: force full damage on toggling floating mode
  • layout: set window size after toggling floating
  • logging: get broader GPUINFO (#8753)
  • master: make loop around optional when cycling (#8926)
  • master: replace always_center_master with slave_count_for_center_master (#8871)
  • monitor: avoid crashes on no good modes
  • monitor: bring back old description behavior
  • nix/module.nix: expand nixos module for configuring hyprland
  • opengl: only allocate offMainFB on demand
  • opengl: use uv to avoid rendering the entire blurbox
  • pass: allow removing all pass elements of a given type
  • pass: ignore empty rectangles queued
  • pass: improve blur region detection
  • pass: improve pass debug mode
  • pass: improve pass debugging
  • pass: mark crucial elements as undiscardable
  • pass: scale blur region in ::render
  • pass: scale blur regions properly
  • pointer: always scale the cpu cursor to the right size
  • protocols: allow hyprland-toplevel-export to capture hidden windows (#9041)
  • protocols: do not capture cursor in toplevel without pointer focus (#9042)
  • protocols: do not destroy screencopy resources before client request (#9048)
  • protocols: immediately copy toplevel content when ignoreDamage set (#9049)
  • regex: log an error if regex parsing fails
  • renderer/internal: stop using box pointers
  • renderer: Auto enable wide color gamut in HDR mode (#9090)
  • renderer: Do not set hdr metadata unless needed (#9014)
  • renderer: allow plugins to know what window was rendered in post
  • renderer: don't access hdrMetadata optional if it has no value (#8987)
  • renderer: unload background texture if it's disabled
  • renderer: use a render pass for render modif in client render
  • renderer: use cairo for cpu buffer rendering (#9071)
  • shadow: avoid drawing empty shadows
  • snap: don't snap to any windows if workspace has a fullscreen window (#8870)
  • snap: give edge snapping precedence over corner snapping (#8873)
  • snap: revert #8659, use bounds checking instead of bit mask (#8872)
  • subsurface: damage the entire parent on size change
  • tablet: send motions on tip events (#9132)
  • window: only set m_iMonitorMovedFrom, when moving to a different monitor (#9160)
  • windowrules: precompute regexes for window/layer rules
  • windows: honor xdg_toplevel_set_fullscreen output hint (#8965)
  • windows: minor initial workspace improvements
  • xwayland: avoid sending value of real...
Read more

v0.46.2

19 Dec 19:43
Compare
Choose a tag to compare

Another round of minor fixes and patches for 0.46.0. Mostly edge-case crashes.

Fixes backported

  • windowrules: fixup duplicate rule enum tags
  • hyprctl: fix hyprctl batch json command (#8749)
  • core: avoid activating toplevel-less surfaces
  • xwayland: fixes to no_xwayland builds
  • xwm: fixup targets in selection requests
  • core: unbreak build on FreeBSD (#8762)
  • hyprpm: fix hyprpm sometimes returning 0 despite errors occurring (#8761)
  • core: fix possible crash on null workspace
  • layout: apply groups after window creation (#8779)

Special Thanks

As always, special thanks for donating to:

  • 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
  • benvonh
  • John Oberhauser
  • loseardes77
  • matipan
  • SViN Drawing

Full Changelog: v0.46.0...v0.46.2

v0.46.1

17 Dec 16:33
Compare
Choose a tag to compare

A minor release with a patch backported from main.

Fixes backported

  • windowrules: fixup duplicate rule enum tags

Special Thanks

Special thanks as always to these chads for donating $$$:

  • 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
  • benvonh

Full Changelog: v0.46.0...v0.46.1