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
- style: apply clang-format by @zephvr in #4039
- Fix crash in changeworkspace by @ddmetz in #4077
- Add hyprpm, a Hyprland Plugin Manager by @vaxerski in #4072
- Keep focus on active special workspace when switching workspaces by @dranull in #4084
- Add rm hyprpm for uninstall by @thejch in #4086
- Avoid messing with --config by @dranull in #4103
- Remake borders as window decorations by @vaxerski in #4104
- Add scroll_points option for device by @fufexan in #4101
- Fix memory allocation for the background texture by @Nmzik in #4111
- ci: use composite action to minimize code duplication by @zephvr in #4112
- renderer: double lookup fix, input: double conversion fix by @Nmzik in #4124
- hyprpm: unbreak on 32-bit archs via static_cast by @jbeich in #4116
- layout: fix interactions with fakefullscreen by @zephvr in #4113
- Use canonical instead of read_symlink by @dranull in #4136
- Focus a floating window after closing the last tiled by @dranull in #4137
- Link against tomlplusplus when using cmake by @MikeWalrus in #4145
- Nix: remove duplicate options from modules by @fufexan in #4012
- Prevent crash with invalid keyboard layout by @dranull in #4157
- Activate resize_on_border only when key is pressed by @dranull in #4170
- add commit date to "hyprctl version" by @MightyPlaza in #4171
- fixing cursor show/hide logic, #3698 by @dusanx in #4184
- filesystem: Set the sticky bit on
/tmp/hypr
by @Harazi in #4199 - notify idle on tablet inputs by @MikeWalrus in #4201
- bug: fix invalid pointer access by @AhmedYasser5 in #4207
- Master layout: add dispatchers rollnext and rollprev by @thejch in #4209
- Avoid rounded shadows when rounding is 0 by @dranull in #4230
- add egl context to refreshGroupBarGradients() by @MightyPlaza in #4238
- debug: check only ISDEBUG by @andresilva in #3702
- Use window->middle() when cursor is on reserved area by @dranull in #4253
- compositor: spawn environment setup with keybind manager by @andresilva in #3722
- implement support for initialTitle and initialClass, closes #2311 by @zjeffer in #4259
- Trampoline hooks %rip patching improvements by @vaxerski in #4256
- groupbar: remove extra border size by @MightyPlaza in #4262
- deco: don't steal mouseDown from LS by @MightyPlaza in #4260
- nix: fix wlroots build by @andresilva in #4265
- hyprctl: add decorations by @MightyPlaza in #4275
- Unify input handling on decorations by @dranull in #4280
- Middle click on groupbar closes tab by @dranull in #4297
- groupbar: allow enabling groupbar and setting priority by @MightyPlaza in #4299
- Make sure we're in git repo before getting new hash by @zakk4223 in #4303
- fix no border on togglefloating by @MightyPlaza in #4305
- Ignore some input events when focus is on a layer surface by @dranull in #4306
Special thanks
Special thanks as always to these gigachads for donating $$$:
- pulsar256
- alukortti
- Ferreo
- Wickedly
- Philipp Soldunov
- meeri
- Tsih
- Marcel
- Dawid Krysiak
- mensinda
- TeCh
- Sewer56
- PolGZ
- sioodmy
- 0xmouseless
- GratefulUser
- zjeffer
- Sepi
New Contributors
- @ddmetz made their first contribution in #4077
- @Nmzik made their first contribution in #4111
- @dusanx made their first contribution in #4184
- @Harazi made their first contribution in #4199
- @AhmedYasser5 made their first contribution in #4207
Full Changelog: v0.33.1...v0.34.0