Skip to content

Releases: hyprwm/Hyprland

v0.45.1

18 Nov 14:39
Compare
Choose a tag to compare

A minor update to 0.45.0 with a few fixes backported from main.

Fixes backported

  • makefile: add stub to discourage direct make
  • defaultConfig: fixup smart gaps rules
  • hyprpm: fix format crash
  • workspace: fix missing name via focusworkspaceoncurrentmonitor (#8484)
  • constraints: don't warp pointer position on release (#8491)
  • core: guard pmonitor in focuswindow
  • protocols: mark primarySelection as not privileged
  • renderer: don't render unmapped popups
  • renderer: scaled surfaces could have zero area (#8423)
  • shell: don't use fgrep, prefer grep -F
  • windows/xdg: minor cleanup of min/max size calculations
  • workspacerules: Do not check 'on-created-empty' if using a workspace windowrule (#8486)
  • xcursors: store themes in a std:set to order it (#8474)

Special thanks

Special thanks to these chads for donating $$$ to keep this ball rollin':

  • Xoores
  • ari-cake
  • taigrr
  • SomeMediocreGamer
  • Azelphur
  • maltbeverage
  • alukortti
  • MasterHowToLearn
  • Theory_Lukas
  • johndoe42
  • Milan
  • yyyyyyyan
  • AuHunter
  • Amaan Q.
  • Jas Singh
  • emilnymann
  • William Theesfeld
  • fizzial
  • Different Name
  • Grzegina

Full Changelog: v0.45.0...v0.45.1

v0.45.0

09 Nov 14:55
Compare
Choose a tag to compare

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

Read more

v0.44.1

09 Oct 13:03
Compare
Choose a tag to compare

A minor patch release with a few patches backported from main to 0.44.0.

Fixes backported

  • output/xdg-output: avoid sending events to released globals
  • keyboard: update group state on change for the sym resolve state
  • defaultConfig: add a nofocus rule for weird X windows
  • pointer: expand sw cursor damage box
  • keybinds: fixup xkb_states for resolve_by_sym
  • config: give simple help for super+q not working
  • screencopy: fix screencopy frames not being cleaned up
  • layout: fix auto group when opening a new window in a non-focused workspace

Special thanks

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

  • Xoores
  • taigrr
  • SomeMediocreGamer
  • Azelphur
  • ari-cake
  • alukortti
  • MasterHowToLearn
  • Theory_Lukas
  • maltbeverage
  • johndoe42
  • Milan
  • yyyyyyyan

Full Changelog: v0.44.0...v0.44.1

v0.44.0

06 Oct 11:22
Compare
Choose a tag to compare

An update full of bugfixes and new niceties has landed upon us :)

New features:

  • args: add --version to binary args
  • config: add descriptions for dwindle and master layout options (#7933)
  • config: add order rule for layers (#7697)
  • core: add HYPRLAND_CONFIG environment variable (#7851)
  • core: add a --systeminfo parameter to gather systeminfo without running
  • dwindle: add config option split_bias (#7920)
  • dwindle: add movetoroot method to layout messages (#7903)
  • hyprctl: add defaultName to workspacerules
  • hyprctl: add solitary field to hyprctl monitors
  • hyprctl: add submap request
  • layout: add auto_group to control default grouping (#7883)
  • userchecks: add an xdg_current_desktop check

Fixes:

  • Meson: fix protocols, clean up
  • Nix: fix meson PCH flag
  • Meson: add tracy dependency
  • Nix: re-add hyprland-protocols
  • byteoperations: add missing header
  • core: Fix Musl builds (#7934)
  • dispatchers: fixup dpms toggle (#7875)
  • gammactrl: fix potential crash on monitor removed (#7828)
  • github(nix-build): switch to better nix installer, attempt at fixing hash mismatch (#7701)
  • internal: Fix change group current fullscreen state query (#7802)
  • internal: fix initial cursor warping (#7793)
  • internal: fix missing include directive (#7984)
  • layout: fix dragging a window into a group after e242694 (#7976)
  • man: Fixed the man page to show the new information (#7713)
  • meson: fix arch build with new protocol
  • protocol: fix missing include
  • renderer: Fix resize artifacts (stretching, bumps) (#7499)
  • renderer: fix uvBR calculation (#7975)
  • textinput: fix tiv3 leave (#7761)
  • tiv1: fix deleting first character (#7716)

Other:

  • CMake: use hyprland-protocols from pkg-config, fallback to subproject
  • CMake: use udis86 from pkg-config, fallback to subproject
  • Internal: move to Mat3x3 from hyprutils (#7902)
  • Meson: pass AQUAMARINE_VERSION argument
  • Meson: try to find udis86 through pkgconfig, fallback to subproject
  • assets: Remove execute permission from lockdead.png (#7715)
  • build: Set cmake_minimum_required to version 3.30 (#7709)
  • cmake: drop ninja dep
  • compositor/wayland: up the max buffer size to avoid disconnects when app hangs
  • compositor: update all xdg outputs on arrange
  • config: Limit max volume to 100%
  • config: include XF86Audio* key bindings to default cfg (#7695)
  • data-device: conform to reported source actions
  • data-device: don't send default action of move
  • data-device: send clock time in motion events
  • dispatchers: allow moveintogroup when floating (#7818)
  • dmabuffer: attempt importing failed dmabufs as implicit
  • eventloop: dispatch pending in session on start
  • github: encourage usage of --systeminfo if Hyprland won't launch
  • github: improve issue template (#7699)
  • hyprctl: allow parsing empty value
  • hyprctl: use the getMonitorData helper everywhere
  • input: move dmps activation to input listeners (#7721)
  • internal: removed Herobrine
  • internal: Delay monitor events/hooks (#7797)
  • internal: move to hyprutils' scopeguard
  • internal: nuke wlsignal and related
  • monitor: arrange monitors on connect and disconnect
  • monitor: cleanup and modernize scheduleDone
  • monitor: use a scope guard for disconnect events
  • opengl: use GL_CLAMP_TO_EDGE instead of GL_CLAMP
  • pointermgr: Hide hardware cursor on leave (#7806)
  • pointermgr: avoid derefing null outputs
  • pointermgr: avoid hogging CMonitor refs
  • protocolmgr: don't expose the fallback output
  • shm: send a static list of shm formats
  • single-pixel-buffer: new protocol impl
  • single-pixel: set buffer size to 1,1
  • textinput: don't reset if ti isn't enabled (#7798)
  • textinput: handle IME resetting (#7731)
  • version: log build aquamarine version
  • wayland/output: send geometry in updateState
  • wlr-output-configuration: Improve output configuration (#7571)
  • wlr-output-management: accept 0 refresh rates
  • xdg-output: minor cleanups
  • xwayland: Some readability improvements (#7807)
  • xwayland: remove extra x11 deactivation (#7755)
  • xwayland: use proper path for the XWayland sockets (#7852)
  • xwm: Minor cleanup, add wrappers for basic types (#7856)

Special Thanks

Special thanks to these chads for donating some moolah:

  • Xoores
  • taigrr
  • SomeMediocreGamer
  • Azelphur
  • ari-cake
  • alukortti
  • MasterHowToLearn
  • Theory_Lukas
  • maltbeverage
  • johndoe42
  • Milan
  • yyyyyyyyyan
  • Mikey G
  • Piotr
  • herrkami
  • frozenkro
  • Leicham
  • crispy caesus
  • andresilva
  • embed-the-world

MRs

New Contributors

Read more

v0.43.0

08 Sep 17:00
Compare
Choose a tag to compare

A new, big update 0.43.0 brought to you by Yours Truly.

Many bugfixes, and new features, as always.

Notes for packagers

  • Hyprland now requires C++26 support to build. gcc>=14 or clang>=18 will be needed.
  • Installable assets have moved to assets/install/. All pngs there should be installed to $PREFIX/share/hypr/

New features:

  • IPC: Add config descriptions (#7377)
  • animations: add workspace in/out configs
  • config: Add a variable to prevent groups from merging after being dragged (#7650)
  • config: Add a window rule to render while unfocused (#7582)
  • config: Added default button mapping for xf86 keys (#7672)
  • config: add exec-shutdown for running commands on shutdown (#7683)
  • core: add option to control which window to focus on close (#7368)
  • cursormgr: add a new setting to sync gsettings (#7253)
  • env: Add HYPRLAND_NO_SD_VARS env condition (#7358)
  • hyprctl: add active and all to switchxkblayout
  • logs: Add file path to asset ERR log (#7336)
  • windowrules: add fullscreenstate field (#7466)
  • xwayland: add option to enable/disable xwayland (#7633)

Fixes:

  • Fix crash reports having execute permission
  • Fix missing include needed by clang
  • build: Fix NO_XWAYLAND compilation (#7538)
  • config: add missing header for libc++ after 92744b5 (#7403)
  • config: fix explicit sync option warning (#7293)
  • config: fix uninitialized values with mode parsing
  • core: fix crash on monitor removed with gammaControl (#7601)
  • core: fix data race and a unsigned int rollover (#7278)
  • cursormgr: fix cursor gsettings on session change (#7295)
  • data-device: Fix selection mismatch when wlr resets primary selection (#7598)
  • decorations: fix manual resize not recalculating decos (#7323)
  • example/config: fix typo in default config (#7446)
  • gamma-control: fix crash on monitor disconnect (#7353)
  • helpers: fix: revert to signed arithmetic for cycling through workspaces (#7339)
  • hyprpm: Fix checking dependencies (#7504)
  • input: Fix disabling tap-to-click (#7304)
  • input: Fix modifier keys getting stuck if depressed during config reload (#7486)
  • install: Prepend ${DESTDIR} when creating hyprland symbolic link (fixes #7280). (#7281)
  • keybinds: Fix fullscreenState toggling behaviour (#7288)
  • keybinds: Fix syncFullscreen inconsistent with state when set by fullscreenState (#7343)
  • keybinds: fixup misused kb state
  • misc: fix some minor typos (#7530)
  • pointermgr: fix initial cursorwarp (#7286)
  • presentation-feedback: minor fixups
  • protocol: fix logm template checks
  • render: fixup format mismatch after leaving DS
  • renderer: minor direct scanout fixes (#7594)
  • screencopy: fix 10b format r/b flip
  • screencopy: fixup 10-bit sharing via shm on nvidia
  • sessionLock: fix misc:allow_session_lock_restore (#7511)
  • textinput: fix ime activation in some edge cases (#7660)
  • workspacerules: fix on-created-empty window focus (#7657)

Other:

  • CI: clarify Nix CI jobs; disable on forked repositories
  • CI: disable stale workflow on forks (#7535)
  • CMake: drop duplicate -luuid after 5262292
  • CMake: drop unused deps after 016da23
  • CMakeLists: wayland.xml is in wayland-scanner pkgdatadir
  • Nix: exclude wayland-scanner until next staging merge
  • Nix: include xcursor regardless of xwayland
  • Nix: remove unused dependencies
  • README: Change image sources from vaxerski/Hyprland to hyprwm/Hyprland (#7315)
  • Revert "syncobj: wait for deadline instead of available"
  • Update aquamarine input in flake
  • compositor: update suspendstate on window move (#7396)
  • core: Include cstring whenever strncpy is used (#7267)
  • core: Move to C++26 and use native_handle to CLOEXEC the debug fd (#7219)
  • core: Preserve existing XDG_CURRENT_DESKTOP (#7347)
  • core: make most for loops use const references (#7527)
  • cursor: make inactive_timeout setting a float (#7268)
  • data-device: send dndFinished when dnd offer is destroyed while unfinished
  • eventloop: don't dispatch in enterLoop
  • examples: more systemd examples (#7409)
  • headers: set correct paths to header files (#7245)
  • hyprctl: avoid parsing string::npos on invalid cmd (#7544)
  • hyprpm, hyprctl: update shell completions
  • hyprpm, hyprctl: remove Makefiles
  • input: don't emit idle activity when calling simulateMouseMovement (#7649)
  • input: kb focus mouse focused window if unset (#7666)
  • input: move idle notify to input handlers (#7659)
  • input: try to refocus a focusable window when seat grabs are reset (#7669)
  • internal: introduce new types to avoid unsigned int rollover and signed int overflow (#7216)
  • internal: removed Herobrine
  • keybinds: refactor dispatchers to be better (#7331)
  • keybinds: release mods after sendshortcut (#7581)
  • layersurface: don't unref from monitor until dtor
  • layersurface: dont rollover on size_t (#7451)
  • layersurface: remove layer on destroy from monitor (#7457)
  • linux-dmabuf: allow on split-node systems
  • logs: don't get timezone every time logging (#7550)
  • meson: explicitly specify path for find(1) (#7590)
  • misc: Rename all instances of "emtpy" to "empty" (#7522)
  • misc: constify the remaining for loops (#7534)
  • monitor: avoid dangling references to old monitors being undestroyed
  • monitors: avoid crash on wayland output removal
  • output: dont cast enum out of range (#7448)
  • protocols: avoid crashing in drmlease (#7290)
  • protocols: destroy new xdgDialog protocol at right time (#7600)
  • protocols: refactor protocol logging to a macro (#7324)
  • renderbuffer: ensure framebuffer gets deleted (#7363)
  • renderer: better lockscreen dead behavior (#7574)
  • renderer: fade out windows on silent moves
  • renderer: pass custom modelines to aq
  • screencopy: nuke unused stuff
  • sessionLock: ensure sls focus in some edge cases (#7647)
  • shm: align size to stride (#7383)
  • syncobj: wait for deadline instead of available
  • textinput: don't deactivate ime if another ti is focused (#7617)
  • textinput: send deactivate to ime on destory ti (#7614)
  • window/xwayland: minor property cleanup
  • window: don't focus on activate if window isn't mapped yet
  • windows: support size with pseudo tiled
  • xcursor: handle file errors when loading xcursor themes (#7326)
  • xcursormgr: dont apply scale on gsettings (#7316)
  • xdg-dialog: implement new protocol
  • xwayland: deactivate xwayland focus if wayland is focused (#7458)
  • xwayland: update overrideRedirect on map and configure (#7575)
  • xwaylandmgr: minor refactor to activateSurface
  • xwm: don't mark selection events as succeeded
  • xwm: read atom name from xcb (#7546)

Special Thanks

Special thanks to these chads for donating, as always:

  • Xoores
  • taigrr
  • SomeMediocreGamer
  • Azelphur
  • ari-cake
  • alukortti
  • MasterHowToLearn
  • Theory_Lukas
  • maltbeverage
  • Plyply
  • Poor as shit
  • Milan
  • johndoe42
  • yyyyyyyan
  • seb
  • Cromat_tux
  • DaGaugl
  • Philipp Soldunov
  • nico
  • atomicptr
  • ircurry
  • normal
  • Mikey G
  • JPEG
  • Sven
  • neoney
  • Valentin MATHIEU
  • Morally2412
  • Enzi
  • Logno
  • Mihail
  • niraami
  • KelpShake

MRs

Read more

v0.42.0

07 Aug 19:36
Compare
Choose a tag to compare

At last, a very large update 0.42.0 has finally dropped!

Notable changes

  • Wlroots has been dropped, and is no longer a dependency of Hyprland.
  • Explicit sync support has been added and will be automatically turned on/off depending on your setup. For some select nvidia users, this might cause glitches. In such cases, disable it with render:explicit_sync = false
  • Old protocol implementations redone in our newer, more memory-safe impl style (thanks @ikalco!)
  • In-house XCursor implementation for legacy themes (thanks @gulafaran!)
  • Tons and tons of fixes and performance improvements!

Breaking changes

  • misc:no_direct_scanout -> render:direct_scanout
  • fakefullscreen has been dropped in favor of the new fullscreenstate dispatcher
  • custom modelines are not working anymore (fixed on git)

News for packagers

  • New dependency: aquamarine
  • Dropped submodule: wlroots
  • Assets installation directory changed from $DATAROOTDIR/hyprland to $DATAROOTDIR/hypr

New features:

  • config: add option to exit window while retaining fullscreen (#516) (#6880)
  • core: Add missing header for libc++ after e989a0b (#7158)
  • core: add a destructor to CHyprOpenglImpl and avoid wl_container_of undefined behaviour (#7101)
  • crashreporter: add date and flags to crash report (#7028)
  • debug: add Nvidia driver info (#6715)
  • flake: add clang-tools to devShell (#6916)
  • gitignore: add CMake residual files
  • hyprpm: add short error code explanations
  • internal: Add functions to hyprctl header (#6745)
  • keybinds: add bindp and noshortcutsinhibit (#7017)
  • keybinds: add safeguard to mousebinds (#7034)
  • pluginapi: Add force reload of config at the end of plugin initialization (#7099)
  • pointer: change min cursor padding to 0 (#6027)
  • socket2: Add windowtitlev2 event which includes the window address (#6856)
  • touch: add touch swipe invert config (#6940)

Fixes:

  • border: fixup infinite recursion
  • compositor: fix general:extend_border_grab_area (#7214)
  • compositor: fix log typos (#7111)
  • configmgr: fix warning
  • core/surface/buffer: Buffer lock/release fixes (#7110)
  • core/surface: fixup a few pointer handling edge cases
  • core: Fix crash on opening chromium (#6932)
  • core: fix a few ubsan issues reported at exit of hyprland (#6699)
  • decorations: fix infinite recursion on no_gaps when only (#7169)
  • drm-syncobj: fixup fd leak with timelines
  • hyprctl: increase hyprctl timeout to 5s to fix #6801 (#7152)
  • ime-relay: fix crash on nullptr surface focus
  • input: Fix hyprctl switchxkblayout not actually changing layout (#7070)
  • input: fix capabilities enum types passed
  • input: fix invalid usage of dev in setTouchDeviceConfigs
  • input: fix keyboard leds with multiple keyboards (#7079)
  • input: fix leds on kb creation (#7206)
  • internal: fix fullscreen typos (#7134)
  • keybinds: fix NoSymbol keybinds (#7199)
  • keybinds: fix movewindow float to 0 (#6777)
  • layersurface: fixup focus issues in onUnmap
  • layout: fix dynamic rules not updating after setting fullscreen (#7129)
  • meson: fix wlroots-hyprland dep checks (for libliftoff patch to work) (#6736)
  • output: minor tearing fixes
  • pointer: fix buffer crash (#7131)
  • presentation-feedback: fix invalid values sent after aq merge
  • renderer: Explicit sync fixes (#7151)
  • renderer: fix a few xray regressions (#6855)
  • renderer: fixup crashes on inaccessible files for bg
  • renderer: fixup nvidia driver version checks
  • renderer: partially revert previous xray fix (#6868)
  • session: fix activate events being always treated as on (#6696)
  • sessionLock: fix the check for locking a locked session (#6843)
  • shortcutsInhibit: fix crash
  • style: fix clang-format
  • surface: fix zero_scaling xwayland damage
  • surface: fixup logical damage size calculations
  • toplevelexport: fix flipped r/b channels when sharing windows (#6861)
  • touch: fix touch swipe invert config (#7014)
  • virtual-pointer: fixup virtual pointer warp events
  • wayland/compositor: fixup buffer damage tracking for wl_shm buffers
  • wayland/compositor: fixup double buffer releases
  • wayland/surface: fixup self-owning surface roles
  • xdg-shell: fix xdg-positioner y-flip (#7094)
  • xdg-shell: fixup unassigned wl surfaces to xdg surfaces
  • xwayland: fix high cpu idle usage
  • xwayland: fix setting title prop (#6809)
  • xwayland: fixup WM_SIZE_HINTS handling according to ICCCM
  • xwm: Fix xwayland black window bug after losing focus (#6966)

Other:

  • CMake, Meson, Nix: replace props.json with VERSION
  • CMake, Meson: install config and wallpapers to DATADIR/hypr
  • CMake: Suppress CMake warning about GNUInstallDirs
  • Completions: use only awk (#6763)
  • Core: Move to aquamarine (#6608)
  • Nix: remove meson (used by wlroots)
  • compositor: ignore setting surface scanout if DS is disabled
  • compositor: implement wayland socket handover (#6930)
  • compositor: minor cleanups for fading out layers
  • compositor: simplify getWindowFromSurface
  • config: avoid using initial ws tracking for exec-once
  • config: don't crash when getenv HOME returns null
  • config: use hyprutils helper (#6891)
  • core/surface: drop map/unmap events in member funcs
  • core: Improve handling of window properties (#6776)
  • core: Properly shutdown wl display (#7018)
  • core: avoid locking 2 wayland sockets (#6971)
  • core: emit unmap event after unmap in surface destroy
  • core: move to steady_clock where applicable
  • cursor: Better xcursor implementation (#7178)
  • cursormgr: avoid scanning ill formed inherit (#7211)
  • cursormgr: implement inheriting themes for xcursor (#7197)
  • debug: dont manually unlock the lock_guard (#7210)
  • debug: get rid of useless 1s in logs (#6969)
  • egl: attempt a 3.2 egl context first
  • egl: avoid setting debug mode and handle legacyrenderer
  • egl: require gles 3.0 only
  • egl: support getting the device via platform_device
  • ext-foreign-toplevel: Send done after title and class (#6857)
  • hyprctl completions: Use only awk rather than grep + awk
  • hyprctl: link to much less libraries (#7212)
  • hyprerror: minor stylistic changes
  • hyprpm: execute all git commands regardless of fails
  • hyprpm: init submodules after resets
  • input: Emulate discrete scrolling from v120 events (#6881)
  • input: don't simulate mouse movement on focus change in follow_mouse = 2/3 if no_warps is false (#7015)
  • input: refocus last window on keyboard unfocusable surfaces
  • input: unify removing currentlyDraggedWindow (#7071)
  • inputmgr: ensure we dont divide by zero (#6713)
  • internal: refactor fullscreen states (#7104)
  • internal: removed Herobrine
  • internal: some minor fd/socket cleanups and make logging thread safe (#7123)
  • keybinds: allow toggling fullscreenstate (#7128)
  • keybinds: handle monitor change in moveWindowIntoGroup (#7030)
  • keybinds: handle null monitor in pinActive (#7122)
  • keybinds: improve fullscreenstate toggling (#7174)
  • keybinds: never switch to another monitor with per_monitor (#6665)
  • keybinds: remove toggleopaque (#7024)
  • keyboard: properly update keymap state and fd on keymap changes
  • keyboard: update xkb state after key event
  • layer-shell: avoid crashes on unmap (#7092)
  • layer-shell: properly map and unmap surface and propagate unmap events
  • layer-shell: validate exclusiveEdge and don't set it as top by default (#7006)
  • layershell: don't throw misaligned error on exclusive edge 0
  • layersurface: null check for surface validity before unmap()
  • layout: update workspace rules on layout change (#6878)
  • meson: install wayland.hpp header
  • opengl: destroy cairo image surface after use
  • output: submit damage to kms
  • pointer-constraint: set lifetime correctly
  • pointer/hw: extend cursor swapchain to 3
  • pointer: round position when rendering software cursors
  • pointer: update geometry after unplug events
  • pointer: use preMonitorCommit for resetting render state
  • protocols: Move globalshortcuts impl (#7102)
  • protocols: move screencopy and toplevel export to hyprwayland-scanner (#7065)
  • protocols: move text-input-v1 to hyprwayland-scanner (#7096)
  • renderer/layer-shell: use explicitly set exclusiveEdge (#6984)
  • renderer: Make shader time always count from zero (#6903)
  • renderer: don't skip back background on preBlurQueued
  • renderer: don't use the surface counter in popup iterations
  • renderer: drastically optimize bg texture creation
  • renderer: drop redundant spammy trace log
  • renderer: guard layer in renderLayer
  • renderer: untransform textures matching display transform
  • renderer: use session lock alpha for rendering lacking locks
  • seat: don't send keyboard data without a keyboard cap (#6697)
  • session-lock: send locked after the lock screen is properly rendered (#6850)
  • sessionLock: don't sendLocked when session lock has already been destoyed (#7150)
  • sessionLock: focus lock on creation based on mouse position (#6658)
  • surface: avoid crashes on fading out layers
  • surface: emit unmap before unmapping and releasing the buffers
  • tablet: Send .frame() on .proximity_out() (#6761)
  • touch: set lastInputTouch on every event
  • virtualptr: allow binding to output
  • virtualptr: map to entire screen if no output is provided
  • wayland/compositor: drop pending buffer ref if synchronous
  • wayland/compositor: release buffers on unmap
  • wayland/output: avoid sending events to dead outputs
  • window/ls: reset core signals after destroy
  • window: drop ack requirement for applying pending reported size
  • window: override noMaximize if new window takes over fullscreen (#6812) (#6870)
  • wl_seat: avoid sending events to objects without caps
  • workspaces: don't try to reopen special workspaces (#6802)
  • xcursor: rework bootleg xcursor (#7140)
  • xdg-shell: completely rewrite xdg-...
Read more

v0.41.2

25 Jun 12:16
918d834
Compare
Choose a tag to compare

Hi all! 0.41.2 bringing even more fixes on top of 0.41.1. Enjoy!

New features:

  • core: add ability to select previous workspace per monitor (#6598)
  • hyprctl: added --follow option to rolliglog (#6325)
  • hyprpm: add --no-shallow
  • input: add cursor:warp_on_changeworkspace (#6480)
  • keybinds: add custom event dispatcher
  • vrr: add option to fix mouse breaking vrr (#6483)
  • window: expose pseudotiled state and add param to dispatcher (#6583)

Fixes:

  • animations: fix overriding direction for slide
  • core: fix a few small memory leaks on exit (#6470)
  • data-device: minor fixes
  • egl: fixup format modifier lookups with implicit modifiers
  • foreign-toplevel-wlr: fix out-of-range for missing monitor resources
  • format: fix flipped r/b channels on legacy_renderer
  • hyprctl: add a newline after log()
  • hyprctl: fix zsh completion (#6467)
  • keybinds: fix mouse pass (#6652)
  • output: fix cursors disappearing after dpms (#6659)
  • subcompositor/renderer: fixup handling of subsurfaces below the main one
  • surface: add virtual destructor to surfacerole to avoid undefined behaviour (#6620)
  • vrr: add option to fix mouse breaking vrr (#6483)
  • xdg-shell: fixup xdg-positioner's pointForAnchor with non-corner points
  • xwayland: fixup unfocus atom conditions

Other:

  • Nix: don't strip in debug builds
  • Nix: tidy up derivation
  • compositor: bump nofile rlimits on launch
  • constraints: Lock surface region when region is empty (#6627)
  • core: Move to hyprutils for Math
  • core: avoid bumping hard rlimits, restore on fork
  • damageRing: move to hyprland impl
  • data-device: abort drag on unaccepted offers
  • data-device: properly abort drag on missing device
  • dbus: import PATH XDG_DATA_DIRS variables into systemd and dbus session
  • format: include macros for unreachable
  • github: reword bug or regression (#6520)
  • helpers: make shm_open() portable after 8bcccf9 (#6471)
  • hyprctl: avoid using select()
  • hyprctl: make recv timeout bigger and give error message if it does timeout (#6621)
  • hyprland.conf: update master section (#6537)
  • keybinds: ignore missing keysyms if no other methods match
  • master: refine master layout new window handling (#6479)
  • math: include cstring for memset
  • misc: a few compiler level performance optimisations (#6559)
  • output: avoid crashes when binding a defunct wl_output global
  • pointer: use software rendering when monitor is mirrored (#6587)
  • renderer: shrink occlusion rect if blur is used
  • seat/dnd: unfocus pointer from surfaces on dnd start
  • seat: track pressed pointer buttons
  • window: improve swallowing functionality
  • window: use effective damage for tearing re-schedules
  • wl-compositor: don't send enter to defunct output globals
  • wl_data_device: send drop_performed in completeDrag
  • wl_seat: accomodate for apps late-binding seat resources
  • wl_seat: send repeat data from current keyboard on bind
  • xdg-shell: Continue transform of popup until size fits (#6521)
  • xdg-shell: properly check for resource version for TILED and SUSPENDED states
  • xwayland: do not set a new data source if it has no MIMEs
  • xwayland: drop some spammy logs to trace
  • xwayland: force default plain mime atoms on known types
  • xwayland: use safeRemove for removing files

Special thanks

As always, special thanks to these chads for donating:

  • Xoores
  • kittyandrew
  • Azelphur
  • maltbeverage
  • alukortti
  • Wickedly
  • Philipp Soldunov
  • Theory_Lukas
  • MasterHowToLearn
  • ari-cake
  • taigrr
  • SomeMediocreGamer
  • Crashdummy
  • Tristan
  • ddbnl
  • NathBeLive
  • atomicptr
  • Nutel
  • rkoten
  • Marek Vospel
  • radicaltray

MRs

New Contributors

Full Changelog: v0.41.1...v0.41.2

v0.41.1

13 Jun 10:03
Compare
Choose a tag to compare

Hello there! After 0.41.0's bumpy start, we're bringing 0.41.1 to you to fix a bunch of bugs and issues.

New features:

  • binds: Add description to key binds (#6358)

Notes for packagers

Fixes:

  • compositor: update suspended states on moveworkspacetomonitor
  • foreign-toplevel: fixup output resource finding
  • formats: fixup for legacy_renderer builds
  • groupbar: fix groupbar position rounding (#6433)
  • input: fix input regions being ignored on ls-es (#6413)
  • keybinds: fix bindm (#6429)
  • layershell: Fix keyboard focus grabs (#4968) (#6394)
  • layershell: minor fixes to re-mapping of layers
  • seat: fixup touch event handling
  • seatmgr: fix missing nullcheck in updateActiveKeyboardData
  • session-lock: fix refocus after unlocking (#6423)
  • sessionLock: fix focus not being tied to mouse (#6414)
  • virtualkeyboard: check if VirtualKeyboard is valid before accessing client. (#6460)
  • wayland: consistently check mmap error after 6967a31 (#6402)

Other:

  • core: move to hyprutils for utils (#6385)
  • datadevice: only send actions for ver >= 3
  • groupbar: Don't apply monitor scale twice to groupbar text (#6411)
  • hyprpm: print all types of cmake errors during configure
  • input: fallback to main surface if not found on window
  • layer: don't close special ws when restoring focus (#6424)
  • renderer: properly software lock cursors with zoom_factor (#6434)

MRs

Special Thanks

Special thanks to these chads as usual for donating:

  • Xoores
  • taigrr
  • SomeMediocreGamer
  • maltbeverage
  • alukortti
  • Wickedly
  • Philipp Soldunov
  • Theory_Lukas
  • MasterHowToLearn
  • ari-cake
  • kittyandrew
  • Azelphur
  • niv0se
  • matjam

New Contributors

Full Changelog: v0.41.0...v0.41.1

v0.41.0

10 Jun 14:33
Compare
Choose a tag to compare

Well, well.

The biggest Hyprland update in its history has just dropped. Almost 200 commits, over 25000 lines changed. A lot of things added, and continuing work on detaching from wlroots. Enjoy!

As with 0.40, there is a lot of internal work going on detaching from wlroots, so some bugs are to be expected. However, many from 0.40 have been ironed out, so give 0.41 a try!

New features:

  • Add custom cmake target for installheaders
  • CMake: use add_custom_command for generating protocols (#6104)
  • Meson: add wayland.xml proto
  • Reapply "CMake: use add_custom_command for generating protocols (#6104)"
  • Revert "CMake: use add_custom_command for generating protocols (#6104)"
  • ci: add auto labels on PR (#6369)
  • config: add tag dispacther and window rule (#6211)
  • debug: Add ARM GPU info (#6212)
  • error: Add option to change position of HyprError bar (#3241) (#6111)
  • gestures: Add gestures:workspace_swipe_min_fingers option (#6342)
  • hyprctl: Add Config Flag to hyprctl systeminfo (#6160)
  • hyprctl: Add locked cmd to requests (#6042)
  • hyprctl: add --quiet flag (#6380)
  • hyprctl: add delimiter to hyprctl batch command (#6261)
  • input: add cursor:persistent_warps to maintain relative position within a window (#6338)
  • internal: Add missing errno.h include to SdDaemon.cpp (#5938)
  • ipc: add togglegroup, moveintogroup and moveoutofgroup events (#5866)
  • keybinds: Add option to disable window direction monitor fallback (#6182)
  • keybinds: Added new dispatcher (sendshortcut) (#6174)
  • keybinds: add empty on monitor and next empty flags (#5936)
  • keybinds: add keybind combos and add Left and Right mod distinction. (#5966)
  • meson: add more xcb-* dependencies after addd3e7
  • pointer: add back nvidia hardware cursor quirks (#6220)
  • protocols: add hyprland_focus_grab_v1 implementation (#5850)
  • renderer: render fonts with pango, add global font_family config option (#6138)
  • seatmgr: Add a grab class
  • windowrules add focusonactivate (#5976)
  • wlr-foreign-toplevel: fix fullscreen failing and add output support (#6360)

Fixes:

  • Fix initial xdg-decoration toplevel decoration mode negotiation
  • Nix: fix pkgconfig prefix
  • box: fix noNegativeSize
  • build: fix non-pch build (#6337)
  • cmake: fix .pc file inputs (#5946)
  • compositor: fix getMonitorFromVector getting wrong monitor (#6010)
  • core: fix a few asan reported issues and a coredump on exit (#6285)
  • core: fix on-empty workspace being called too often (#6026)
  • core: remove unused includes and fix warn
  • cursor: minor fixes for unhiding surfaces
  • decorations: fix groupbar input (#5963)
  • groupbar: Fix window title rendering (#6392)
  • groupbar: fix title scaling (#5969)
  • helpers: fix misuse of syscalls in sd namespace (#6379)
  • idle-inhibit: fix and cleanup visibility logic
  • input: fix modifier and leds (#6062)
  • input: fix virtual devices not updating capabilities (#6366)
  • keybinds: Fix classic global keybinds(pass dispatcher) (#5967)
  • keybinds: fix empty on monitor for new workspaces (#6089)
  • keybinds: fix pass
  • keybinds: fix release binds in submaps (#6025)
  • keybinds: fix xkb keybind name to keysym comparison (#5917)
  • layersurface: fix invalid use of std::move
  • layout: Fix shrinking pseudotile windows. (#6143)
  • layout: fix centering of new floating windows
  • makefile: fix wlroots headers dir
  • memory: fix SP/WP hierarchy templates
  • pkg-config: fix wlroots dir
  • popups: fix breadthfirst and at
  • renderer: fix xwayland solitary rechecks (#6295)
  • seat: fix pointer frame events not being sent correctly
  • shadow: fix small pixel gaps between border
  • socket2: fix events being reordered (#5955)
  • tablet: fix mapping when mapped region is specified (#6206)
  • wayland: fix invalid wl_output_mode dimensions sent
  • window: fix invalid env buffer size in getEnv
  • wlr-foreign-toplevel: fix fullscreen failing and add output support (#6360)
  • xdg-shell: fixup positioner behavior with slide and resize
  • xdg_shell: fix nested xdg_positioner calculations

Other:

  • CI/Nix: build with submodules
  • CMake: install files (instead of Makefile)
  • Nix: use CMake for builds instead of Meson
  • Tablet: move to new impl
  • buffer: track asynchronous buffers and don't release them until unref
  • build: ProtocolManager missing header LIstener.hpp (#6391)
  • build: include missing header: "debug/Log.hpp" in Format.cpp (#6365)
  • build: update meson, cmake setup
  • cmake: make gprof optional for debug builds (#6120)
  • cmake: make xcb-errors required
  • cmake: remove forceful ffi and wayland deps for asan
  • compositor: change monitor focus when no_warps is enabled (#6260)
  • config: move various cursor-related vars to cursor:
  • configmgr: shadow exec rules when window is unmapped
  • core: chase hyprwayland-scanner
  • core: cleanup environment on exit (#5941)
  • core: drop unused protocol impls
  • core: free more memory on destruction (#6348)
  • core: remove wayland sockets on exit (#5959)
  • core: verify surface roles on creation of objects
  • cursor: move to a hyprland impl
  • datadevice: guard surface in dnd for null
  • deco-positioner: avoid infinite recalcs
  • decoration: Stacked group tabs (#5886)
  • deps: update wlroots
  • egl: assume implicit modifiers are available for old drivers
  • eventloop: don't call lost timers
  • foreign-toplevel-wlr: send current class and title on map
  • foreign-toplevel: bypass no activate focus checks
  • github: improve the chances of the user specifying bug or regression (#6399)
  • github: update issue template with new path
  • hookSystem: Make needsDeadCleanup volatile (#6356)
  • hyprctl: Allow setting name for custom/headless outputs (#6319)
  • hyprctl: Make setcursor better (support XCursor themes, give fail message) (#6097)
  • hyprctl: return exitStatus in requestHyprpaper() and request() (#6083)
  • hyprpm: don't shallow clone on non-main branches
  • hyprpm: force en_US locale for date calcs
  • hyprpm: print and fail on missing packages during configure
  • idle-inhibit: enable idle inhibitor if no hl surface is associated (#5882)
  • input: find surface pos correctly when mouse drag is active
  • inputmgr: send pointer motion on ffm != 1
  • internal: Removed Herobrine
  • internal: Replace monitor rule when disabling head. (#6136)
  • internal: new shared_ptr and weak_ptr implementation (#5883)
  • internal: save previous workspace before change (#6202)
  • kde-server-decoration: move to new impl
  • keybinds: make the keybind manager check for session lock (#5894)
  • layer-shell: move to new impl
  • layersurface: avoid restack on identical layers
  • layersurface: reset popuphead after unmap
  • log: log with local timezone (#6331)
  • monitor: avoid UB on undefined auto dir
  • nix: build improvements (#5952)
  • output: remove wl_output globals for mirrored displays
  • pointer-constraints: Remove unnecessary cursor warps (#5895)
  • pointer: Include monitor scaling in HW hotspot calculation (#6283)
  • pointer: damage in software mode on cursor image changes
  • pointer: don't calculate hw hotspot for missing hw cursors
  • pointer: don't update hw cursors on disabled displays
  • pointer: remove dividing hotspot by scale
  • pointermgr: ensure compositor exist on destroy (#6216)
  • pointermgr: reset entered outputs when resetting surface
  • popup: clip input region to surface size
  • popup: minor safety improvements
  • popups: avoid infinite recursion in bf
  • presentation-time: move to new impl
  • primary-selection: move to hyprland impl
  • renderer: allow custom uv for surface no-blur passes
  • renderer: avoid locking during rendering
  • renderer: deny solitary during a session lock
  • screencopy: don't spam sw cursor locks
  • screencopy: use a simple renderer for frame passing
  • seat: Send discrete event when axis source is scroll wheel (#6103)
  • seat: discrete round away from zero + high res scrolling (#6317)
  • seat: don't send keymap on empty device
  • seat: send axis_stop events after axis events
  • seat: send enter/leave events to all bound wl_seats for a client
  • seat: send events to all bound seats for a client
  • seat: update keymap/repeat info on keymap events from keebs
  • session-lock: don't allow events from rejected locks
  • tablet: avoid null deref on an empty cursor set
  • toplevelexport: avoid locking software cursors during render
  • virtual-keyboard: emit event before finishing keyboard
  • virtual-keyboard: release keys before destroy
  • wayland/core: move to new impl (#6268)
  • window: avoid nullptr deref on monitor in box helpers
  • window: avoid uaf on updateWindow decos
  • window: guard monitor in bounding box calculations
  • window: set sane default pseudo size
  • window: verify suppress flags in onUpdateState
  • windows: Revert "window: set config only when both props end anims" (#5904)
  • windows: make new_window_takes_over_fullscreen use the new window's workspace (#6263)
  • wl-data-device: move to hyprland impl
  • wl_seat: move to hyprland impl
  • wl_seat: send frame event after pointer leave (#6074)
  • wlr-data-device: move to hyprland impl
  • wlroots: bump
  • xdg-activation: keep tokens after the resource is dead
  • xdg-shell: move to new impl
  • xdg_shell: ignore outdated ack_configure events
  • xdg_shell: improve xdg_positioner resize calculations
  • xdg_shell: improve xdg_positioner slide behavior
  • xkb: check value correctly with xkb_state_layout_index_is_active() (#5925)
  • xwayland: Remove delta for real position with xwayland zero scaling (#6057)
  • xwayland: don't destroy server client
  • xwayland: move to hyprland impl (#6086)
  • xwayland: verify new xsurf is valid in prop reads

Special Thanks

Special thanks as always to these mega chads for donating some money to keep this ball rolling:

  • Xoores
  • taigrr
  • SomeMediocreGamer
  • ma...
Read more

v0.40.0

04 May 15:56
Compare
Choose a tag to compare

Happy Hyprland 0.40.0!

This is a massive update, with mostly changes under-the-hood, but also many QoL additions and fixes!

A lot of wlroots implementations have been rewritten to use Hyprland-made ones. More will come, but this release also serves as a real test to their stability.

Notes for packagers

  • New dependencies: hyprwayland-scanner (build only), uuid
  • Note: this release requires hw-s = 0.3.4 (0.3.5 will fail to build this release.)

Breaking changes

  • The hyprland logs, sockets, etc. have moved from /tmp/hypr to $XDG_RUNTIME_DIR/hypr.

New features:

  • alpha-modifier: add support for protocol
  • config: Add More Monitor 'Auto' Positions. (#5670)
  • config: add absolute monitor workspace selectors (#5848)
  • config: added option to choose the default monitor for the cursor (#5847)
  • core: add libinput backend support for headless session (#5699)
  • ext-foreign-toplevel: add implementation
  • keybindmgr: add optional silent suffix to movewindow. (#5597)
  • log: Add some colors to stdout log 🔴🟡🟢🔵🟣 (#5778)
  • windowrules: add subtract window option to move rule (#5770)
  • windows: add misc:initial_workspace_tracking
  • workspace: Add 'v' flag for workspace selector that counts only visible windows (#5628)
  • workspace: Add fullscreen workspace selector (#5640)

Fixes:

  • CrashReporter: fix deadlocks by making it mostly async-signal-safe (#5771)
  • cursormgr: fix misscaled cursors on fractional
  • foreign-toplevel: fix bad_any_cast in moveWindow
  • foreign: fix no-pch builds
  • format: fix clang-format
  • hyprctl: add missing json string escapes (#5811)
  • hyprctl: fix activewindow request not showing workspace name (#5623)
  • hyprctl: fix instances path
  • hyprpm: fix for multi-user + improve directory structure
  • hyprpm: fix updating headers
  • input: fix active keyboard for seat after destroying one (#5725)
  • internal: fix a few asan reported leaks on exit of hyprland (#5852)
  • keybindmgr: add optional silent suffix to movewindow. (#5597)
  • makefile: fix old headers only being copied
  • misc: fix autocompletions for meson (hyprctl/hyprpm)
  • nix: fix missing git in wlroots build
  • pluginsystem: fix unhooking on exit
  • pointer-constraints: remove emoji to fix clang
  • protocols: fix for hyprwayland-scanner update
  • relative-pointer: fix missing header for g_pCompositor (#5681)
  • renderer: Fix mirrored displays when transformed and preserve aspect ratio (#5697)
  • renderer: fix rounding of the size of fractionally scaled monitors (#5748)
  • renderer: fix safety around sendFrameEventsToWorkspace
  • scripts: fix asan patch
  • sessionLock: fix incorrect protocol error raised
  • socket2: fix empty activewindowv2 events
  • swipe: fix crashes with invalid distance
  • tokens: add more modes to initial_workspace_tracking
  • tokens: fix initial workspace token ignoring special
  • windowrules: Fix Floating Grouped Windows Crash and Bug. (#5826)
  • workspace: Fix duplication of "special:" in special workspace name (#5729)
  • workspacerule: Fix monitor settings being deleted when merging ws rules (#5864)

Other:

  • CI: add no PCH build (#5708)
  • CI/Nix: use hyprland cachix (#5701)
  • CrashReporter: unbreak build on FreeBSD (#5786)
  • Fractional-scale: move to new impl
  • HookSystem: improve callback safety
  • Nix: override wayland-protocols until merged
  • Protocols: implement protoLog
  • XDG-Output: move to hyprwayland-scanner
  • compositor: more fs safety around tmp directories
  • compositor: properly update workspace in moveWindowToWorkspaceSafe
  • config: Allow more sensible input options for enabling animations. (#5659)
  • config: Default unconfigured monitors to open to the right (#5741)
  • config: Expand on window matching (#5518)
  • config: merge all rules set for the same workspace selection (#5656)
  • config: polish default config file (#5672)
  • core: Move /tmp/hypr to $XDG_RUNTIME_DIR/hypr (#5788)
  • core: Move tearing to hyprwayland-scanner (#5657)
  • core: prefer mkdir over create_directory and permissions
  • core: remove libsystemd dependency (#5660)
  • cursor-shape: allow duplicate devices per pointer resource
  • cursor-shape: move to new impl
  • cursor-shape: use - instead of _ in shapes
  • cursormgr: attempt using - instead of _ for failed cursors before fallback
  • events: set window initial* before searching for rules
  • ext-idle-notify: move to new impl
  • fractional: set scale before configure
  • gamma-control: move to new impl
  • git: ignore wlroots dirty (#5674)
  • helpers: Add new C++ Signal and Listener classes
  • hid: don't access expired resources in virtual devices
  • hooksystem: check for existing random outdir
  • hooksystem: use a random 700 directory for assembler
  • hyprctl: use XDG_RUNTIME_DIR if available
  • idle-inhibit: Always recheck idle inhibitors on creation and deletion (#5738)
  • idle-inhibit: don't destroy inhibitor on surface destroy
  • idle-inhibit: move to new impl
  • ime-v2: move to new impl
  • input: Introduce basic hyprland HID classes
  • input: check for focused_client being null before reading its client
  • input: ignore destroyed devices in static events
  • inputmgr: dont double free on hotplug (#5855)
  • internal: Window storage rework - part 1 (#5762)
  • internal: removed Herobrine
  • internal: store matched windowrules and emit event
  • keybinds: check for special workspace equality before switching
  • keybinds: clear repeat source on mouse inputs
  • keyboard: check for wlr() validity before accessing
  • keyboard: prevent UAF in destroy events
  • layerSurface: refactor/move to a memory-safe impl
  • layout: Trigger layout recalcuation on deco position/size change (#5821)
  • layout: limit updates when mouse animate drag is enabled (#5838)
  • managers: Add a TokenManager
  • output-management: move to new impl
  • pluginAPI/hooks: Remove dependency on cc from the hooksystem (#5801)
  • pluginapi: unregister callbacks on lost ptrs
  • pluginsystem: unload entire plugin before calling dlclose()
  • pointer-constraints: don't warp on entering a confined pointer
  • pointer-constraints: move to new impl
  • pointer-gestures: move to new impl
  • props: bump version to 0.40.0
  • protocols: minor style improvements to new impls
  • protocols: utilize hyprwayland-scanner 0.3.3 functions
  • relative-pointer: move to new impl
  • renderer: avoid rendering frame if finalDamage is empty
  • renderer: send frame events to apps on empty damage renders
  • session-lock: move to new impl
  • sessionLock: call wlr_surface_map/_unmap on the surface manually
  • sessionLock: remove m_pLastFocus on destroy of surface
  • sessionLock: set locked after emitting event
  • shaders: Use sin-less hash for noise (#5607)
  • shortcuts-inhibitor: move to new impl
  • tearing-control: hyprland impl (#5655)
  • tearing-control: search through all valid windows
  • text-input-v3: move to new impl
  • tokenmgr: separate getRandomUUID from registerNewToken
  • virtual-keyboard: destroy on vdestroy event
  • virtual-keyboard: move to new impl
  • virtual-pointer: move to new impl
  • wayland-protocol: remove unused CWaylandResource
  • Window: add destroy signal
  • windows: don't force workspace change on same tracked workspace
  • windows: recalculate monitor after updating windows (#5647)
  • windows: set fullscreen border size to 0 (#5865)
  • wlr-foreign-toplevel: move to new impl
  • wlr-foreign-toplevel: send done after property changes
  • wlr-output-power: move to new impl
  • xdg-activation: move to new impl
  • xdg-decoration: move to new impl

Special thanks

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

  • Xoores
  • taigrr
  • SomeMediocreGamer
  • alukortti
  • Wickedly
  • Philipp Soldunov
  • MasterHowToLearn
  • Theory_Lukas
  • Goggi
  • ari-cake
  • kittyandrew
  • Azelphur
  • Pim West
  • loxley
  • Blank
  • lemontus
  • Pyxels
  • Tristan 9
  • Cromagonaut
  • Jo
  • CatWithCode
  • Sabin

MRs

Read more