Skip to content

Releases: hyprwm/Hyprland

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

v0.39.1

16 Apr 16:07
Compare
Choose a tag to compare

A small patch to 0.39.0 to fix a few small issues and add some general hyprpm improvements.

Fixes:

  • constraint: Fix xwl cursor locking for scaled monitors (#5587)
  • hyprpm: minor fixes to hyprpm for shallow and versioned clones
  • misc: fix autocompletions for meson (hyprctl/hyprpm)
  • notifications: fix notifications on manually rotated monitor (#5599)

Other:

  • CI: unshallow on checkout before sourcing the tarball
  • cursor: add hyprcursor loggers
  • build: Unbreak build on FreeBSD by adjusting dependencies (#5595)
  • hyprpm: checkout branch and rev separately
  • hyprpm: err out on missing runtime deps
  • input: send an empty relative event after constraint motion events
  • window: remove input ref on unmap

Special thanks

Special thanks to these chads for donating money to me:

  • alukortti
  • Wickedly
  • Philipp Soldunov
  • MasterHowToLearn
  • Theory_Lukas
  • Goggi
  • ari-cake
  • kittyandrew
  • Azelphur
  • taigrr
  • SomeMediocreGamer
  • axeo
  • slash_ii
  • Guillaume B.
  • Leicham
  • Pim West

MRs

  • Fix xwl cursor locking for scaled monitors by @LivingCodeX in #5587
  • Apply wlroots gitignore by @thejch in #5592
  • Unbreak build on FreeBSD by adjusting dependencies by @jbeich in #5595
  • notify: fix notifications visibility on manually rotated monitor by @FUFSoB in #5599

New Contributors

Full Changelog: v0.39.0...v0.39.1

v0.39.0

14 Apr 18:57
Compare
Choose a tag to compare

We're interrupting the usual programme to broadcast this important update to Hyprland.
Freedesktop won't take this one away from you: the cool new stuff in hyprland :)

Notes for packagers

  • We've detached from upstream wlroots, now using our fork that is statically linked (no more libwlroots.so)
  • IMPORTANT: the source tarball has a bug where if a distro packages hyprland incorrectly, hyprpm will not work at all. This is fixed in git and in the -rev1 source tarball.

New features:

  • flake.nix: add hyprcursor follows (#5435)
  • hyprctl: Add shell completions (#5404)
  • hyprpm: add shell completions (#5423)
  • hyprpm: add support for minimum versions
  • layouts: add missing include
  • makefile: add patch option to make asan
  • monitor: add workspace null check to visible flag
  • renderer: Add dimaround layer rule (#4643)
  • swipe: add events
  • workspace: Add count group flag in windowCount workspace selector prop (#5499)
  • workspacerules: add back on-created-empty functionality (#5452)

Fixes:

  • CColor: fix getAsHex
  • IME: fix IME popup mouse inputs (again) (#5417)
  • IME: fix blurry ime on scaled
  • IME: fix crash on restarting IME (#5428)
  • IME: fix incorrect popup damage (#5383)
  • IME: fix race condition on closing window (#5455)
  • compositor: fix ghost fadingOut windows remaining after cleanup
  • configmgr: fix header priority
  • constraint: fix possible uaf on double destruction
  • core: fix compile without pch
  • core: fix some crash conditions around workspace ptrs in CWindow
  • core: fix visibility flags in moveWorkspaceToMonitor
  • hooksystem: Fix miscalculation in comment (#5442)
  • hooksystem: manually map trampoline addresses
  • hyprctl: fix fish completions
  • hyprctl: fix grammar mistakes in completions
  • hyprctl: fix zsh completions
  • hyprpm: fix wlroots path (#5567)
  • input: fix focus on maximized bg surfaces
  • input: fixup background layer checking on maximized
  • keybinds: fix spammy warning
  • macros: fix no pch warning
  • master: fix center resizing (#5394)
  • master: fix crash (#5472)
  • master: fix full height when all windows master (#5549)
  • master: fix swapped workspaces (#5397)
  • master: fix workspace orientation not being restored after workspace rule no longer applies (#5463)
  • opengl: fix modif in blur
  • renderer: some fixes for renderModif
  • window: fix invalid last workspace id
  • workspace: fix crash on destruction of compositor (#5495)
  • workspace: fix special unnamed workspace rules (#5390)
  • workspacerules: fix workspace rule loops (#5433)

Other:

  • Makefile: remove refs to libwlroots
  • Nix & Meson: switch to wlroots-hyprland
  • Workspace/core: Refactor workspace storage (#5380)
  • blur: block modif only on no new optimize
  • cmake: make sure that OpenGL::EGL is populated
  • compositor: move wl_display_destroy_clients (#5498)
  • compositor: remove windows from fadingOut properly
  • config: Don't override fullscreen opacity if only two opacities are provided (#5512)
  • config: verify string length in wrv2 before calling back
  • core: Event loop rework (#5466)
  • core: assert attempted UAFs in windowExists
  • core: simplify sanityCheckWorkspaces
  • cursor: Fallback to xcursor if failed to render hyprcursor (#5534)
  • damageSurface: don't correct smallVec twice
  • deps: move from wlroots to wlroots-hyprland
  • eventloop: move timers to an event loop fd
  • hooksystem: attempt allocating pages in linear order
  • hyprctl: improve help pages (#5385)
  • hyprctl: print monitor disabled status (#5525)
  • hyprerror: align 32-bit types after 4c79668 (#5375)
  • hyprpm: Improve Hyprpm Update Performance (#5530)
  • hyprpm: Use proper path to update repo when processing user provided revision (#5414)
  • hyprpm: ignore version checks for shallow clones
  • hyprpm: install shell completions
  • hyprpm: print more info on build failures
  • inhibitor: always destroy on window unmap
  • input: Dont set active monitor when simulating mouse movement (#5465)
  • input: Option for handling off-window axis events (#4177)
  • input: allow focus to bottom layers on maximized in reserved
  • input: don't remove pinned focus on workspace change (#5486)
  • internal: removed Herobrine
  • layers: separate anim configs for open/close (#5421)
  • makefile: move wlr headers dir
  • master: guard window in moveWindowTo
  • monitor: check for invalid workspaces in onConnect
  • monitor: unset visible flag from ws on disconnect
  • opengl: log framebuffer errors
  • pkg-config -> pkgconf for hyprpm and cmake
  • popups: more safety in damage checking
  • props: Allow setting per-window fullscreen opacity (#5470)
  • props: Parse border color props as gradient (#5513)
  • renderer: avoid double-rendering ls-es on fadingOut
  • renderer: block screen shader on screencopy
  • renderer: render back layer for workspace-less passes
  • scripts: switch to branch --show-current for branch in generateVersion
  • style: run clang-format
  • subsurface: init existing subsurfaces on children creations
  • swipe: nuke numbered
  • window: always unref workspace on unmap
  • workspaces: add visible flag
  • workspace: remove lastFocusedWindow on unmap
  • workspace: remove monitor and visible flags on inert
  • workspace: update windows when selector match could change (#5533)

Special Thanks

Special thanks to these people for donating money to me to keep this ball goin':

  • alukortti
  • Wickedly
  • Philipp Soldunov
  • MasterHowToLearn
  • Theory_Lukas
  • Goggi
  • ari-cake
  • kittyandrew
  • Benjamin
  • Thanos Apollo
  • Myryk
  • Party Wumpus
  • EpixMan
  • taigrr
  • Gaetan Lepage
  • SomeMediocreGamer
  • port19
  • numbatty
  • cat
  • kittyandrew
  • FUFSoB
  • mroote
  • Azelphur
  • 0xk1f0
  • eternal
  • vulonkaaz
  • JPEG
  • Arimil
  • Stephen_M64
  • vpavliashvili
  • bog

MRs

Read more

v0.38.1

06 Apr 14:31
Compare
Choose a tag to compare

v0.38.1 comes with a few backports from main to v0.38.0 to fix a few issues and performance bugs.

Backports

  • hyprerror: align 32-bit types after 4c79668 (#5375)
  • renderer: block screen shader on screencopy
  • input: allow focus to bottom layers on maximized in reserved
  • renderer: avoid double-rendering ls-es on fadingOut
  • CColor: fix getAsHex
  • subsurface: init existing subsurfaces on children creations
  • compositor: remove windows from fadingOut properly
  • compositor: fix ghost fadingOut windows remaining after cleanup

Special thanks

Special thanks as always to these gigachads for donating money to me:

  • alukortti
  • Widkedly
  • pulsar256
  • Philipp Soldunov
  • MasterHowToLearn
  • Theory_Lukas
  • Goggi
  • ari-cake
  • Spicy_Ommelette
  • lll
  • ii7mood
  • kre
  • senesc

Full Changelog: v0.38.0...v0.38.1

v0.38.0

01 Apr 18:41
Compare
Choose a tag to compare

A nice april update for y'all brought by the Hyprland Corporation

No backdoors added, I promise.

New features:

  • config/workspace: added workspace selectors
  • hyprctl: add missing commands to usage (#5211)
  • input: Add options to set tablet's active area (#5199)
  • input: add misc:hide_cursor_on_key_press
  • keybinds: add Dispatchers for "force float" and "force tiling" (non-toggle) (#5137)
  • keybinds: add binds:disable_keybind_grabbing
  • layers: add animation direction overrides
  • renderer: add support for gles3.2 screen shaders
  • screenshader: add screen_size uniform
  • socket2: add pin event
  • tablet: Add left_handed option for tablets (#5178)

Fixes:

  • CGradientValueData: fix toString() method (#5220)
  • IME/TI: Fixes and refactoring
  • IME: Fix ime popup coordinates and artifacts (#5373)
  • IME: Refactor and fixup popups
  • IME: don't assert on lock mismatch, just fix it
  • IME: fix crashes with destroyed text-inputs
  • README: Fix Preview B image (#5188)
  • animations: Fix animation issue in focusworkspaceoncurrentmonitor (#5202)
  • animations: Fix incorrect animation when manually moving a window when its being created (#5141)
  • animations: fix layer slide with fade
  • animvar: fixup update callbacks and cleanup
  • avar: fix warp onEnd conditions
  • avar: minor fixes
  • build: fix builds without pch (#5198)
  • core: Fix resizeparams (#5262)
  • core: fix fullscreen + floating focus change (#5291)
  • core: fix missing workspace events during swapping (#5251)
  • deco: fix groupbar offset (#5364)
  • dispatchers: fix swap workspaces wrong positioning of floating windows (#5328)
  • format: fix format
  • github: fix github issue template crash dir (#5269)
  • hyprctl: fix plugin list on no plugins (#5357)
  • hyprpm: add missing newline (#5207)
  • ime: fix build without pch
  • input: Fix incorrect keyboard focus taken when no window was present (#5337)
  • input: fix crash with text-input-v1 (#5234)
  • keybinds: Fix exit trigger by moving it to monitor.frame (#5240)
  • layers: fix bottom slide animation (#5307)
  • master: fix moving fullscreen workspace and remove duplicate code (#5131)
  • reenderer: Add 1 border damage to fix number rounding issues (#5343)
  • renderer/animations: Fix various inaccurate damage tracking issues and offsets (#5297)
  • renderer: Fix layer and window damage sometimes missing 1 frame (#5370)
  • renderer: Fix rendering when swiping workspaces (#5367)
  • renderer: minor fixes to misaligned reported surface rendering
  • renderer: minor fixups for misaligned surface rendering offsets
  • scripts: fix asan patch
  • swipe: fix nullptr in onSwipeUpdate (#5191)
  • tablet: minor focus fixes
  • textinput: fix ime when opening multiple windows (#5281)
  • textinput: fix typo (#5365)
  • windowrules: Fix resizeparams parsing. (#5206)
  • workspace: fix integer overflow in selector parser (#5177)
  • workspace: fix selectors with special:

Other:

  • IME: Improve handling of text-input and ime-relay (#5147)
  • IME: guard unfocused TIs in leave
  • Nix: match derivation to Nixpkgs
  • animationmgr: use realpos and size for border damage
  • animations: simplify window loop
  • compositor: remove windows from fading out on destroy
  • config: Config error limit/hyprctl (#5165)
  • config: be a bit louder in the disabled log warning
  • constraint: do not disable constraints in destroy
  • constraint: set active flag before propagating props
  • core: ensure m_pLastMonitor validity over unsafe state
  • core: match all workspace rules instead of the first one only (#5340)
  • cursormgr: don't set x theme in changeTheme
  • cursormgr: initialize size to 0
  • cursormgr: log theme loading failures
  • cursormgr: scale hotspot with buffer
  • dispatchers: open special ws on active monitor instead of mouse monitor (#5330)
  • github: remove redundant instruction (#5163)
  • hyprctl: output json with --batch if requested (#5277)
  • hyprpm: avoid crashes on corrupted headers
  • hyprpm: log shell in build without fails
  • input: Only limit drag resizes (#5164)
  • input: focus window on mouse down on groupbar (#5224)
  • internal: removed Herobrine
  • layer-shell: render popups above everything
  • layers: don't change workspace on layer restore focus (#5308)
  • layershell: release all mouse buttons before focus on new ls (#5219)
  • layershell: update render pos and size in arrange
  • layout: improve initial size prediction for floating
  • makefile: Remove old headers first (#5316)
  • master: Make master workspace orientation rule dynamic (#5339)
  • opengl: minor adjustment to getPreferredReadFormat
  • opengl: report shader compilation errors from screen_shader (#5138)
  • refactor: move window.hpp to desktop/
  • renderer: allow blurring ls popups
  • renderer: disable surface adjustments for misaligned reported when manual resizing
  • renderer: don't render window on other mons during anim in
  • renderer: don't translate surface box on interactive resizes with non-updated sizes
  • renderer: dont render fullscreen special on wrong monitor (#5249)
  • renderer: forward decl for b_pch=false (#5250)
  • screenShader: allow camel for screensize
  • socket2: sanitize data for newlines
  • swipe: Touchscreen workspace swipe (#4489)
  • text-input: reset lock counter on surface destroy
  • textinput: send deactivate on disable ti
  • window: assign surface on create
  • window: set config only when both props end anims
  • xwayland: assign wlr_surface on associate

Special thanks

Special thanks as always to these chads for donating:

  • alukortti
  • Wickedly
  • pulsar256
  • Philipp Soldunov
  • MasterHowToLearn
  • Theory_Lukas
  • Goggi
  • someone
  • sandsquare
  • Yok0ri
  • C0d3Cr4f73r
  • Keule2
  • Bims
  • yutkat
  • taigrr
  • Crazyroostereye
  • Zerron21
  • jaketompkins
  • Vic
  • ari-cake
  • ModalDiagram

MRs

Read more

v0.37.1

16 Mar 14:57
Compare
Choose a tag to compare

A massive (not) update to fix rendering of half of your apps, oops.

New features:

  • renderer: add better multi monitor animations (#5126)

Fixes:

  • renderer: fix non-reported sizes window box calculations

MRs

Special Thanks

Special thanks as always to these people for donating moolah to me:

  • alukortti
  • Wickedly
  • pulsar256
  • Philipp Soldunov
  • MasterHowToLearn
  • Theory_Lukas
  • Goggi
  • gigo
  • BW Drop-Ins!
  • UNH Grad Student
  • ismd
  • abihf
  • drweissbrot
  • FrothyMarrow
  • tootwrangler / brettalcox
  • JustasPolis
  • dek
  • Igor Ramazanov
  • CosmixFrost
  • matthewp
  • Sheepmilk

Full Changelog: v0.37.0...v0.37.1

v0.37.0

16 Mar 00:13
Compare
Choose a tag to compare

Happy 2 years of Hyprland!! Thanks to everyone who has supported Hyprland in any way shape or form, couldn't have done it without yall. <3

A chonker update for y'all for this occasion.

Notes for packagers

  • New dependency: hyprcursor

New features:

  • config: Add input:scroll_factor configuration (#4980)
  • cursormgr: add fallbacks for unknown cursors
  • hyprpm: Add support for specifying exact git revisions for plugin repo (#4983)
  • input: add general:resize_corner for manual resizing (#5090)
  • input: fix window move stutter by introducing additional checks for low-hz monitors (#4553)
  • keybinds: Add the 'catchall' keyword that matches all keys (#4930)
  • layers: add fully featured animations
  • makefile: add make asan
  • notify: Add custom fontsize support for notifications (#4981)
  • socket2: Add 5 IPC event with support for workspace ID (#5022)
  • subsurface/popup: expand on map/unmap to add buffering

Fixes:

  • CI/Nix: attempt to fix broken cache (#4963)
  • CrashReporter: Fix compilation with musl libc (#4805)
  • animations: fix m_Goal not being set after #4911 (#4992)
  • build: fix libc++/clang build (#4886)
  • configmgr: fix compile on 32-bit archs
  • core: add additional headers for Popup.cpp and InputMethodRelay.hpp (#4909)
  • core: Fix typo and check grandchild PID in spawn() (#5070)
  • core: fix crashes on access of deleted wlr_ surface
  • cursormgr: fix invalid access to hyprcursor in xwayland init
  • cursormgr: fix memory leak with cursor buffers
  • hyprctl: Fix incorrect invalid fontsize kwarg response (#5013)
  • input: fix minor default cursor reset conditions
  • input: fix window move stutter by introducing additional checks for low-hz monitors (#4553)
  • internal: minor fixups for fading out xwayland windows
  • keybinds: Fix typo (#5081)
  • layers: minor fixes for new animations
  • layout: Fix toggling fullscreen special workspace on different monitor (#5000)
  • lock: fix red screen issues with multiple monitors (#5100)
  • master: Fix animate resize (#4942)
  • master: Fix master layout window focus and scroll (#5074)
  • master: fix invalid config usage
  • opengl: fix compilation on legacy renderer (#4928)
  • popup: minor fixes to xdg geometries
  • renderer: fix invalid access on non-assigned surfaces
  • renderer: minor fixes to transformations
  • subsurface: fix visibility check
  • surface: fix damage tearing feedback
  • windowrules: fix center
  • xwayland: fix no_xwayland compiles

Other:

  • Nix: remove hyprland-unwrapped leftover
  • Nix: use propagatedBuildInputs instead of wrapping
  • animations: Refactor AnimatedVariable (#4911)
  • ci: pack hyprpm to the release tar
  • compositor: ignore grab extend behind special workspaces (#4944)
  • compositor: reject focus to noFocus OR xwayland windows
  • compositor: update state after moving to workspace
  • config: improve config value infrastructure
  • config: more safety around monitor keyword
  • config: report errors from sourced files
  • config: update per device input configs link (#4951)
  • constraints: only warp cursor on deactivate if constraint is locked. (#5056)
  • cursormgr: use XCURSOR_THEME for x themes
  • drag: check min size for reisze drags
  • dwindle: preserve fs state on switchWindows
  • events: apply monitor state on sessionActive
  • events: don't switch to active workspace on workspace rule
  • events: ignore setTitle when title didn't change
  • events: update render data after workspace window rule (#4931)
  • hyprctl: hide unmapped windows without -a
  • hyprctl: parse custom types in getoption
  • hyprctl: print format and modes
  • hyprpm: don't copy .so if file doesn't exist
  • input: Rewritten pointer constraints (#4889)
  • input: only override dragging corner on floating (#5092)
  • input: scale local coords in constraints
  • input: send motion to confined cursors
  • internal: Support libhyprcursor (#5009)
  • internal: Removed Herobrine
  • keybinds: Allow fullscreen/maximize in special workspace (#4921)
  • keybinds: Better handling of workspace_back_and_forth (#4952)
  • keybinds: better follow xkb translation state
  • keybinds: track submap at press for keypresses
  • keybinds: unconstrain mouse on focusmonitor and cyclenext (#4863)
  • layer-shell: allow for popup creation before map
  • layout: unfullscreen on toggle into tiled fullscreen
  • layout: warp the cursor when focusing windows (#4982)
  • master: change active monitor when moving windows around (#5001)
  • monitor: remove commas from short description (#4970)
  • notifs: Implement notification dimissing (#4790)
  • popup: send scale on map
  • props: bump ver to 0.37.0
  • refactor: move a few things to desktop/
  • renderer: Allow headless mode in hyprland (#4794)
  • renderer: adjust surface dimensions for oversized not-yet ackd surface sizes
  • renderer: force a few render frames on init anim end
  • renderer: respect forceNoBlur when rendering small surface windows (#4932)
  • sessionlock: refocus after destroy focused surface (#5117)
  • splashes: add 2ya splash
  • subsurface: Rewrite the subsurface tree (#4877)
  • subsurface: don't update transform on unmap
  • subsurfaceTree: assign surfaces to a CWLSurface
  • surface: unify owners
  • surfacetree: Revert "subsurfaceTree: assign surfaces to a CWLSurface"
  • window: ignore surface updates in unsafe / on invalid monitors
  • window: prevent vector modification segfault while iterating
  • window: remove unused list
  • windowrules: Make min/maxsize rules dynamic (#4775)
  • windowrules: check if floating when resizing from maxsize (#5019)
  • windowrules: minor improvements to min/max size
  • xdg: check for floating conditions before sending tiled size hint
  • xdg: minor improvements to initial size reporting
  • xdg: rewrite entire popup implementation
  • xkb: handle invalid keymaps in updateXKBTranslationState
  • xwayland: Set xwayland's name prop (#4924)
  • xwayland: disable initial focus for xwayland dialogs (#4936)
  • xwayland: set scaledBy for unmanaged windows in map
  • xwaylandmgr: don't read xwayland surface from unmapped xwayland

Special Thanks

Special thanks as always to these people for donating moolah to me:

  • alukortti
  • Wickedly
  • pulsar256
  • Philipp Soldunov
  • MasterHowToLearn
  • Theory_Lukas
  • Goggi
  • gigo
  • BW Drop-Ins!
  • UNH Grad Student
  • ismd
  • abihf
  • drweissbrot
  • FrothyMarrow
  • tootwrangler / brettalcox
  • JustasPolis
  • dek
  • Igor Ramazanov
  • CosmixFrost
  • matthewp
  • Sheepmilk

MRs

Read more

v0.36.0

28 Feb 00:45
Compare
Choose a tag to compare

New Hyprland update brought to you by Yours Truly, the CEO of Hyprland Corp.

A lot of fixes and changes, enjoy! Thanks for all the contributions :)

CPU and GPU usage should be considerably down from 0.35.*

Notes for packagers

  • new dep: hyprlang>=0.4.0

Breaking changes

  • config:
    • migrated to hyprlang. Some nice additions include rgba(123, 123, 69, 0.5), dynamic variables updating, and more.
    • all device:XYZ sections are now device { name = XYZ ..., see the wiki
    • ## is now properly treated as an escaped #.
  • windowrules:
    • no*request rules have been nuked in favor of the new suppressevent rule.

New features:

  • config: Add option to resolve keybinds by sym instead of code (#4851)
  • config: add defaultName for workspace rules
  • config: add opengl:force_introspection
  • core: add env to disable crash reporter
  • dispatchers: add Fullscreen without sending fullscreen to application (#4720)
  • dwindle: add swapsplit dispatcher (#4702)
  • feat: Add css style gaps (#4723)
  • hyprctl: add -r argument
  • internal: add forcenofocus prop (#4672)
  • keybinds: Add an option to pass a window argument to moveoutofgroup (#4724)
  • renderer: add more logging for fails in beginRender
  • socket2: monitoraddedv2 IPC event for monitor description and id (#4646)
  • windowrules: add suppressevent

Fixes:

  • config: fix errors in default config
  • config: fix layout invalidation for keyword commands (#4826)
  • config: fix tiny typo in defaultConfig.hpp (#4693)
  • core: Fix SEGV/ABRT core dump when exiting (#4823)
  • core: Fix building plugins (#4783)
  • core: Try to fix the exit hang (#4811)
  • crashreporter: fix logging of function data (#4632)
  • format: fix formatting
  • hyprctl: fix dispatchBatch() treating empty curitem as last request (#4681)
  • hyprctl: fix showing invalid instances
  • input: fix follow_focus
  • input: fix vectorToWindowUnified with floating over fs
  • keybinds: Fix focus not moving along when moving workspace (#4660)
  • keybinds: fix focuswindow for fullscreen (#4840)
  • keybinds: fix keys without keysyms triggering random binds (#4739)
  • keybinds: fix movewindoworgroup onto empy workspace on next monitor (#4486)
  • keybinds: fix swapactiveworkspaces not moving focus
  • layout: Fixed ghost window when opened while fullscreen on a different workspace (#4822)
  • monitors: fix outputmgr nullptr crash (#4738)
  • renderer: fix invalid damage accumulation with invalid buffer_age
  • renderer: fixup damage_ring rotation
  • renderer: minor fixes for introspection detection
  • screencopy: fix invalid damage being used for final copy in dma
  • screencopy: fix ~dtor being in monitorRenderResources map
  • shadow: fix missed invalid use of cfg val ptr
  • surface: fix damage calcs with a viewport src
  • surface: fix invalid damage tracking in damageSurface
  • surface: minor fixes for last logicalDamage calc fix
  • xdgpopup: fix UAF because of an invalid listener connection

Other:

  • IME: don't set modifiers on grab destroy
  • Migrate the config to hyprlang (#4656)
  • animationmgr: expand layer box for damage
  • assets: update tetrahedra by honkadaloonga
  • avar: return curve value of 1 when not animated
  • compositor: allow source monitor to be provided to getMonitorInDirection (#4837)
  • compositor: check for pworkspace validity in setActiveMonitor
  • config: adjust default splash col
  • config: remove usages of nomaximizerequest from default cfg
  • config: update default config for hyprlang migration
  • core: nullcheck for old monitor in moveWorkspaceToMonitor
  • crashreporter: Use ~/.cache as cache dir (#4719)
  • dwindle: round wbox before setting
  • events: bring back accidentally nuked preConfigReload
  • flake.nix: override inputs for xdph and hyprlang
  • groupbar: scale groupbar text according to monitor scale (#4640)
  • hyprctl: ignore non-lock files for instances
  • hyprctl: jsonify new gaps
  • hyprctl: more safety around stoull
  • hyprctl: reload everything on dynamic source keywords
  • hyprctl: remove hardcoded hyprctl commands. (#4671)
  • input: Map touch devices and tablets bound to an output (#3544)
  • input: avoid rampant refocuses on popups
  • input: avoid reassigns of unchanged surfaces in processMouseRequest
  • input: don't schedule frame on cursor move on hw cursors
  • input: focus monitor on mouse down
  • input: log cursor image requests
  • input: partially revert #4514
  • input: refocus on completed drags
  • internal: removed Herobrine
  • keybinds: focus floating on top of fs
  • keybinds: focusWorkspaceOnCurrentMonitor: use focused monitor instead (#4625)
  • misc: remove unused var
  • misc: you're the best for reading this :)
  • monitor: don't damage twice (#4727)
  • nix: overlay polish for prev parameter (#4558)
  • opengl: check bottom/bg layers for required introspection
  • renderer: Update splash text properties to be configurable (#4707)
  • renderer: accept custom state requests for fake outputs
  • renderer: don't calculate mirror damage without mirrors present
  • renderer: don't set solitary on present notifications
  • renderer: ignore set cursor surface if cursor should be hidden (#4780)
  • renderer: nuke lastFrameDamage and rework finalDamage
  • renderer: take into account fading out windows in solitary recheck
  • renderer: update cursor also when hostpot only changes
  • rules: ignore static tile/float rules in dynamic gets
  • screencopy/toplevelexport: sanitize pointers in ::copyFrame
  • screencopy: attempt binding framebuffer before gathering format
  • screencopy: avoid dangling client ptrs on client destroy
  • screencopy: damage entire screen on a no-damage request
  • screencopy: move monitor verif check to the proper place
  • screencopy: send full frame damage
  • sessionLock: send preferred fractional scale
  • shaders: use highp for fragments
  • socket2: move to the wayland event loop
  • surface: ensure global pointers valid before using in destructor (#4844)
  • toplevelexport: set last damage for dmabuf copy
  • vector: avoid min0 clamps without a max being invalid
  • wayland: implement keyboard_shortcuts_inhibit_v1
  • windowrules: nuke no*request
  • xdg: manually schedule initial configures
  • xwayland: ignore OR activate requests if surface doesn't want focus
  • xwaylandmgr: clamp size in setWindowSize
  • xwaylandmgr: proper clamping for setWindowSize

Special thanks

Special thanks as always to these humans (hopefully) who donated some euros to me:

  • alukortti
  • Wickedly
  • pulsar256
  • Philipp Soldunov
  • MasterHowToLearn
  • Theory_Lukas
  • Goggi
  • toni
  • MPDarkGuy
  • RandomLegend
  • The Linux Cast
  • dmayle
  • Frank
  • andreas.maier.de
  • Christian D. Storgaard
  • Host-in-the-Shell
  • sgt
  • David Aguiló
  • knikkinen
  • Mike H
  • M1K3
  • crashbit
  • Danix
  • UnclePsymon
  • gshood
  • junecat
  • jodd
  • kai-tub
  • NachaktiverHalbaffe
  • Nicholas Romero

MRs

Read more

v0.35.0

05 Feb 02:12
Compare
Choose a tag to compare

New hyprland release? No way. I think we got some new stuff and fixes.

This release was brought to you by the Hyprland Corp.

Notes for packagers

  • wallpaper paths have changed. See assets/ or the Makefile.

New features:

  • config: Add border gradients to windowrulev2 (#4335)
  • hyprctl: add systeminfo
  • hyprpm: add --force for update
  • input: add special_fallthrough
  • keybinds: Add dispatcher for xmonad/qtile-style workspace switching (#4439)
  • master: Add more null checks for rollnext (#4343)
  • renderer: Add new background infrastructure

Fixes:

  • Meson: fix wallpaper installation
  • cmakelists: fix wlroots patch sed
  • dwindle: fix windows being created at incorrect position when cursor is over reserved area (#4520)
  • hyprctl: screen_shader config fixes (#4102)
  • hyprpm: fix crash on add plugin
  • hyprpm: fix invalid pkg-config path env in build
  • keybinds: fix ignoremods with release
  • keybinds: fix keys getting stuck + minor refactor & optimizations to keybind handling (#4304)
  • keybinds: fix tracking of sent key states
  • layershell: Fix greedy mouse grab from keyboard_interactive layer (#4401)
  • main: Fix typo in std::cerr (#4359)
  • meson: fix wlroots patch (#4324)
  • nix: fix overlay composition
  • pluginapi: fix hooks with negative rip offsets
  • renderer: fixup misaligned fsv1 surfaces with uv
  • subsurfaceTree: Fix nullptr crash when disconnecting a monitor (#4577)

Other:

  • HookSystem: rename PAGESIZE_VAR from PAGESIZE to avoid conflict (#4321)
  • Makefile: force ln command to overwrite symlink (#4347)
  • Makefile: pass PREFIX to CMake
  • Makefile: remove hyprland symlink on uninstall
  • Nix: disable fortify for devshell (#4463)
  • build: protocols: require wayland-protocols >= 1.32
  • cmake: Propagate NO_XWAYLAND to wlroots building setup (#4385)
  • compositor: clarify common errors at launch
  • compositor: don't close special on focus on pinned (#4533)
  • config: variables update their value when set again (#4263)
  • core: improve cleanup logic
  • crashreporter: skip first possibly cut off line in log tail
  • damage: use buffer_damage instead of effective_damage
  • dwindle: avoid sending negative sizes to wlr
  • events: ignore sending mouse enter to focused if a constraint is active
  • examples: remove example plugin
  • fractional: Set preferred scale on monitor config reload (#4406)
  • groupbar: Drag single window instead of destroying group (#4327)
  • groupbar: improve gradient handling (#4390)
  • groupbar: separate gradients from title (#4444)
  • hyprctl: move to a class and unify commands
  • hyprpm: don't update headers if they are up-to-date, only recompile
  • hyprpm: handle failed compilations gracefully
  • hyprpm: install headers locally (#4585)
  • hyprpm: log verbose return of cmake and meson in update
  • hyprpm: update global state on plugin recompile not header update
  • hyprpm: verify headersHashCompiled as well in headersValid()
  • input: Allow disabling touchscreen input (#4517)
  • input: allow focusSurface when locked if surfase is sessionLock
  • input: focus window on mouse down on decoration (#4514)
  • input: leave special on focus (#4358)
  • input: partially revert #4401
  • input: remove animate checks on resize limiter (#4480)
  • input: track exclusive LSes
  • internal: minor header cleanup
  • internal: removed Herobrine
  • issue templates: make versions spoiler'd
  • keybinds: Refocus only if the silently moved window had the focus (#4328)
  • keybinds: avoid duplicated held keys, only use last, remove all
  • layout: Round window pos and size on togglefloating (#4407)
  • layout: save float props before setting fs state (#4537)
  • layout: update rules before applying fullscreen nodes in layouts
  • make: unbreak with non-GNU ln(1) after 78f9ba9
  • master: guard PNODE in roll*
  • monitor: clear output state after usage
  • monitor: don't call output_state_finish on buffer-less state clears
  • monitor: wrap usage of wlr_output_state
  • opengl: apply box rot to projections
  • opengl: rassert false on lost context
  • opengl: use texBox for rendering background texture
  • pluginapi: allow registering hyprctl commands
  • renderer: Only force nearest neighbor when the sizes are off by one or two (#4325)
  • renderer: allow rendering multiple fullscreen windows in third fs pass
  • renderer: avoid unnecessary gpu resource deletions
  • renderer: ignore box offsets for fullscreen windows
  • renderer: overhaul renderModifData
  • renderer: reset fb pointers after render pass
  • screenshader: rename output uniform to wl_output (#4606)
  • subprojects: remove wlroots.wrap
  • subsurfaceTree: update surface tree protocol feedback on map
  • surface: avoid spam of window surfaces with scale and transform events
  • swipe: Prevent hiding current workspace when swiping (#4417)
  • tearing-control: handle unmapped surfaces for hints
  • wlroots: update version patches
  • xwayland: remove delta from pos sets in configureX11
  • xwayland: remove reportedsize set in unmanagedSetGeometry (#4539)

Special thanks

Special thanks as always to these gigachads for throwing some money at me:

  • Brodie Robertson
  • maxhbr
  • pulsar256
  • alukortti
  • Wickedly
  • Philipp Soldunov
  • blepabyte
  • Adam Szegedi
  • garypippi
  • ewb
  • Motschen
  • orbitaldrop
  • Seb
  • frank
  • MasterHowToLearn
  • MR_POOR
  • Dustee

MRs

New Contributors

Read more