Skip to content

Releases: hyprwm/Hyprland

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

v0.46.0

16 Dec 23:59
Compare
Choose a tag to compare

The Hyprland overlord (also known as Santa in December) is proudly bringing you 0.46.0.

Merry Hypr Christmas!

Breaking changes

  • window/layer rule regexes now require a full match (not any match) to trigger.
  • cursor:dumb_copy is gone in favor of cursor:use_cpu_buffer. This should allow no-downsides Nvidia hardware cursors. Please note it's experimental.

Notes for packagers

  • New deps: hyprgraphics, re2

New features:

  • binds: add option to allow fullscreening a pinned window (#8526)
  • config: add 'force' option for 'cursor:warp_on_change_workspace' (#8681)
  • core: Add support for hyprqtutils' update screen (#8651)
  • core: add a few festive splashes
  • core: move colorspace handling to oklab (#8635)
  • dispatchers: Add an option to prioritize focus change within groups with movefocus (#8601)
  • hooks: add pre connected/disconnected monitor events (#8503)
  • hyprctl: add an inhibitingIdle field to windows
  • hyprctl: add directScanout to hyprctl monitors
  • hyprctl: add json output on hyprctl -j plugins list (#8480)
  • input: add warp_back_after_non_mouse_input
  • logging: Add some context to config error logs (#8326)
  • makefile: add stub to discourage direct make
  • pointer: add drm dumb buffers for cursors (#8399)
  • renderer: add lockdead_screen_delay (#8467)
  • renderer: add option to blur IME popups (#8521)
  • version: add link versions for other utils (#8619)
  • windowrules: add rules for mouse and touchpad scroll factors (#8655)
  • xwayland: Support cross DnD from Wayland (#8708)

Fixes:

  • Fix example config name in auto-generated cfg header (#8509)
  • animationmgr: fixup stack-use-after-return
  • compositor: fix monitor arrangement with mixed auto directions
  • core/data-device: expand damage region to fix minor px errors
  • core: Add clang-tidy (#8664)
  • core: Fix workspace selector parsing (#8687)
  • data-device: fixup wrong box expansion
  • defaultConfig: fixup smart gaps rules
  • hyprpm: fix incomplete unmet dependencies message
  • internal: fix changeWindowZOrder reordering incorrectly (#8494)
  • internal: fix some misused configStringToInt conversions
  • internal: fixup some missed updateColorsOk() calls
  • layerrules: fix ignorezero not working
  • monitor: fix default focus when switching to a fs workspace
  • opengl: fixup invalid ogl uniform reads
  • opengl: fixup missed /4 in oklab parsing
  • renderer: fix incorrect early return (#8590)
  • renderer: fixup blur optimization considitons
  • seat: fix double scrolling in some applications (#8583)
  • shm: fix shm fd size check before creating or resizing shm_pool (#8572)
  • windowrules: fix prop rules with boolean values
  • workspace: fix missing name via focusworkspaceoncurrentmonitor (#8484)

Other:

  • CI/Nix: temporarily disable cross build
  • Lock uwsm desktop file behind feature flag
  • Nix: create TAG info from version
  • Nix: disable uwsm desktop file installation
  • bezier: optimize setup of bezier curves (#8528)
  • bind: new long press option (#8302)
  • cleanup: remove leftover var in ThreadManager.cpp (#8611)
  • config: Changed the default value of decoration:blur:ignore_opacity to true (#8418)
  • config: don't overwrite errors in gradients
  • config: throw an error explicitly when parsing colors in gradients
  • config: update the configStringToInt implementation (#8476)
  • constraints: don't warp pointer position on release (#8491)
  • core/data: Use pointer focus for DnD operations (#8707)
  • core/output: don't send enter too aggresively
  • core: Move regex from stdlib to re2 (#8736)
  • core: Optimize window/layer rule application and scanning (#8735)
  • core: drop using deques in favor of vectors
  • core: feeling a bit quirky today.
  • core: guard pmonitor in focuswindow
  • core: move to os/Process from hyprutils
  • core: move version include to hyprctl
  • core: removed Herobrine
  • core: workspace-related function cleanup / refactor
  • crashreporter: avoid clang warning
  • debug: clean up fetching of the contents of /proc/device-tree (#8413)
  • debug: clean up opening of files in HyprCtl (#8401)
  • descriptions: change allow_pin_fullscreen value to false (#8592)
  • drm: enable explit out fence in AQ (#8431)
  • github: mention PR guidelines in the template
  • hyprctl: avoid crash on null pwuid
  • hyprctl: verify runtime dir exists in instances()
  • hyprland-uwsm.desktop: Just reference plain entry (#8553)
  • hyprpm: move temp files to XDG_RUNTIME_DIR
  • hyprpm: target installed instead of running version (#8634)
  • internal: minor cleanups for color results
  • keybinds: actually suppress internal keybinds instead of passing them along (#8538)
  • keybinds: allow repeating multiple binds (#8290)
  • keybinds: don't animate fullscreen size/pos changes coming in
  • keybinds: move to managed pointers
  • layersurface: use lastMonitor and not monitor from cursor for new ls
  • master: make center ignore reserved areas (#8625)
  • meson: autodetect systemd
  • miscfunctions: move configStringToInt to std::expected
  • nix/meson: add re2 dependency (#8738)
  • pointer: map devices across all outputs by default (#8352)
  • protocols: mark primarySelection as not privileged
  • rename hyprland-systemd.desktop and remove hyprland-session.service
  • renderer: don't render unmapped popups
  • renderer: drop requesting OUT_FENCE_PTR
  • renderer: restore discard mode after IME render pass
  • renderer: scaled surfaces could have zero area (#8423)
  • renderer: simplify blur enabling logic
  • shell: don't use fgrep, prefer grep -F
  • shell: propagate new machanism from hyprctl to miscfunctions
  • snap: account for position of multiple monitors (#8543)
  • snap: bias reserved area when its size is greater than zero (#8694)
  • snap: check which corner is being grabbed for monitor snapping (#8637)
  • snap: use the bit mask to check if snapping occurred (#8659)
  • systemd: hyprland-systemd.desktop -> hyprland-uwsm.desktop
  • versionkeeper: init version to 0.0.0 if no file is present
  • windows/xdg: minor cleanup of min/max size calculations
  • windows: allow replacing existing fullscreen (#8566)
  • workspace: update hasFullscreenWindow in updateWindows
  • workspacerules: Do not check 'on-created-empty' if using a workspace windowrule (#8486)
  • xcursors: store themes in a std:set to order it (#8474)
  • xdg-shell: don't report invalid min/max sizes on unset
  • xdg-shell: even more robust layout min/max size

Special Thanks

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

  • Xoores
  • taigrr
  • SomeMediocreGamer
  • Azelphur
  • maltbeverage
  • johndoe42
  • yyyyyyyan
  • alukortti
  • Theory_Lukas
  • MasterHowToLearn
  • ari-cake
  • AuHunter
  • Amaan Q.
  • Jas Singh
  • Hongdu
  • Gerenier
  • DEFLATE
  • Matej Drobnic
  • Snootiful
  • al
  • niraami
  • Ricebal

MRs

Read more

v0.45.2

19 Nov 22:00
Compare
Choose a tag to compare

Another minor release with 2 patches backported on top of 0.45.1.

Fixes backported

  • internal: fix changeWindowZOrder reordering incorrectly (#8494)
  • xdg-shell: don't report invalid min/max sizes on unset

Special thanks

Special thanks as always to these chads for donating:

  • Plyply
  • Xoores
  • ari-cake
  • taigrr
  • SomeMediocreGamer
  • Azelphur
  • maltbeverage
  • alukortti
  • MasterHowToLearn
  • Theory_Lukas
  • johndoe42
  • Milan
  • yyyyyyyan
  • AuHunter
  • Amaan Q.
  • Jas Singh

Full Changelog: v0.45.1...v0.45.2

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