Releases: hyprwm/Hyprland
v0.48.0
After a while, it is my pleasure to release 0.48.0 to everyone!
Hyprland is now 3 years old since March 16th, happy birthday! :)
Breaking changes:
opengl:force_introspection
has been removedrender:allow_early_buffer_release
has been removed- windowrule v1 syntax is gone.
windowrule
now behaves likewindowrulev2
, deprecating thewindowrulev2
keyword
New features:
- animations: add the gnomed animation style for windows
- core: add an ANR dialog
- desktop: add ability to target pinned windows in workspace rules (#9344)
- dispatchers: add cyclenext hist option (#9055)
- groupbar: add an option to adjust gap sizes (#9578)
- hyprctl: Add IPC support for Hyprsunset (#9315)
- hyprpm: add --hl-url for custom forks
- input: add flip_x and flip_y for touchpad (#9481)
- input: add follow_mouse_threshold (#9392)
- keybinds: Added
toggleswallow
dispatcher (#5548) - master: add option to keep master window position (#9537)
- protocols: add version 2 of ext-idle-notify-v1 protocol (#8959)
- renderer: add simple color management (#9506)
- socket2: add activespecialv2 (#9530)
- syncobj: ensure we only add waiters on succesful checks (#9412)
- windowrules: add option to allow size persistence between app launches (#9422)
- xwayland: add INCR support for clipboard transfers (#9434)
Fixes:
- cmake: add CXX_STANDARD_REQUIRED flag to ensure c++ version must be c++26 (#9476)
- config/descriptions: add enable_anr_dialog
- config/hyprctl: fix keyword not updating autoreload
- config: fix a possible crash in the monitor config parser (#9460)
- core,hyprctl: clang, clang-tidy, typo fixes and dtors changes (#9233)
- core/Compositor.hpp: fix non-relative Texture import (#9703)
- core/compositor: Fix dropping cursor buffer data early (#9700)
- core: Add null activeWorkspace check in moveWorkspaceToMonitor (#9503)
- core: fix DS and VRR automation (#9334)
- core: add default initializers for ccompositor ptrs
- core: add mallopt to modify trim threshold
- datadevice: fix wrong param (#9370)
- deps: add libinotify-kqueue on BSDs after 8dd2cd4 (#9197)
- desktop: fix segfault when destroying a partially create layer surface (#9247)
- desktop: move popups to UPs and fix missing subsurface resource
- groupbar: fix groupbar missing when indicator_height is <= 0
- hyprctl/config: fixup config descriptions, fill out missing ones, provide more data
- input: Fix clicking through groupbar tabs (#9606)
- input: fix touch calibration matrix overriding
- input: fixup mouse check for flipping x / y (#9529)
- internal: Fix compiler warnings (#9646)
- internal: fix include paths (#9500)
- keybinds: fix some errors not returning a failure (#9416)
- pass/rect: fix bounding / opaque regions
- presentation: log a fixme when there is a feedback leak
- protocols: Fix IWaylandProtocol onDisplayDestroy m_pGlobal double-free (#9507)
- protocols: Fix blocked color management get_information (#9563)
- protocols: Fix cursor shape protocol valid shape check (#9547)
- protocols: fix wrong iface for xdg_dialog
- renderer: add an option to disable cm and auto-skip cm if not necessary
- renderer: fix cm_fs_passthrough (#9698)
- renderer: fix fade out on silent moves to special
- renderer: fix missing null checks to prevent crashes (#9332)
- renderer: fix window offset for dragged windows (#9629)
- renderer: various fixes towards improving gpu calls robustness (#9188)
- subsurface: fix invalid parent typo
- toplevelexport: fix transformed origin for shm buffers (#9343)
- window: fix missing surface null checks to prevent crashes (#9350)
- xwayland: fix a possible clipboard race condition (#9394)
Other:
- CI/Nix: remove deprecated magic-nix-cache-action
- CMake: install frag files
- CMake: install frag files (for real this time)
- Meson: include frags in globber
- Nix: change meson buildtype from debugoptimized to debug
- XWayland: restore the abstract socket, and make it optional (#9615)
- animation: don't immediately disconnect active vars during tick (#9272)
- animations: sync inactive/active border angles when using borderangle animations (#9401)
- anr: add a note for no pid dialogs
- anr: add xwayland support (#9456)
- ci: Fail on warnings (#9668)
- cmonitor: guard old workspace
- compositor: don't iterate over unmapped ls-es in vectorToLS
- compositor: guard null ws in updating fade
- config/defaultConfig.hpp: windowrulev2 -> windowrule (#9663)
- config: actually set initial beziers (#9400)
- config: default movefocus_cycles_fullscreen to false
- config: nuke windowrule v1 syntax
- config: set no_hw_cursors to auto by default and disable on tearing
- configWatcher: watch both symlinks and canonical paths (#9219)
- configmgr: properly free glob memory
- core/compositor: Correctly track SHM buffer damage (#9678)
- core: avoid .at() and use [] operator (#9347)
- core: begin using CFileDescriptor from hyprutils (#9122)
- core: cleanup some smart pointer usage
- core: cleanup window properties
- core: ignore internal move workspace calls if the workspace doesn't change (#9516)
- core: prevent crash when monitor list is empty (#9572)
- core: update decorations on lockgroups (#9573)
- descriptions: remove allow_early_buffer_release
- desktop: move popup and subsurface ctors to factories
- dmabuf: pop buffer on failure (#9620)
- env: move XDG_SESSION_TYPE to before backend init (#9390)
- example/hyprland.conf: windowrulev2 -> windowrule (#9662)
- groupbar: pass alpha to title tex render pass
- groupbar: remove 2 pixel gap above groupbar (#9664)
- groupbar: remove recursive window recalc (#9561)
- groupbar: various visual improvements
- groups: deactivate unfocused windows in groups (#9354)
- hyprctl/layers: print pid for layershell clients (#9468)
- hyprctl: Error handling improvements, minor cleanups (#9536)
- hyprctl: Extract IPC code to separate method (#9223)
- hyprctl: don't return empty str if there are no global shortcuts
- hyprpm: return 1 when plugins are outdated (#9694)
- ikeyboard: free xkbSymState in clearManuallyAllocd
- input: Provide a non-zero time for button release triggered during window unmap. (#9513)
- input: change window grab cursor to closed hand (#9196)
- internal: redirect exec'd app output to /dev/null (#9411)
- internal: remove unused variable (#9402)
- internal: removed Herobrine
- internal: use isNumber from hyprutils (#9467)
- keybinds): prevent crash when executing movewindoworgroup (#9551)
- managers: Use primary backend for cursor swapchain (#9645)
- monitor: Optimize direct scanout damage (#9653)
- monitor: avoid crash on expired special workspace monitor owner
- monitor: preferred mode now tries first 3 modes if preferred fails before erroring (#9246)
- monitor: report a scheduled frame when tearing on cursor move
- monitor: round refresh rates in sorting modes
- nix/module: toHyprconf -> toHyprlang (#9221)
- nix: remove wayland-protocols overlay and bump flake (#9613)
- opengl: simplify cm pipeline
- pass: add input region debug
- popup: improve ::at() behavior
- popup: stop refocusing at unmap
- popup: take xdg geometry into account in input calcs
- protocols: Ensure protocol dtors are called in ProtocolManager dtor (#9521)
- protocols: Support content-type-v1 proto (#9226)
- protocols: Support wp color management proto (#9444)
- protocols: implement hyprland-ctm-control rev 2 (#9267)
- refactor: clang-tidy in compositor (#9241)
- render: enforce framebuffer offloading and remove introspection toggle (#9217)
- renderer: calculate UV using both pixel and monitor dimensions (#9210)
- renderer: delete now redundant ifdefs (#9651)
- renderer: disable explicit if aquamarine output doesn't support it (#9396) (#9398)
- renderer: don't crash if cm fails to compile
- renderer: remove spammy log
- screencopy, render: Use explicit sync for screencopy (#9697)
- scripts/generateVersion.sh: convert to posix (#9433)
- scripts: don't overwrite generated version if we're not in a git repo
- seatmgr: avoid crash on null surfs
- session-lock: send locked when in unsafe state (#9399)
- splashes: update for 3ya
- subsurfaces: dont try to access popup surfaces when handling subsurface updates (#9421)
- syncobj: dont crash compositor on protocol errors (#9627)
- syncobj: refactor point timelines (#9689)
- syncobj: restore SHM buffer reset (#9675)
- syncobj: use eventfd instead of stalling fd checks (#9437)
- tablet: take
active_area_size
into account when sending tip event (#9325) - touch: reject swipe on locked sessions
- types: Upgrade buffer ref from WP to SP (#9677)
- window: move size reporting to animation begin callback (#9298)
- windowrules: store floating size on close instead of resize (#9569)
- windows: respect noinitialfocus with workspace changes (#9586)
- workspaces: update persistence on workspace rename (#9368)
- xcursor: move config check to sync gsettings (#9473)
- xwayland: configure on a configure request and cleanup geometry conversion (#9375)
- xwayland: correct pointer coordinate mismatch in X11 windows (#9259)
- xwayland: handle window coords correctly (#9238)
- xwayland: improve dnd and cleanup (#9405)
- xwayland: prevent invalid window configurations for X11 apps (#9253)
- xwayland: respect window size set by configure requests (#9190)
- xwayland: send synthetic configure events (#9193)
Special thanks
Special thanks to these people for donating to help the project continue:
Top Supporters:
Azelphur, arc-nix, ExBhal, SomeMediocreGamer, Robin B., yyyyyyyan, taigrr, Amaan Q., Xoores, Jas Singh, Theory_Lukas, JanRi3D, ari-cake, alukortti, RaymondLC92, MasterHowToLearn, johndoe42, Abdulaziz Al-Khater, AuHunter
New Monthly Supporters:
Brad S, tid...
v0.47.2
A minor update on top of 0.47.1 with some additional fixes and patches.
Fixes backported
- xwayland: handle window coords correctly (#9238)
- monitor: preferred mode now tries first 3 modes if it fails before erroring (#9246)
- xwayland: prevent invalid window configurations for X11 apps (#9253)
- desktop: fix segfault when destroying a partially created ls (#9247)
- configWatcher: watch both symlinks and canonical paths (#9219)
- xwayland: correct pointer coordinate mismatch in X11 windows (#9259)
- animation: don't immediately disconnect active vars during tick (#9272)
- desktop: move popup and subsurface ctors to factories
- popup: take xdg geometry into account in input calcs
- desktop: move popups to UPs and fix missing subsurface resource
Special Thanks
Special thanks as always to these chads for donating:
- Xoores
- johndoe42
- yyyyyyan
- taigrr
- SomeMediocreGamer
- Azelphur
- alukortti
- Theory_Lukas
- MasterHowToLearn
- ari-cake
- AuHunter
- Amaan Q
- Jas Singh
- matipan
- SViN Drawing
- NextDreamJob.LIVE
- Plyply
- atomicptr
- Skidam
- Avid
- FUTO
- XoZu
- System64
- Pascal Nitsche
- JustOptimize
- billybo_o
- denast
- gorfxx
- LCLP
- Ben
- Dainatello
- Diego
- Riesi
- Xellor
- Daniel
- Abdulaziz Al-Khater
- Cassio Fernando
- Efo
- Adrian Dobkowski
- Ricardo C
- JanRi3D
- andmars
- SiliconVillager
- Frank Huurman
- Francois
- Fan2Shrek
- anna//bool
Full Changelog: v0.47.1...v0.47.2
v0.47.1
v0.47.1 comes with, as usual, a few fixes backported from main. Some crashes, odd behavior, flickers, etc.
Fixes backported
- xwayland: send synthetic configure events (#9193)
- deps: add libinotify-kqueue on BSDs (#9197)
- xwayland: respect window size set by configure requests (#9190)
- ikeyboard: free xkbSymState in clearManuallyAllocd
- configmgr: properly free glob memory
- presentation: log a fixme when there is a feedback leak
- renderer: calculate UV using both pixel and monitor dimensions
- pass/rect: fix bounding / opaque regions
- config/hyprctl: fix keyword not updating autoreload
- monitor: round refresh rates in sorting modes
- popup: stop refocusing at unmap
- subsurface: fix invalid parent typo
Special Thanks
Special thanks as always to these chads for donating (full list from 0.47.0, as I forgot to include it in the beginning, sorry!)
- Xoores
- johndoe42
- yyyyyyan
- taigrr
- SomeMediocreGamer
- Azelphur
- alukortti
- Theory_Lukas
- MasterHowToLearn
- ari-cake
- AuHunter
- Amaan Q
- Jas Singh
- matipan
- SViN Drawing
- NextDreamJob.LIVE
- Plyply
- atomicptr
- Skidam
- Avid
- FUTO
- XoZu
- System64
- Pascal Nitsche
- JustOptimize
- billybo_o
- denast
- gorfxx
- LCLP
- Ben
- Dainatello
- Diego
- Riesi
- Xellor
- Daniel
- Abdulaziz Al-Khater
- Cassio Fernando
- Efo
- Adrian Dobkowski
- Ricardo C
- JanRi3D
- andmars
- SiliconVillager
- Frank Huurman
- Francois
- Fan2Shrek
- anna//bool
Full Changelog: v0.47.0...v0.47.1
v0.47.0
New year, new Hyprland release brought to you by Yours Truly.
This update is quite large, so you might want to read these patch notes.
There have been quite a bunch of internal rewrites, mostly around memory safety, the renderer, and animation system. Although performance shouldn't change
much, it should improve stability in edge cases. Please do report any regressions you might find, if they aren't reported already.
Notes for packagers:
- new dependency: glaze
- I've dropped binary releases. Please use the source to build.
Breaking changes:
master:always_center_master
has been replaced with a more flexiblemaster:slave_count_for_center_master
New features:
- CMake, Meson: add option controlling hyprpm building
- config: add exec(-onec) with rules and execr(-once) (#8953)
- core/renderer: Add GPU hotplug support (#8980)
- core: Add a periodic donation request (#8981)
- core: Add render:allow_early_buffer_release to make buffer release configurable (#9019)
- core: Add support for HDR and color management protocols (#8715)
- core: add --verify-config to verify the config with Hyprland
- ctm: add an internal fade animation to ctm transitions
- debug: add debug:pass for debugging the render pass
- hyprpm: add an option to force reload all plugins (#8883)
- hyprpm: add glaze dependency FetchContent fallback (#8899)
- keybinds: add new window destruction dispatchers (#8962)
- keybinds: add visible arg for cyclenext (#9045)
- master: add option to show slaves on left in center orientation (#8940)
- pluginAPI: add register dispatcher v2
- protocols: add hyprland_lock_notify_v1 implementation (#9092)
- protocols: add hyprland_surface_v1 implementation (#8877)
- protocols: add hyprland_surface_v1.set_visible_region implementation (#9120)
- renderer: Add supercircular window corners (#8943)
- selectors: add a tag: to for matching window tag(s) by regex (#8985)
- socket2: add focusedmonv2 event (#8921)
- windowrules: add negative: prefix for negating a regex
Fixes:
- animation: fixup adding animvars during ::tick (#9030)
- animations: fix XWayland cursor glitch and refactor skill issues (#9033)
- animations: fix borderangle once (#9149)
- ci: fix "Resource not accessible by integration" for cf workflow (#9144)
- compositor: fix incorrect cast, use lambda capture instead (#9161)
- config: fix animations requiring all args
- config: fix float animation speeds < 0 (#9123)
- config/ConfigWatcher.cpp: add missing include needed for clang (#9166)
- configmgr: fix crash on very early plugin loads
- core/compositor: fix too early buffer release (#8966)
- core: fix custom resolutions (#8897)
- core: fix possible crash on null active workspace
- data-device: fix edge case crash on null xwm
- debug: fix ISDEBUG checking (#8823)
- debug: fix overlay not rendering
- desktop/DesktopTypes.hpp: fix include (#9104)
- dwindle: fix possible crash on null ws
- functionHooks: wait for hyprland pages before returning addr for trampo
- helpers/Monitor.cpp: fix include path (#9039)
- hyprctl: Fix
hyprctl
batch JSON command (#8749) - hyprctl: fix hyprctl --batch not working with exec rules (#8952)
- hyprpm: fix hyrpm sometimes returning 0 despite errors occuring (#8761)
- keybinds: fix movefocus fallback for special workspaces (#9040)
- keybinds: fix nullptr deref in forcekillactive (#9021)
- keybinds: fix previous_per_monitor logic (#9010)
- logging: fix Gpu info (#8764)
- pass: fixup debug mode rendering of input boxes
- protocols: fix alpha-modifier noncompliance (#8929)
- protocols: fix compilation error (#8988)
- renderer: fix CRendererHintsPassElement reset duplication issue (#8928)
- renderer: fix fullscreen hdr check (#9076)
- renderer: fix oversized blur precalcs not blurring at all
- renderer: fix rare case when a tiled window would be rendered over fs
- shaders: fix blank windows when using corner rounding (#8969) (#8971)
- window: fixup fade out animation on silent moves
- xwayland: fix clipboard mime name and atom mismatch (#9137)
- xwayland: fix compile with no xwayland
- xwayland: fix crash when trying to initialize without Xwayland installed (#9077)
- xwayland: fix dnd including xwayland
- xwayland: fix pointer mismatches with multiple monitors (#9179)
- xwayland: fix sending large clipboard data (#9134)
- xwayland: various window handling fixes
- xwm: fixup targets in selection requests
Other:
- Meson: properly install 'hyprland' symlink (#9091)
- Renderer: rewrite render scheduling (#8683)
- animation: avoid crashes in ::tick() on mutations
- animationmgr: don't warp based on POINTY value (#9000)
- binds: cycle within group on single monitor if no window found in the argument direction. (#8714)
- ci(clang-format): directly do the clang-format instead of error (#8955)
- config: avoid querying the fs every tick
- config: disable borderangle by default (#9165)
- config: update animation even if disabled
- config/ConfigManager.cpp: add instruction to edit config (#9130)
- core: add LIKELY and UNLIKELY macros
- core: Unbreak build on FreeBSD (#8762)
- core: always use goal size to send to clients
- core: avoid activating toplevel-less surfaces
- core: cleanup header includes (#9088)
- core: fade in windows when they are brought from invisible workspaces
- core: guard workspace and monitor in moveWorkspaceToMonitor
- core: make persistent workspaces always follow the config
- core: move all shared_ptrs from the STL to hyprutils (#9143)
- core: move parts of the animation system to hyprutils (#8868)
- core: move sendWindowSize off of xwaylandmgr
- core: move to inotify for monitoring the config files
- core: refactor/improve monitor mode selection (#8804)
- core: reserve vector sizes as much as we can (#9118)
- core: update groups on movewindow (#9183)
- core: use cpu-buffer hw cursors on nvidia by default
- core: use readFileAsString instead of cat for os-release
- ctm: disable fade animation by default on nvidia
- datadevice: do the unfocus surface stuff before dndActive is true (#9157)
- datadevice: guard XWayland server against crashes
- desktop: move desktop types to memory-safe pointers
- dnd/seat: avoid sending button events during a dnd op
- foreign-toplevel: update active on null window focus (#8860)
- fractional-scale: avoid redundant and duplicate scale events
- github: bug issue template improvements (#8894)
- groupbar: unify title rendering
- groups: honor group lock window rule (#8782)
- hooksystem: avoid huge include for HANDLE
- hyprpm: use glaze to parse hyprctl plugin list (#8812)
- input: abord dnd op on escape pressed
- input: pass touch events to lock screens (#9129)
- internal: Make static analysis more happy (#8767)
- internal: added reference to CTimer class in KeybindManager (#8836)
- internal: few small monitor improvements (#8890)
- internal: remove dead code (#8748)
- internal: removed Herobrine
- internal: update window position/size after changing fullscreenstate (#8865)
- keybinds: attempt to wrap around if fallback is allowed in movefocus
- layershell: check if layer is valid (#9156)
- layershell: return focus to a valid ls on close if possible
- layout: apply group rules after window creation (#8779)
- layout: damage window properly on float mode changes
- layout: force full damage on toggling floating mode
- layout: set window size after toggling floating
- logging: get broader GPUINFO (#8753)
- master: make loop around optional when cycling (#8926)
- master: replace always_center_master with slave_count_for_center_master (#8871)
- monitor: avoid crashes on no good modes
- monitor: bring back old description behavior
- nix/module.nix: expand nixos module for configuring hyprland
- opengl: only allocate offMainFB on demand
- opengl: use uv to avoid rendering the entire blurbox
- pass: allow removing all pass elements of a given type
- pass: ignore empty rectangles queued
- pass: improve blur region detection
- pass: improve pass debug mode
- pass: improve pass debugging
- pass: mark crucial elements as undiscardable
- pass: scale blur region in ::render
- pass: scale blur regions properly
- pointer: always scale the cpu cursor to the right size
- protocols: allow hyprland-toplevel-export to capture hidden windows (#9041)
- protocols: do not capture cursor in toplevel without pointer focus (#9042)
- protocols: do not destroy screencopy resources before client request (#9048)
- protocols: immediately copy toplevel content when ignoreDamage set (#9049)
- regex: log an error if regex parsing fails
- renderer/internal: stop using box pointers
- renderer: Auto enable wide color gamut in HDR mode (#9090)
- renderer: Do not set hdr metadata unless needed (#9014)
- renderer: allow plugins to know what window was rendered in post
- renderer: don't access hdrMetadata optional if it has no value (#8987)
- renderer: unload background texture if it's disabled
- renderer: use a render pass for render modif in client render
- renderer: use cairo for cpu buffer rendering (#9071)
- shadow: avoid drawing empty shadows
- snap: don't snap to any windows if workspace has a fullscreen window (#8870)
- snap: give edge snapping precedence over corner snapping (#8873)
- snap: revert #8659, use bounds checking instead of bit mask (#8872)
- subsurface: damage the entire parent on size change
- tablet: send
motion
s on tip events (#9132) - window: only set m_iMonitorMovedFrom, when moving to a different monitor (#9160)
- windowrules: precompute regexes for window/layer rules
- windows: honor xdg_toplevel_set_fullscreen output hint (#8965)
- windows: minor initial workspace improvements
- xwayland: avoid sending value of real...
v0.46.2
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
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
The Hyprland overlord (also known as Santa in December) is proudly bringing you 0.46.0.
Merry Hypr Christmas!
Breaking changes
- window/layer rule regexes now require a full match (not any match) to trigger.
cursor:dumb_copy
is gone in favor ofcursor:use_cpu_buffer
. This should allow no-downsides Nvidia hardware cursors. Please note it's experimental.
Notes for packagers
- New deps: hyprgraphics, re2
New features:
- binds: add option to allow fullscreening a pinned window (#8526)
- config: add 'force' option for 'cursor:warp_on_change_workspace' (#8681)
- core: Add support for hyprqtutils' update screen (#8651)
- core: add a few festive splashes
- core: move colorspace handling to oklab (#8635)
- dispatchers: Add an option to prioritize focus change within groups with movefocus (#8601)
- hooks: add pre connected/disconnected monitor events (#8503)
- hyprctl: add an inhibitingIdle field to windows
- hyprctl: add directScanout to hyprctl monitors
- hyprctl: add json output on hyprctl -j plugins list (#8480)
- input: add warp_back_after_non_mouse_input
- logging: Add some context to config error logs (#8326)
- makefile: add stub to discourage direct make
- pointer: add drm dumb buffers for cursors (#8399)
- renderer: add lockdead_screen_delay (#8467)
- renderer: add option to blur IME popups (#8521)
- version: add link versions for other utils (#8619)
- windowrules: add rules for mouse and touchpad scroll factors (#8655)
- xwayland: Support cross DnD from Wayland (#8708)
Fixes:
- Fix example config name in auto-generated cfg header (#8509)
- animationmgr: fixup stack-use-after-return
- compositor: fix monitor arrangement with mixed auto directions
- core/data-device: expand damage region to fix minor px errors
- core: Add clang-tidy (#8664)
- core: Fix workspace selector parsing (#8687)
- data-device: fixup wrong box expansion
- defaultConfig: fixup smart gaps rules
- hyprpm: fix incomplete unmet dependencies message
- internal: fix changeWindowZOrder reordering incorrectly (#8494)
- internal: fix some misused configStringToInt conversions
- internal: fixup some missed updateColorsOk() calls
- layerrules: fix ignorezero not working
- monitor: fix default focus when switching to a fs workspace
- opengl: fixup invalid ogl uniform reads
- opengl: fixup missed /4 in oklab parsing
- renderer: fix incorrect early return (#8590)
- renderer: fixup blur optimization considitons
- seat: fix double scrolling in some applications (#8583)
- shm: fix shm fd size check before creating or resizing shm_pool (#8572)
- windowrules: fix prop rules with boolean values
- workspace: fix missing name via focusworkspaceoncurrentmonitor (#8484)
Other:
- CI/Nix: temporarily disable cross build
- Lock uwsm desktop file behind feature flag
- Nix: create TAG info from version
- Nix: disable uwsm desktop file installation
- bezier: optimize setup of bezier curves (#8528)
- bind: new long press option (#8302)
- cleanup: remove leftover var in ThreadManager.cpp (#8611)
- config: Changed the default value of decoration:blur:ignore_opacity to true (#8418)
- config: don't overwrite errors in gradients
- config: throw an error explicitly when parsing colors in gradients
- config: update the configStringToInt implementation (#8476)
- constraints: don't warp pointer position on release (#8491)
- core/data: Use pointer focus for DnD operations (#8707)
- core/output: don't send enter too aggresively
- core: Move regex from stdlib to re2 (#8736)
- core: Optimize window/layer rule application and scanning (#8735)
- core: drop using deques in favor of vectors
- core: feeling a bit quirky today.
- core: guard pmonitor in focuswindow
- core: move to os/Process from hyprutils
- core: move version include to hyprctl
- core: removed Herobrine
- core: workspace-related function cleanup / refactor
- crashreporter: avoid clang warning
- debug: clean up fetching of the contents of /proc/device-tree (#8413)
- debug: clean up opening of files in HyprCtl (#8401)
- descriptions: change allow_pin_fullscreen value to false (#8592)
- drm: enable explit out fence in AQ (#8431)
- github: mention PR guidelines in the template
- hyprctl: avoid crash on null pwuid
- hyprctl: verify runtime dir exists in instances()
- hyprland-uwsm.desktop: Just reference plain entry (#8553)
- hyprpm: move temp files to XDG_RUNTIME_DIR
- hyprpm: target installed instead of running version (#8634)
- internal: minor cleanups for color results
- keybinds: actually suppress internal keybinds instead of passing them along (#8538)
- keybinds: allow repeating multiple binds (#8290)
- keybinds: don't animate fullscreen size/pos changes coming in
- keybinds: move to managed pointers
- layersurface: use lastMonitor and not monitor from cursor for new ls
- master: make center ignore reserved areas (#8625)
- meson: autodetect systemd
- miscfunctions: move configStringToInt to std::expected
- nix/meson: add re2 dependency (#8738)
- pointer: map devices across all outputs by default (#8352)
- protocols: mark primarySelection as not privileged
- rename hyprland-systemd.desktop and remove hyprland-session.service
- renderer: don't render unmapped popups
- renderer: drop requesting OUT_FENCE_PTR
- renderer: restore discard mode after IME render pass
- renderer: scaled surfaces could have zero area (#8423)
- renderer: simplify blur enabling logic
- shell: don't use fgrep, prefer grep -F
- shell: propagate new machanism from hyprctl to miscfunctions
- snap: account for position of multiple monitors (#8543)
- snap: bias reserved area when its size is greater than zero (#8694)
- snap: check which corner is being grabbed for monitor snapping (#8637)
- snap: use the bit mask to check if snapping occurred (#8659)
- systemd: hyprland-systemd.desktop -> hyprland-uwsm.desktop
- versionkeeper: init version to 0.0.0 if no file is present
- windows/xdg: minor cleanup of min/max size calculations
- windows: allow replacing existing fullscreen (#8566)
- workspace: update hasFullscreenWindow in updateWindows
- workspacerules: Do not check 'on-created-empty' if using a workspace windowrule (#8486)
- xcursors: store themes in a std:set to order it (#8474)
- xdg-shell: don't report invalid min/max sizes on unset
- xdg-shell: even more robust layout min/max size
Special Thanks
Massive thanks to these chads for donating $$$ to keep this ball rollin:
- Xoores
- taigrr
- SomeMediocreGamer
- Azelphur
- maltbeverage
- johndoe42
- yyyyyyyan
- alukortti
- Theory_Lukas
- MasterHowToLearn
- ari-cake
- AuHunter
- Amaan Q.
- Jas Singh
- Hongdu
- Gerenier
- DEFLATE
- Matej Drobnic
- Snootiful
- al
- niraami
- Ricebal
MRs
- debug: clean up opening of files in HyprCtl by @WavyEbuilder in #8401
- debug: clean up fetching of the contents of /proc/device-tree by @WavyEbuilder in #8413
- pointer: map devices across all outputs by default by @JManch in #8352
- renderer: scaled surfaces could have zero area by @dawsers in #8423
- systemd-desktop - replace contents to rely on uwsm to start a systemd session. Remove hyprland-session.service by @izmyname in #8376
- Changed the default value of decoration:blur:ignore_opacity to true by @nnra6864 in #8418
- Add some context to config error logs by @SoSeDiK in #8326
- drm dumb buffers for cursors by @vaxerski in #8399
- xcursors store themes in a std:set to order it by @gulafaran in #8474
- Enable explicit out fence in AQ by @UjinT34 in #8431
- bind: new long press option by @littleblack111 in #8302
- Fix: Workspace name not assigned via hyprctl dispatch focusworkspaceoncurrentmonitor by @sslater11 in #8484
- Window/Workspace Rules: If workspace is created by a windowrule, don't create it as empty workspace by @alyanser in #8486
- fix: json output on hyprctl -j plugins list by @tetrois in #8480
- renderer: add the lockdead_screen_delay by @aacebedo in #8467
- Plugins: add pre connected/disconnected monitor events by @levnikmyskin in #8503
- pointer constraints: don't warp pointer position on release by @hanatos in #8491
- fix changeWindowZOrder by @Aqa-Ib in #8494
- Fix example config name @ auto-generated cfg header by @webknjaz in #8509
- config: update the configStringToInt implementation by @PaideiaDilemma in #8476
- allow repeating multiple binds by @MightyPlaza in #8290
- bezier: optimize setup of bezier curves by @gulafaran in #8528
- actually suppress internal keybinds instead of passing them along by @m4rch3n1ng in #8538
- renderer: add option to blur IME popups by @ErrorNoInternet in #8521
- binds: option to fullscreen pinned window by @littleblack111 in #8526
- snap: account for position of multiple monitors by @myQwil in #8543
- protocols: fix shm fd size ...
v0.45.2
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
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
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
- layout: fix auto group when opening a new window in a non-focused workspace using window rules by @Aqa-Ib in #8006
- flake.nix: add xdph follows by @timon-schelling in #8012
- feat: add a custom made treewide formatter by @amadalusia in #7992
- use clampWindowSize to unify min/maxsize handling by @MightyPlaza in #8014
- fix screencopy frame leaks by @ikalco in #8017
- layout: add drag_into_group by @Aqa-Ib in #8004
- misc: refactor version command by @davc0n in #8027
- Support hyprland-ctm-control-v1 by @vaxerski in #8023
- dispatchers: allow leading whitespace in window parameter by @JManch in #8016
- layout: remove unnecessary check after 45e8219 by @Aqa-Ib in #8037
- Make hyprerror reserve space by @vaxerski in #8040
- output: update state even if no owner exists by @Trimutex in #8044
- hyprerror: fix height calc with bottom bar by @JManch in #8043
- layout: add merge_floated_into_tiled_on_groupbar to fine control merging dragging windows by @Aqa-Ib in #8042
- layouts: Nuke no_gaps_when_only by @vaxerski in #8072
- xwaylandmanager minor fixes by @JassonCordones in #8076
- improve version query and some code and add HYPRLAND_VERSION by @Toni500github in #8034
- Add check for conflicting acquire and release points by @Edgars-Cirulis in #8083
- Fix VRR for constrained cursors by @UjinT34 in #6877
- convert std::cout and std::cerr to std::println() by @Toni500github in #8085
- layout: deny automatically grouping a new floated window into a tiled group by @Aqa-Ib in #8108
- fix drm ...