Skip to content

Releases: hyprwm/Hyprland

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

v0.34.0

01 Jan 12:13
Compare
Choose a tag to compare

Hey, haven't seen you in a year! New year, new hyprland update.

The longest commit gap to date ends with this plentiful one :D

New tools

  • hyprpm: a hyprland plugin manager. See the wiki or hyprpm --help for usage.

Notes for packagers

  • New dep: tomlplusplus
  • New tool: hyprpm (build/hyprpm/hyprpm, executable)

New features:

  • config: add debug:disable_scale_checks
  • config: add qt env to default config
  • dispatchers: add tiled/floating to cyclenext
  • groupbar: add egl context to refreshGroupBarGradients() (#4238)
  • groupbar: add enabling groupbar and setting priority (#4299)
  • hyprctl: add decorations (#4275)
  • hyprpm: Add hyprpm, a Hyprland Plugin Manager (#4072)
  • hyprpm: add duplicate header error and log more verbose in install fails
  • input: Add scroll_points option for device (#4101)
  • input: add relative_input for tablets
  • makefile: add rm hyprpm for uninstall (#4086)
  • makefile: add symbolic link for lowercase binary name
  • master: add dispatchers rollnext and rollprev (#4209)
  • opengl: add toggleable nvidia_anti_flicker
  • renderer: add decoration:blur:popups_ignorealpha
  • renderer: add occlusion for special workspaces
  • renderer: add option to blur popups
  • systemd: add HYPRLAND_NO_SD_NOTIFY
  • windowrules: add focus param
  • windowrules: add initialTitle and initialClass (#4259)
  • windowrules: add onworkspace

Fixes:

  • border: fix failed assert on small windows
  • border: fix missed translate by offset
  • deco: fix missing border on togglefloating (#4305)
  • functionHooks: fix incorrect protlen calcs
  • hyprpm: fix with system headers
  • internal: fix interactions with fakefullscreen (#4113)
  • internal: minor include fixes and missed format
  • nix: fix wlroots build
  • renderer: double lookup fix, input: double conversion fix (#4124)
  • renderer: fix auto scale detection with fractional
  • renderer: fix null cursor surface sets being ignored
  • signal: fix invalid pointer access (#4207)
  • toplevelexport: fix missed pmonitor set for opengl
  • toplevelexport: fix missing GL_READ_FRAMEBUFFER set in shm copy
  • windowrules: minor fixes to onworkspace
  • xdg-shell: fix sending of suspended state

Other:

  • Nix: expose legacyRenderer package
  • Nix: remove duplicate options from modules (#4012)
  • Nix: remove libdrm override
  • Nix: wrap with gcc
  • ci: use composite action to minimize code duplication (#4112)
  • compositor: don't block focus if there is no keyboard
  • compositor: spawn environment setup with keybind manager (#3722)
  • config: Avoid regenerating config if --config is used (#4103)
  • config: Use canonical instead of read_symlink (#4136)
  • config: don't emit reloaded event before eventManager is created
  • config: improve layoutopt handling for workspacerules
  • configmanager: set a limit to config variable substitutions
  • crashreporter: don't explicitly set 777 on crash report directory
  • deco-positioner: include sticky in sent geometry
  • dwindle: Use window->middle() when cursor is on reserved area (#4253)
  • filesystem: Set the sticky bit on /tmp/hypr (#4199)
  • flake.lock: update
  • flake.lock: update nixpkgs
  • focus: prefer sendMotionEventsToFocused for ensuring cursor image
  • groupbar: Middle click on groupbar to close tab (#4297)
  • groupbar: remove extra border size from groupbars (#4262)
  • hyprctl: allow instances without HIS
  • hyprctl: check only ISDEBUG in version (#3702)
  • hyprpm: Link against tomlplusplus when using cmake (#4145)
  • hyprpm: Make sure we're in git repo before getting new hash (#4303)
  • hyprpm: cast std::clamp args to be of the same type (#4116)
  • hyprpm: clone plugins recursively
  • hyprpm: guard empty command
  • hyprpm: trim paths in PATH
  • idle: notify idle on tablet inputs (#4201)
  • input: Activate resize_on_border only when key is pressed (#4170)
  • input: Ignore some input events when focus is on a layer surface (#4306)
  • input: Prevent crash with invalid keyboard layout (#4157)
  • input: allow setting cursor even if it's hidden
  • input: don't steal mouseDown from LS (#4260)
  • input: unset resize cursor on empty focus
  • internal: Remake borders as window decorations (#4104)
  • internal: Unify input handling on decorations (#4280)
  • internal: convert uname fields to strings before logging
  • internal: import qt env to dbus
  • internal: nuke CWindow::m_bMappedX11
  • internal: removed Herobrine
  • keybinds: Keep focus on special when switching workspaces (#4084)
  • keybinds: check for null last monitor in changeworkspace (#4077)
  • layout: Focus a floating window after closing the last tiled (#4137)
  • pluginapi: Trampoline hooks %rip patching improvements (#4256)
  • pluginapi: better wording for plugin function hook errors
  • pluginapi: log assembler return
  • pluginapi: manually detect endbr64 opcodes in function hooks
  • renderer: Allocate background texture only if required (#4111)
  • renderer: apply scale to wlr after checks
  • renderer: cursor hiding logic improvements (#4184)
  • renderer: deny invalid scales and suggest a replacement
  • renderer: don't render decorations on renderdata.decorate false
  • renderer: don't set surfaces on cursor timeout
  • renderer: don't use clipBox for pinned window occlusion during animations
  • renderer: ignore windowRequestedCursorHide
  • renderer: improve cursor hiding infra
  • renderer: improve fullscreen workspace client rendering
  • renderer: reject non-clean scales, find nearest clean
  • renderer: staticize local functions
  • renderer: use 120 as the denominator in scale checks
  • renderer: use nearest_neighbor for misaligned fractional-scale surfaces
  • renderer: use xray for background blur on small() surfaces
  • shadow: Avoid rounded shadows when rounding is 0 (#4230)
  • shadow: correctly scale boxes
  • socket2: emit configreloaded event
  • special: move floating windows along with the workspace
  • style/ci: apply clang-format and verify it in ci (#4039)
  • toplevel-export: commence render pass before reading
  • xdg: use better min/max size checks for floating resizes
  • xdgshell: bump to 6, send suspended states
  • xwayland: don't change workspace on configure for invisible windows
  • xwayland: set reported and pending size/pos on geometry sets
  • xwaylandmgr: allow resizes without a monitor

MRs

Read more

v0.33.1

06 Dec 16:53
Compare
Choose a tag to compare

Small patch to fix some issues with screencopy / toplevel-export (notably crashing and/or misaligned buffers) and crashes on exit.

Fixes:

  • framebuffer: ignore addStencil on legacyRenderer
  • screencopy: fix glReadPixels offset
  • screencopy: fix legacyrenderer builds
  • toplevelexport: fix getPreferredReadFormat param in captureToplevel

Other:

  • hyprctl: order commands alphabetically (#4061)
  • input: Stop propagating axis events after valid binds (#4059)
  • input: don't send mouse events on touch (#4071)
  • internal: various improvements to avoid crashes on exit
  • makefile: only require version.h before installheaders

Special Thanks

Massive thanks to these chads for donating some moolah as usual:

  • pulsar256
  • alukortti
  • WhoKnows
  • Ferreo
  • meeri
  • Dan
  • VDawg
  • Philipp Soldunov
  • moneyspreder
  • wisesheepbh
  • Zack Mitkin
  • JPEG
  • Squiddles
  • Spearhead
  • Bug23451
  • george_markas
  • ItsDrike
  • System64
  • Armin
  • Michael Xspect
  • spikespaz
  • Logno
  • istasi

MRs

  • Stop propagating axis events after valid binds by @dranull in #4059
  • hyprctl: order commands alphabetically by @Tungsten842 in #4061
  • Remove wlr_seat_pointer_notify_motion in CInputManager::onTouchMove by @swwind in #4071

New Contributors

Full Changelog: v0.33.0...v0.33.1

v0.33.0

05 Dec 00:58
Compare
Choose a tag to compare

After the longest commit gap to date, I decided to bring y'all the 0.33.0 update. Enjoy!
- Yours truly.

Notes for Packagers

  • Nvidia patches have been removed, they are no longer needed.

New features:

  • env: add HYPRLAND_NO_RT
  • events: add keyPress and mouseAxis
  • general: add workspace gaps (#3877)
  • hyprctl: Add 'layouts' command (#3895)
  • hyprctl: add monitors all to report all connected monitors (#3730)
  • pluginapi: add touch event hooks (#3836)
  • renderer: Adding an option to disable first launch animation (#3933)
  • workspacerules: Add workspace rule for master layout orientation (#3964)

Fixes:

  • cmakelists: fix old wlroots sover
  • config: Minor --config improvements, fixes (#4034)
  • config: fix red warn in default config
  • configmgr: fix parsing of touchdevice groups
  • deps: downgrade wlroots to fix crashes
  • group: fix dragging into floating groups (#3719)
  • groupbar: Fix position of groupbar titles on monitor scales != 1.0 (#3856)
  • groupbar: allow reload and fix locked groupbar gradient (#3546)
  • groupbar: fix crash in renderGradientTo
  • groupbar: fix text pos with verical offset (#3893)
  • hooksystem: fix missed log include
  • input: Fix custom acceleration profile config (#3948)
  • input: fix overzealous mouse capture on resize_on_border (#4010)
  • makefile: Add CXXFLAGS to hyprlctl's Makefile (#3913)
  • managers: fix debug log using printf format (#4007)
  • monitor: fix transform matrix calculations for transformed
  • opengl: fix missed makeEGLCurrent
  • opengl: fix nvidia read formats
  • opengl: fix swapped rgb drm formats
  • opengl: fix window introspection check
  • opengl: fix xray modes in introspection checks for ls
  • opengl: fixup blur dirty repaint conditions with solitary
  • output-layout: fix wlroots display handling (#3718)
  • pluginmgr: fix double use of dlerror()
  • renderer: Fix floating clipbox (#3907)
  • renderer: Fixup double rendering cases with special (#3928)
  • renderer: fix double render of tiled on workspace switch
  • renderer: fix floating window rendering when scale > 1 (#3901)
  • renderer: fix inverseOpaque calcs in renderWithBlur
  • renderer: fix software cursors on nvidia
  • renderer: fixup cursor scaling
  • screencopy: fix broken shm copying
  • screencopy: fix detecting gl shm formats
  • screencopy: fix shm exports with 10-bit
  • screencopy: fix shm sharing if introspection required
  • screencopy: fix transformed on shm
  • shadow: add workspace offset to floating window shadow (#3906)
  • vector: New operator overloads and small fix in Vector2D. (#3891)

Other:

  • build: remove nv patches (#3957)
  • cmake: include tracy cpp if set
  • compositor: drop unused vectorToWindow func
  • config: add nomaximizerequest all to default cfg
  • config: default special_scale_factor to 1
  • config: log info about logs before loading vars
  • config: Add variables to default config (#4032)
  • decorations: recalc layout and positioner on add/remove
  • deco-positioner: don't remove hidden windows' data
  • exec: remove redundant environment variables from spawn (#3923)
  • flake.lock: update nixpkgs and xdph
  • functionhooks: throw an exception on unsupported %rip usage
  • groupbar: more safety around gradient textures
  • groupbar: translate box by workspace offset
  • hyprctl: use a rolling buffer for reading requests
  • input: Handle fullscreen windows in vectorToWindowIdeal (#4021)
  • input: make fallback layout us
  • input: pass mouse input to IME popups (#3922)
  • inputmgr: clean lists in ~dtor
  • internal: Allow floating windows on special (#3872)
  • internal: make getPlusMinusKeywordResult return optional
  • internal: remove Herobrine
  • internal: replace INT_MAX with WORKSPACE_INVALID
  • keybinds: Close special workspace after moving windows out of it (#3649)
  • layer-shell: simulate mouse movement on unmap
  • layout: Don't update pseudoSize after window moved by mouse. (#3873)
  • logging: move to an internal rolling log buffer
  • makefile: update wlroots sover
  • meson: Update wlroots-meson-build.patch (#3950)
  • monitor: remove comma from monitor description (#3996)
  • nix: override libdrm to use newer version (#4003)
  • opengl: Don't use wrong shader just because it's GLES (#3867)
  • opengl: better checking for required introspection
  • opengl: check for introspection on special_blur
  • opengl: clear layer fade fbs in ~dtor
  • opengl: don't make a mirror buffer on fakeFrame
  • opengl: free window framebuffers in ~dtor
  • opengl: require introspection on mirroring
  • opengl: tiled special require introspection
  • plugins: make logging on error more verbose
  • renderer: Move to a full Hyprland GL rendering pipeline (#3920)
  • renderer: avoid rendering floating windows twice with special
  • renderer: better checks for special rendering in renderWorkspaceWindows
  • renderer: clip floating boxes on slide anim
  • renderer: don't make snapshots of invisible windows on close
  • renderer: drop unnecessary spammy logs
  • renderer: make sure lastWindow has correct ws in renderWorkspaceWindows
  • renderer: nvidia checks and use glFinish on nvidia
  • renderer: pass proper arg to main param of uv calcs
  • renderer: proper full occlusion checks for back layer
  • renderer: separate oversize uv calcs in dimensions
  • renderer: use occlusion checks for buffer clear
  • renderer: use viewporter corrected size for uv calcs
  • screencopy: use buffer format for glReadPixels
  • screencopy: use drmFormat instead of wlr funcs
  • screencopy: use new isNvidia() for format
  • shaders: Some more changes in rgb2hsl. (#3834)
  • shadow: avoid fatal mutation of the windowBox for calcs
  • shadow: avoid using glClear and don't draw behind window if ignore_window
  • subsurfaces: damage window on subsurface size change
  • surface: avoid infinite pointer image resets
  • windowrules: make idleinhibit dynamic

Special Thanks

Special thanks to these chads for donating their moolah:

  • pulsar256
  • alukortti
  • WhoKnows
  • Ferreo
  • VDawg
  • Philipp Soldunov
  • moneyspreder
  • wisesheepbh
  • Zack Mitkin
  • JPEG
  • Squiddles
  • Spearhead
  • Bug23451
  • george_markas
  • ItsDrike
  • System64
  • Armin
  • Michael Xspect
  • spikespaz
  • Logno
  • istasi

MRs

Read more

v0.32.3

11 Nov 18:17
Compare
Choose a tag to compare

A small hotfix for 0.32.2's occasional crashes.

Fixes:

  • decoration-positioner: improve stability

Other:

  • props: bump ver to 0.32.3

Special Thanks

Special thanks as always to these absolute chads for donating:

  • Lars - Massively
  • WhoKnows
  • pulsar256
  • alukortti
  • Ferreo
  • png
  • spikespaz
  • lukejcollins
  • Aibo Hu
  • andresilva
  • niraami
  • ArtemSmaznov
  • VDawg

Full Changelog: v0.32.2...v0.32.3

v0.32.2

11 Nov 17:27
Compare
Choose a tag to compare

A result of a few small hurried mistakes in 0.32.1. Hypr-active development, am I right? :)

Fixes:

  • shadow: move workspace offset calcs to draw
  • xdg: set state maximized for all tiled windows

Other:

  • props: bump ver to 0.32.2
  • shaders: Avoid calculating unused values in hsl2rgb. (#3827)
  • shaders: Small optimization in rgb2hsl. (#3831)

Special Thanks

Special thanks as always to these absolute chads for donating:

  • Lars - Massively
  • WhoKnows
  • pulsar256
  • alukortti
  • Ferreo
  • png
  • spikespaz
  • lukejcollins
  • Aibo Hu
  • andresilva
  • niraami
  • ArtemSmaznov
  • VDawg

MRs

Full Changelog: v0.32.1...v0.32.2

v0.32.1

11 Nov 15:33
Compare
Choose a tag to compare

Small update with some fixes for screencopy, xdg surface handling, shadows on 10bit, etc.

Fixes:

  • hyprctl: Fix build warnings (#3821)
  • screencopy: round boxes
  • xdg-shell: improve ack-configure handling
  • xdg-shell: update reported size on ack_configure
  • xwayland: add half of delta to configure request sizes

Other:

  • animationmgr: push shadow avs to ended on disabled
  • deco-positioner: recalc after uncache
  • decoration-positioner: improve extent handling
  • decorations: Decoration Positioner (#3800)
  • deps: update wlroots
  • hyprctl: return group list in correct order (#3683)
  • input: don't schedule repaint on cursor move if hardware cursors are in use
  • opengl: remove unused alpha matte from shadow
  • opengl: switch to black-and-white for alpha mattes
  • shaders: Use clamp in doubleCircleSigmoid. (#3824)
  • shadow: alpha treatment improvements

Special Thanks

Special thanks as always to these absolute chads for donating:

  • Lars - Massively
  • WhoKnows
  • pulsar256
  • alukortti
  • Ferreo
  • png
  • spikespaz
  • lukejcollins
  • Aibo Hu
  • andresilva
  • niraami
  • ArtemSmaznov

MRs

New Contributors

  • @topisani made their first contribution in #3683
  • @vityafx made their first contribution in #3821

Full Changelog: v0.32.0...v0.32.1

v0.32.0

07 Nov 21:16
Compare
Choose a tag to compare

A small update brought to you by yours truly :)

This time without breaking changes. I think.

New features:

  • binds: add ignoreMods flag
  • binds: add movefocus_cycles_fullscreen
  • example: add special workspace to default config
  • fractional-scale: fix addon existence check
  • groups: add option to configure font name (#3751)
  • hooksystem: add callbackinfo struct and cancellable events
  • hyprctl: add a query for workspace rules (#3630)
  • hyprctl: add focusHistoryID to hyprctl clients
  • pluginapi: add a config keyword adding method
  • renderer: add transformers
  • renderer: added new customization options to the blur shaders (#3650)
  • windowrules: add nearestneighbor
  • workspacerules: Add new optional "default command" for auto-launching apps on new workspaces (#3559)

Fixes:

  • Master: fix drop_at_cursor when there are only two windows (#3734)
  • cmake: Fix error building without CMAKE_BUILD_TYPE being set (#3590)
  • compositor: Fix a lack of a check for workspace equality on same monitors in getInDirection (#3625)
  • config: fixup usage of plugin in handles
  • fix(build): do not include wlr headers directly, use includes.hpp instead. (#3587)
  • fractional-scale: fix addon existence check
  • group: fixes for dragging groups onto groupbars (#3708)
  • includes: fix box headers (#3771)
  • input: fix force_zero_scaling for tablet and touch (#3644)
  • input: fix mouse down handling on unset last surface
  • input: simulate mouse movement to fix focus on open/close window
  • layout: fix missed setWindowSize in no_gaps_when_only node apply
  • layout: fix various rounding errors
  • master: fix movewindow across monitors (#3628)
  • master: fix moving window between monitors (#3721)
  • master: fix resizing wrong window behind in special workspace (#3591)
  • meson/nix: Fix meson.build nix patch (#3594)
  • pluginapi: fixup get_hash functions
  • renderer: fix legacy_renderer build (#3732)
  • renderer: fix missed box scale
  • renderer: fix shimmers when manual resizing
  • renderer: fix small surface's blur region being offset by monitor coords
  • renderer: fixup blend disable conditions in renderSurface
  • shadow: fix ignore_window false
  • shadow: fix missed fullBox.scale
  • shadows: fix on transformed
  • wlsurface: fix small detection

Other:

  • Core: various unsafe state improvements (#3713)
  • Decos: Window decoration flags, shadow improvements (#3739)
  • Internal: Hyprland box implementation (#3755)
  • Map cmake None to meson's plain
  • box: use std::round instead of std::floor in ::round()
  • cmake: Map cmake None to meson empty (#3614)
  • cmake: remove old definitions from cmakelists
  • cmake: set asan for only hyprland not others
  • compositor: allow windowfromregex floating param
  • compositor: allow windowfromregex tiled param
  • compositor: do not process fullscreen events in unsafe
  • compositor: find windows in direction on floating
  • compositor: remove old comment
  • compositor: send preferred scale and transform events to surfaces
  • dwindle: move to CBox for expressing nodes
  • events: better adjust to unreported sizes for xwayland apps
  • events: ignore takes_over_fullscreen for floating windows
  • events: make new windows taking over fullscreen keep the existing mode (#3588)
  • events: set reported size on floating map
  • events: set reported size on the end of mapping
  • flake.lock: update nixpkgs and xdph
  • fractional-scale: post error on taken fs objects
  • hyprctl: log monitor id in workspaces request
  • includes: include sharedDefs in includes.hpp
  • includes: include vector2d for sharedDefs
  • input: Apply scaling to cursorPosOnActivate position (#3664)
  • input: better cursor image infrastructure
  • input: don't reset cursor movement timer on simulateMouseMovement (#3595)
  • input: handle mouse on decorations (#3560)
  • input: let input-grabbing decos have prio over resize on border
  • input: properly track xdg surfaces' geometry in vectorToSurfaceLocal
  • input: remove incorrect check in re-enter
  • input: send motion events on focusWindow if follows_mouse is 0
  • input: simulate movement only if mouse is over in open/close window
  • internal: create canBeGroupedInto() (#3693)
  • internal: honor close_special_on_empty on moveToWorkspace
  • internal: removed Herobrine
  • layershell: support ON_DEMAND keyboard mode
  • layout: avoid redundant size sets on new fullscreen
  • layout: better storage for no fullscreen checks var
  • layout: round box in mouseMove
  • layout: round window boxes after special scale factor
  • main: set isShuttingDown after display dispatch reaches the end
  • meson: generate version.h before install_headers (#3612)
  • nix: use mesonAutoFeatures attribute
  • region: include box in the header
  • renderer: allow transform enabling from outside opengl
  • renderer: avoid drawing invisibly small surfaces in renderSurface
  • renderer: blur properly behind small surfaces
  • renderer: cast std::clamp args to be of the same type (#3589)
  • renderer: improvements to wayland surface small() detection
  • renderer: properly pass 10-bit formats to opengl
  • renderer: properly set currentFB on snapshot renders
  • renderer: render oversized blur with respect to fade alpha
  • renderer: respect viewporter dest on base surfaces
  • renderer: use optional for cursor surface storing
  • renderer: use preOffset pos instead of offset
  • shaders: support changing the outer radius of borders independently
  • subprojects: update tracy
  • surface/wayland: conform to small surface requirements
  • transformers: allow modifying renderdata pre-pass
  • window: update window reported size on damage events
  • workspacerules: search for special properly
  • xdg: send unconstrain events after a popup reposition (#3716)
  • xdg: use std::ceil for sending scale to surfaces

Special Thanks

Special thanks as always to these absolute chads for donating:

  • Lars - Massively
  • WhoKnows
  • pulsar256
  • alukortti
  • Ferreo
  • png
  • spikespaz
  • lukejcollins
  • Aibo Hu
  • andresilva
  • niraami

MRs

New Contributors

Read more

v0.31.0

16 Oct 16:31
Compare
Choose a tag to compare

A sizeable update for y'all, with quite a few breaking changes.

Here, have this rose as a sorry for the breaking chonker: 🌹

Shoutout to Marcin Zawada from my Polish friend's university for being cool :)

Breaking changes

  • decoration:multisample_edges has been nuked. A better algorithm is used by default.
  • misc:disable_hypr_chan has been removed. The new, more flexible option is misc:force_default_wallpaper with a default of -1. Setting to 0 will use the non-anime backgrounds exclusively and behave like the old disable_hypr_chan = true
  • All group-related options have been moved to group:, please see the docs here: https://wiki.hyprland.org/Configuring/Variables/#group
  • Some makefile stuff has been changed/removed, see the notes for packagers.

Notes for packagers

  • notably, make config, make pluginenv and make fixwlr have been nuked.
  • almost the entire makefile pipeline has been moved into CMake itself.
  • Building is done via make all (or make release, make debug)
  • Installing is done via sudo make install. Please note this will not compile Hyprland at all, and only install built files.

New features:

  • Plugin API: Add version query (#3545)
  • dispatchers: Add option to center the cursor on the focused window when switching workspaces (#3528)
  • includes: add missing log include to animatedvariable
  • input: Add map to region options for tablets (#3425)
  • internal: Add GTK portal as fallback (#3469)
  • internal: add a watchdog
  • layout: add new_window_takes_over_fullscreen mode 2
  • makefile: fix using -d test for a binary file AND re-add missing portals conf (#3570)
  • master: add option to drag and drop windows at cursor position (#3465)
  • misc: add misc:new_window_takes_over_fullscreen
  • renderer: add force_wallpaper instead of no_hypr_chan (#3459)
  • renderer: add further conditions to solitary recheck
  • renderer: Tearing implementation (#3441)
  • workspacerules: Add a persistent workspace rule (#3530)

Fixes:

  • dispatchers: fix extra monitor offset when snapping floating (#3520)
  • events: fixup empty events not being sent on unmap
  • hyprctl: fix crash in unsafe state with activeworkspace
  • input: fix unused variable warn
  • input: fix warn
  • input: fixup frame schedule conditions on mouse move
  • input: fixup mouse down refocus conditions
  • input: minor constraint fixes
  • makefile: fix permissions on files
  • makefile: fix using -d test for a binary file AND re-add missing portals conf (#3570)
  • makefile: fix wrong path in chmod
  • makefile: fixup permissions on installed binaries
  • master: fix drop_at_cursor on workspace 2 (#3512)
  • renderer: considerable fixes to repaint logic
  • renderer: fix missing check for surfaceCount in rechecking solitary
  • renderer: fixup solitary conditions

Other:

  • Debug: respect logging settings for wlr (#3584)
  • animationmgr: damage floating windows on workspace anim
  • build: CMake pipeline improvements (#3564)
  • build: Unbreak Meson build on FreeBSD (#3549)
  • build: Unbreak build without precompiled headers (#3400)
  • build: guard execinfo.h via build systems (#3547)
  • build: include version.h in PluginAPI.hpp (#3571)
  • cleanup: Replace find() with C++20 starts_with(), ends_with() and contains() (#3572)
  • cmake: search for systemd headers first
  • config: mention force_default_wallpaper in default configs
  • config: restore configCurrenPath after sourcing file (#3339)
  • config: trim spaces in the rule field in windowrulev2
  • crashreporter: avoid using empty CACHE_HOME
  • dispatchers: support number as arg in changegroupactive (#3329)
  • dwindle: Avoid rounding errors in window position (#3524)
  • events: don't focus new window if spawned behind fullscreen
  • events: set new window alpha to 0 if it's tiled behind fullscreen
  • examples/readme: mention tearing
  • groups: create group and groupbar config sections (#3522)
  • groups: ensure consistency in dispatcher behavior with global group lock (#3531)
  • hyprctl: avoid .pop_back() on empty string
  • hyprctl: log activelyTearing for monitors
  • input: avoid using the wrong surface in drag focus force
  • input: properly track mouse focus on drag operations
  • internal: Further unsafe state improvements (#3404)
  • internal: better versioning (#3543)
  • internal: include missing header (#3464)
  • internal: removed Herobrine
  • internal: use pragma once in version.h
  • layershell: avoid configure on unchanged size
  • layout: check for specialworkspace in floating toggle
  • layout: don't discard fullscreen on new tiling
  • log: log wlr errors regardless of env
  • makefile: make binaries 755 instead of 711
  • makefile: set 777 for /build perms
  • makefile: set correct perms on includes
  • makefile: set perms for built subprojects in pluginenv
  • makefile: warn users when doing sudo make install
  • meson: Sort input file list (#3550)
  • meson: use ln with force flag (#3568)
  • monitor: ensure vrr on workspace change
  • notifications: Schedule a frame on notification creation (#3556)
  • pluginapi: remove starting newline in demangled func name (#3502)
  • props: bump ver to v0.31.0
  • render: stop locking SWC on tearing
  • renderer: avoid spamming software cursor locks
  • renderer: extract solitary check into frame handler
  • renderer: lock software cursors while tearing
  • renderer: nuke multisample_edges in favor of a faster algorithm
  • renderer: optimize render pipeline when there is a solitary client
  • renderer: remove old debug log
  • screencopy: enhance error logging
  • shaders: Remove redundant clamp of smoothsteps return value. (#3456)
  • shaders: improve border rounding
  • tearing: cleanup vars and avoid rendering before drm is ready
  • watchdog: don't hang on exit
  • watchdog: initialize after config
  • watchdog: remove thread on destroy
  • wsrules: check for workspace ID matches on numbered workspaces

MRs

New Contributors

Read more