Releases: hyprwm/Hyprland
v0.52.1
A patch release backporting some fixes from main to 0.52.0.
Fixes backported
- CI/release: populate git info (#12247)
- protocols/layershell: do not raise protocol error if layer surface is not anchored (#12241)
- protocols/outputMgmt: fix wlr-randr by defering success event until monitor reloads (#12236)
- meson: fix version.h install location
Special thanks
Special thanks as always to:
Our sponsors
Diamond
37Signals
Gold
Framework
Donators
Top Supporters:
--, mukaro, Semtex, Tom94, soy_3l.beantser, SaltyIcetea, Freya Elizabeth Goins, lzieniew, Kay, ExBhal, MasterHowToLearn, 3RM, Tonao Paneguini, Sierra Layla Vithica, Anon2033, Brandon Wang, DHH, alexmanman5, Theory_Lukas, Blake-sama, Seishin, Hunter Wesson, Illyan, TyrHeimdal, elafarge, Arkevius, d, RaymondLC92, MadCatX, johndoe42, alukortti, Jas Singh, taigrr, Xoores, ari-cake, EncryptedEnigma
New Monthly Supporters:
KongrooParadox, Jason Zimdars, grateful anon, Rafael Martins, Lu, Jan, Yves, Luiz Aquino, navik, EvgenyRachlenko, GENARO LOYA DOUR, trustable0370, Jorge Y. C. Rodriguez, Bobby Rivera, steven_s, Pavel Dušek, Toshitaka Agata, mandrav
One-time Donators:
ryorichie, shikaji, tskulbru, szczot3k, Vincent F, myname0101, MirasM, Daniel Doherty, giri, rasa, potato, Jams Mendez, collin, koss054, LouisW, Mattisba, visooo, Razorflak, ProPatte, sgt, Bouni, EarthsonLu, W, Faab, Kenan Sharifli, ArchXceed, benvonh, J.P. Wing, 0xVoodoo, ayhan, Miray Gohan, quiron, August Lilleaas, ~hommel, Ethan Webb, fraccy, Kevin, Carlos Solórzano Cerdas, kastr, jmota, pch, darksun, JoseConseco, Maxime Gagne, joegas, Guido V, RedShed, Shane, philweber, romulus, nuelle, Nick M, Mustapha Mond, bfester, Alvin Lin, 4everN00b, riad33m, astraccato, spirossi, drxm1, anon, conig, Jonas Thern, Keli, Martin, gianu, Kevin K, @TealRaya, Benji, Borissimo, Ebbo, John, zoth, pampampampampamponponponponponponpampampampa, Himayat, Alican, curu, stelman, Q, frigidplatypus, Dan Page, Buzzard, mknpcz, bbutkovic, neonvoid, Pim Polderman, Marsimplodation, cloudscripting, StevenWalter, i_am_terence, mester, Jacob Delarosa, hl, alex, zusemat, LRVR, MichelDucartier, Jon Fredeen, Chris, maxx, Selim, Victor Rosenthal, Luis Gonzalez, say10, mcmoodoo, Grmume, Nilpointer, Lad, Pathief, Larguma, benniheiss, cannikin, NoeL, hyprcroc, Sven Krause, Matej Drobnič, vjg73_Gandhi2, SotoEstevez, jeroenvlek, SymphonySimper, simplectic, tricked, Kacper, nehalandrew, Jan Ihnen, Blub, Jonwin, tucker87, outi, chrisxmtls, pseudo, NotAriaN, ckoblue, xff, hellofriendo, Arto Olli, Jett Thedell, Momo On Code, MrFry, stjernstrom, nastymatt, iDie, IgorJ, andresfdz7, Joshua, Koko, joenu, HakierGrzonzo, codestothestars, Jrballesteros05, hanjoe, Quantumplation, mentalAdventurer, Sebastian Grant, Reptak, kiocone, dfsdfs, cdevroe, nemalex, Somebody, Nates, Luan Pinheiro, drm, Misha Andreev, Cedric
And all hyprperks members!
Full Changelog: v0.52.0...v0.52.1
v0.52.0
A new Hyprland update dropped fam 🔥🔥🔥
Breaking changes
misc:disable_hyprland_qtutils_check->misc:disable_hyprland_guiutils_check(hyprland-qtutils is now archived in favor of hyprland-guiutils)
New features:
- config: add automatic closing to submaps (#11760)
- dispatchers: add forceidle (#11922)
- dispatchers: add set, unset and toggle to fullscreen (#11893)
- input: add option to rotate device input (#11947)
- renderer/cm: add more monitor cm options (#11861)
- renderer: add "noscreenshare" layer rule (#11664)
- renderer: add cursor:zoom_disable_aa for controlling AA on zoom (#12025)
- renderer: add more uniforms to the screen shader (#11986)
- renderer: add render:non_shader_cm and fixes (#11900)
- vkeyboard: update cached mods before IME; add share_states = 2 config option (#11720)
- windowrules: add modal prop (#12024)
Fixes:
- animation: fix slide/slidefade to accept forced direction (#11725)
- chore: fix non-relative imports (#12228)
- cm: fix primaries to proto scale (#11914)
- cmake: fix git lookup for when building out of srcdir(#12116)
- config: fix crash when some configurations include non-integer values (#12056)
- config: fix gesture dispatcher parsing with whitespaces (#11784)
- config: fix multi-argument gesture dispatcher parsing (#11721)
- config: fix rules with no parameters not being counted as invalid (#11849)
- debug: fix data race in Debug::log() (#11931)
- dispatchers: fix movecursor not updating client pos (#11672)
- functionHook: fix distance check
- gestures/float: fix typo
- gestures/fs: fix typo
- gestures: fix gesture direction detection (#11852)
- hookSystem: fix anchor point for mmap
- hookSystem: fix anchoring in seekNewPageAddr()
- input: fix refocus on grab dismiss (#12014)
- input: fix virtual keyboard keymaps (#11763)
- internal: fix clang-tidy "errors" (#11862)
- keybinds: fix repeat and long press keybinds release (#11863)
- layer-shell: fix fullscreen alpha when changing layers (#12124)
- managers/helpers: add missing includes (#11969)
- monitor/dpms: fix possible invalid state
- presentation: fix vrr check for reporting no refresh time
- protocols: fix output power protocol not sending mode confirmation (#12072)
- render/OpenGL: fix compilation for 32bit systems (#11667)
- renderer: add 1fv and 2fv uniform support (#12080)
- renderer: clean up surface UV size calcs, fix issues (#12070)
- renderer: fix fractional scale artifact (#12219)
- renderer: fix inconsistent border thickness for roundingPower < 2 (#11752)
- renderer: fix popup fadeout blur (#11756)
- renderer: fix uv calculations once and for all (#11770)
- renderer: fix uv scaling detection (#11789)
- rules: fix some monitor rules (#11873)
- screencopy: fix missing XBGR2101010 format with screencopy_force_8b (#12125)
- sessionlock: fix crash when sendScale is called on a disconnected (#12171)
- solitary: fix check for config error (#11733)
- surface: fix xwayland zero scaling damage calcs (#12123)
- windows: fix no decorate not disabling borders (#11673)
- workspace: fix relative workspaces with monitor descs
- workspaces: fix persistence with no monitor specified (#11807)
Other:
- CI/Arch: build hyprgraphics after hyprutils
- CI/Nix: Allow running CI in forks
- CI/release: remove generateVersion call
- CI/release: run cmake configure
- CMake: allow building hyprtester without running tests
- CMake: print pch messages based on var
- EGL: minor egl changes (#12132)
- IME: do not share keys/mods states from grabbed keyboards with ime keys/mods (#11917)
- Nix/tests: wl-copy -> wl-clipboard
- Nix: build hyprtester along with hyprland
- Nix: drop ninja for CMake build
- Revert "nix: use meson"
- build: replace generateVersion.sh (#12110)
- ci: remove duplicate cp and redundant mkdir commands
- cm: follow preferred srgb eotf for screencopy (#12230)
- cm: handle inert cm outputs (#11916)
- compositor: block parent window interaction when modal dialog children window is open (#12057)
- compositor: check for monitor layout issues post rule apply
- compositor: make wl_surface::frame follow pending states (#11953)
- config/rule: don't populate ID field for automatically id-managed workspaces
- config: allow negative to be used with tags. (#11779)
- config: increase default anr_missed_pings value
- config: support more than 1 window rule per rule line. (#11689)
- core/compositor: make wl_surface::frame follow pending states (#11896)
- core/compositor: revert make wl_surface::frame follow pending states (#11896)
- core: disable lto for hyprland builds (#11972)
- core: qtutils -> guiutils (#12231)
- cursor: refactor override handling (#12166)
- deco: reduce virtual calls in drop shadow
- decoration: reduce virtual calls
- desktopAnimationMgr: don't set fade 0 for members of a fs group (#12091)
- dmabuffer: ensure we only create one texture per buffer (#11990)
- dwindle: rework split logic to be fully gap-aware (#12047)
- exec: Spawn processes as direct children (#11735)
- ext-foreign-toplevel: remove stale entries when remapping (#12037)
- foreign-toplevel: continue past skipped invalid windows (#11804)
- hookSystem: use a full trampo setup for hooks
- hyprctl: include color management presets and sdr information (#12019)
- hyprctl: nullptr guard --systeminfo (#11822)
- hyprpm: make temp root if not present
- input: handle tablet active area scaling when axes swap due to rotation (#11661)
- input: support xkb v2 format (#11482)
- internal: prevent early exit processes from being zombies (#11995)
- internal: removed Herobrine
- layout: avoid nullptr deref (#11831)
- layout: fit floating window on toggle to float (#12139)
- layouts: apply [min|max]size window rules to dwindle & master layouts (#11898)
- meson: disable lto (#12129)
- meson: disable lto explicitly
- meson: set minimum version
- monitor: remove spammy trace log
- monitors: auto apply suggested scale and notify the user. (#11753)
- opengl: move from unordered_set to array
- pass/surface: check for LS size anim for misaligned fractional
- plugins: incorporate hyprdep ABI into plugin info (#12001)
- protocols/cm: remove unneeded preferred ref (#11877)
- protocols/core: round dnd drop surface box
- protocols/dmabuf: handle null pointer in CLinuxDMABufV1Protocol::resetFormatTable (#12207)
- protocols/seat: force down rounding of coords at the surface edge (#11890)
- render/cm: change non_shader_cm ignore behavior and set default to it (#12210)
- renderer/cm: allow gamma 2.2 instead of sRGB EOTF (#12094)
- renderer: asynchronously load background tex (#11749)
- renderer: clamp blur:passes 1-8
- renderer: disable anti-aliasing on cursor:zoom_factor (#6135) (#11828)
- renderer: optimize border drawcalls (#11891)
- renderer: round box in damageBox
- screencopy: wait longer to re-enable DS (#12135)
- seat: release depressed modifiers on leave (#11854)
- shm: refactor to UP and correct m_data check (#11820)
- systeminfo: log system package versions (#11946)
- tests: disable one test as it fails on ci
- tests: disable shortcut test for ci
- timer: constify methods (#12079)
- viewporter: clamp sub-pixel overflow (#11845)
- xdg-shell: implement invalid parent errors
- xwayland: set _NET_WORKAREA property (#12148)
- xwm: attempt to guess mime in sendData for DnD
Special thanks
Special thanks as always to:
Our sponsors
Diamond
37Signals
Gold
Framework
Donators
Top Supporters:
--, mukaro, Semtex, Tom94, soy_3l.beantser, SaltyIcetea, Freya Elizabeth Goins, lzieniew, Kay, ExBhal, MasterHowToLearn, 3RM, Tonao Paneguini, Sierra Layla Vithica, Anon2033, Brandon Wang, DHH, alexmanman5, Theory_Lukas, Blake-sama, Seishin, Hunter Wesson, Illyan, TyrHeimdal, elafarge, Arkevius, d, RaymondLC92, MadCatX, johndoe42, alukortti, Jas Singh, taigrr, Xoores, ari-cake, EncryptedEnigma
New Monthly Supporters:
KongrooParadox, Jason Zimdars, grateful anon, Rafael Martins, Lu, Jan, Yves, Luiz Aquino, navik, EvgenyRachlenko, GENARO LOYA DOUR, trustable0370, Jorge Y. C. Rodriguez, Bobby Rivera, steven_s, Pavel Dušek, Toshitaka Agata, mandrav
One-time Donators:
ryorichie, shikaji, tskulbru, szczot3k, Vincent F, myname0101, MirasM, Daniel Doherty, giri, rasa, potato, Jams Mendez, collin, koss054, LouisW, Mattisba, visooo, Razorflak, ProPatte, sgt, Bouni, EarthsonLu, W, Faab, Kenan Sharifli, ArchXceed, benvonh, J.P. Wing, 0xVoodoo, ayhan, Miray Gohan, quiron, August Lilleaas, ~hommel, Ethan Webb, fraccy, Kevin, Carlos Solórzano Cerdas, kastr, jmota, pch, darksun, JoseConseco, Maxime Gagne, joegas, Guido V, RedShed, Shane, philweber, romulus, nuelle, Nick M, Mustapha Mond, bfester, Alvin Lin, 4everN00b, riad33m, astraccato, spirossi, drxm1, anon, conig, Jonas Thern, Keli, Martin, gianu, Kevin K, @TealRaya, Benji, Borissimo, Ebbo, John, zoth, pampampampampamponponponponponponpampampampa, Himayat, Alican, curu, stelman, Q, frigidplatypus, Dan Page, Buzzard, mknpcz, bbutkovic, neonvoid, Pim Polderman, Marsimplodation, cloudscripting, StevenWalter, i_am_terence, mester, Jacob Delarosa, hl, alex, zusemat, LRVR, MichelDucartier, Jon Fredeen, Chris, maxx, Selim, Victor Rosenthal, Luis Gonzalez, say10, mcmoodoo, Grmume, Nilpointer, Lad, Pathief, Larguma, benniheiss, cannikin, NoeL, hyprcroc, Sven Krause, Matej Drobnič, vjg73_Gandhi2, SotoEstevez, jeroenvlek, SymphonySimper, simplectic, tricked, Kacper, nehalandrew, Jan Ihnen, Blub, Jonwin, tucker87, outi, chrisxmtls, pseudo, NotAriaN, ckoblue, xff, hellofriendo, Arto Olli, Jett Thedell, Momo On Code, MrFry, stjernstrom, nastymatt, iDie, IgorJ, andresfdz7, Joshua, Koko, joenu, HakierGrzonzo, codestothestars, Jrballesteros05, hanjoe, Quantumplation, mentalAdventurer, Sebastian Grant, Reptak, kiocone, ...
v0.51.1
As usual, a patch release backporting some fixes from main.
Fixes backported
- render: fix compilation for 32-bit systems
- dispatchers: fix movecursor not updating client pos
- input: handle tablet active area scaling when axes swap due to rotation
- windows: fix no decorate not disabling borders
- gestures: fix typo in float and fs
- renderer: clamp blur passes 1-8
- presentation: fix vrr check for reporting no refresh time
- solitary: fix check for config error
- animation: fix slide/slidefade to accept forced direction
- hyprpm: make temp root if not present
- workspace: fix relative workspaces with monitor descs
- renderer: fix inconsistent border thickness for roundingPower < 2
- monitors: auto apply suggested sale and notify the user
- vkeyboard: update cached mods before IME, add share_states = 2 config option
Special thanks
Sponsors
Thank you to our sponsors and every hyprperks member!
Diamond Sponsors
37Signals
Supporters
Special thanks as always to these gigachads for donating to the project!
Top Supporters:
ExBhal, elafarge, Amaan Q., Tonao Paneguini, Seishin, 3RM, taigrr, Theory_Lukas, soy_3l.beantser, TyrHeimdal, DHH, Anon2033, Semtex, Freya Elizabeth Goins, d, SaltyIcetea, ari-cake, Xoores, Blake-sama, alexmanman5, Brandon Wang, Arkevius, --, mukaro, Sierra Layla Vithica, Kay, Hunter Wesson, Tom94, RaymondLC92, Jas Singh, MasterHowToLearn, johndoe42, EncryptedEnigma, SA1G0N, alukortti
New Monthly Supporters:
Blue, chrispycode, Harley, notFunnys, Hans Baier, lesscomplexity, katter, Michael Rainville, Alissa, bizmyth, Another Grateful User, MrFizban, Perttu Laaksonen, Brian, louwiet, kayvan kazeminejad, Darrion Burgess, Kees Rodriguez, dirtknight, trex, Bald Eagle, bror.net, Macintosh23, giallojoe, Ludvig Omholt, Mason Rhodes, swayne, meirin, dunxen, RevClamJuice, Raideeen, Edgar Lombera, Sean, solunix, reed, Servius, pw, Jeremy, Mimi, Night, Dominikrt, we.r.robots, Vinatic, Major Hayden, frozenkro, Rhizoome, m3tam3re, Linux Stork, CK, Shavix, NeonPalms, gephyroklept, Asterkeks, jollof, Sonny, Angel_of_Deths, Manoel Valladao, Gilberto Carvalho, thofu, Silas A. Bischoff, ko-fi-enjoyer-ubie, Janin, MarGri
One-time Donators:
yds, layz, stormaes, Sven, Pomelo, Rachel Snijders, non member, vafu, Isledon, maxxery, DerArim, Kasalovalova, coldwater, BH, WideTurtle, Niek, Ghoul, Pareix, DaveBlack666, xzxADIxzx, neweziz, Nemanja Lakicevic, Chicken_Nacho, Sirens, Davide, klukz, user, archaengel, trambowsky, Bastos, abbasio, TüT, Andrej De Palma, gabesan21, hawza, DAS67, Gábor, lei, Barry, Lembata, vputz, iv-lite, Enzy, krauzerkrip, neo-clon, ismay7, selion, jtc, Tyrianno, Lyan, MasterNerd, WF1d$, TomášBurkert, Leandro dos Reis, AlexC, Dimitris, b12o, luigiannelli, Ramin Assadollahi, maarten, mlemmer, qrulf, Usama, JustinChoi, strict, Mathisbuilder , RM Hubbert, EricHustinx, sidix, themkat, Q, Darogirn , Dez, przempore, Jakub W., Quintin, nixnix, botamonger, Corey McCulloch, ddubs, Jaglekon, Thank you, r!cky, vladikaPetrovacNaMlavi, Piquel, Noelo, Indyjones686, yoshi, Francois Smith, Krishap, Andy H, sdiggly, salivo, EricFries, tacogips, Ceroq, Sebastian, Jared Reardon, dylanarts, w0rk3r, Jacopo Soria, shellkr, schollmadf, lucaaaum, alextyh, Jan, Neson, coolstrong, frankphilip, Razcall, Huub, RodEsp, Leonel, JustinvanSon, Sid, dev2and0m, Malachi, MrIngelborn, Valentin, Humblemonk, Maksymilian Mika, EchterAlsFake, ALEZ, rd, Holly, stef, Stu Pidazul, dancccskooma, nickg, appleseedexm, piet, L3t1, CluelessCamel, The down troden but not forgotten, Torsten Schieber, gemstar, peetone, Ty Beller, RafaelRosa, Kai Sauerwald, DH, lennard, rankomat, Anup, Thor, nomm, shgew, hackbrot, ThatGuyRed, Bit, Hawgins, z7ealth, sirkrypt0, navik, ostropunk, lunkhead, Jürgen, sarcutus, Stan, Wildos, Alex, PrinzJuliano, bina7y, Vik, nuc1eon, Travis Kinney, matcone, Justsquid, songxisto, KrankerDoktor, Megalinenv, samce, carschandler, Ivan, haitianlazer, hjkl100, rubenbike, neuralch, Matysek, Mohamed Amine JLASSI, Ethan Willers, smol_cat, Elizabeth Pinero, Zydent, Nath, Exanime, Meow, premiero, PyArch, Jon, georgebastille, PercyJW, Hawk, asp22, Daniel Heery, Theseus, JHGBaouns, Karl, greyrat64, Felix, Caret, Greppin, Christian, Akira Suzuki, Spokes, Gannon, Zwackelmann, Nacho, dewdgi, Stealth_Hedgehog, ValJed, arings, Wookie , everypone, quack, Andough, Nagash, Rincewind, Gav, Depressed Diskette, Josh D, Davi A. Sampaio, taveren, MexidoTrumpl, Kim, imakesound, supp, highwaz, Peter, grady.link, Reganomicon, Cristian, Zincan, Otávio Ribeiro, scrawl, Mischa van den Burg, NoName, xnm, amritk
Full Changelog: v0.51.0...v0.51.1
v0.51.0
Hey hey people, vaxry here. I got something for you. Starts with "H" and ends in "yprland". :)
New features:
- config: add better zoomFactor default (#11060)
- config: add dim_modal
- dispatchers: allow window address in swapwindow (#11518)
- gestures: add unset
- hyprctl: add getprop (#11394)
- input: Add fully configurable trackpad gestures (#11490)
- input: add per-device scroll-factor (#11241)
- master: add ignoremaster to swapwithmaster
- masterlayout: add previous mode for focusmaster command (#11361)
- nix/lib: add bezier to topCommandsPrefixes
- renderer: Add cursor:invisible to allow to hide the cursor (#11058)
- renderer: Add rounding power setting to groupbar and gradient roundness. (#11420)
- renderer: add dpms animations (#11452)
- renderer: add eRenderStage::RENDER_POST_WALLPAPER (#11501)
- renderer: add popup fade-in-out (#11313)
- screencopy: add force 8 bit to fix 10b screensharing (#11623)
- virtualkeyboard: Add options to skip releasing pressed keys on close and to skip sharing key states (#11214)
- windowrules: Add
novrrdynamic window rule (#11370)
Fixes:
- animation: fix slide/slidevert to accept params (#11574)
- ci: correct tar command for xz compression & fix typos (#11213)
- compositor: fix new workspace being lost in moveWorkspaceToMonitor
- config: fix crash when monitor position contains non-integer values before/after 'x' (#11573)
- configWatcher: fix inotify event reading buffer size (#11337)
- core: fix maxwidth resolution mode (#11183)
- core: fix workspace persistence tracking (#11239)
- descriptions: fix bad json output (#11350)
- dwindle: fix single_window_aspect_ratio not updating with config reload (#11305)
- fix: add climits includes (#11288)
- fix: include decorations in visibleOnMonitor calculation (#11232)
- framescheduler: fix edge case crashes
- hdr: fix overrides and missing edid hdr metadata (#11476)
- hdr: scRGB, HLG and SDR -> HDR fixes (#11499)
- internal: add missing c includes (#11417)
- internal: Fix compilation with libc++ (#11355)
- monitor: fix crash on mutating workspace vec
- monitor: fix dpms toggling animations when state is unchanged (#11480)
- nix/lib: add bezier to topCommandsPrefixes
- protocols/kde-deco: fix tug of war in deco mode
- protocols/subcompositor: fix subsurface sorting (#11136)
- protocols: Fix fading out windows with noscreenshare being visible (#11457)
- protocols: fix presentation time proto version (#11306)
- renderer: Fix CM for DS and SDR passthrough (#11503)
- renderer: fix snapshot coords
- renderer: minor fixups to uv calcs (#11375)
- screencopy: add force 8 bit to fix 10b screensharing (#11623)
- sessionlock: fix flipped if condition
- sessionlock: fix timer logic on unsafe state
- socket2: fixup invalid ws passed to openwindow
- swipe: fix workspace swipe not rendering last frame if target ws is on edge (#11184)
- touch: fix popup coordinates for touch down
- window: fix requestedMinSize crash (#11498)
- xwayland: fix game permanent blackscreen (#11542)
Other:
- CI/Nix: also check for qt version in update script
- CTM: check for finite value aswell (#11185)
- LICENSE: Update year (#11301)
- README: add link to CI from badge (#11085)
- build: bump hu dep to 0.8.2
- compositor: mark createNewWorkspace as nodiscard
- compositor: properly set infinite region on null input
- config: Hardened config logic against Time-Of-Check race conditions (#11368)
- config: default drag_lock to 0
- config: format animation config as table for readability (#11326)
- config: update environment if cfg changes live (#11508)
- core: disable esync for non-linux kernels
- core: enter unsafe state on boot if there are no mons
- core: move workspace ptrs to weak (#11194)
- disable buffer readability checks on intel (#11515)
- dnd: drop on tablet pen tip up (#11270)
- drm: check syncobj timeline support before advertising protocol (#11117)
- dwindle: simplify split_bias logic and set of possible values. (#11448)
- eventloop: avoid duplicate timers
- eventloop: improve timer handling to avoid crashes
- example: make screen shader example compatible with glsl 300 (#10846) (#11132)
- foreign-toplevel: update monitor properly on changed
- framescheduler: check monitor validity in doLater
- framescheduler: dont if check deleted weakpointer (#11063)
- hyprctl: Include physical monitor size in IPC monitor info (#11276)
- hyprctl: make animations print details about bezier curves (#10413) (#10871)
- input: don't reload xkb configs if settings didnt change
- input: lock focus for tablet when down (#11219)
- internal: Ensure unique identifiers for persistent workspaces (#11409)
- internal: Solitary clients with single subsurface & verbose solitary/tearing/DS checks (#11228)
- internal: reference command-line arguments instead of copying them (#11422)
- internal: replace unsafe strcpy with snprintf (#11128)
- internal: removed Herobrine
- internal: set value and goal for window size and position on setGroupCurrent (#11120)
- internal: unify VT getting
- keybinds: do not reset scroll timer on not passed
- keybinds: use the triggering keyboard for repeat timings (#11309)
- layerSurface: check for monitor validity in startAnimation
- layers: check monitor is not null on animation update (#11267)
- master: avoid crash if openingon null in onWindowCreated
- misc: remove commas from device names
- opengl: detect android fence support and disable explicit if it's missing (#11077)
- opengl: improve render fn arg clarity (#11286)
- plugins: expose csd functionality (#11551)
- popup: imorove logging, use fadeAlpha for opacity
- popup: remove wlSurface ownership on destroy
- presentation: handle vrr for v1 clients (#11608)
- protocols/activation: revert send an invalid token when serial isn't valid (#11505)
- protocols/activation: send an invalid token when serial isn't valid (#11505)
- protocols/gamma: support pipes (#11076)
- protocols/wayland: use UP and rvalue refs for callbacks (#11471)
- protocols: implement ext-data-control (#11323)
- protocols: implement pointer-warp-v1 (#11469)
- refactor: Use new hyprutils casts (#11377)
- render: include numbers header (#11475)
- renderer: apply default luma for reverting back to srgb
- renderer: implement wp-color-management-v1 transfer functions (#11084)
- renderer: improve modeset timings (#11461)
- renderer: improve zoom in anims (#11453)
- renderer: use CRegion foreach over getRects (#10980)
- screencopy: avoid crash on cm disabled
- screencopy: multiply box pos by scale
- screencopy: un-hdr screencopy buffers for cm-unaware clients (#11294)
- session-lock: explicitly consider dpms states for sending locked or denied (#11278)
- snap: use window extents instead of border size (#11079)
- subsurface: check surface size in damageLastArea
- syncobj: use rendernode for timelines (#11087)
- systeminfo: print more render info
- tablet: do not lock focus when dnd-ing (#11390)
- tablet: remove old comment
- touch: detach from pointer input
- window: allow rounding power of 1
- window: treat maximize as toggle request (#11564)
- xwayland: handle minimize and maximize requests (#11536)
- xwayland: prevent infinite event loop in XWM clipboard transfers (#11427)
Special thanks
Sponsors
Thank you to our sponsors and every hyprperks member!
Diamond Sponsors
37Signals
Supporters
Special thanks as always to these gigachads for donating to the project!
Top Supporters:
ExBhal, elafarge, Amaan Q., Tonao Paneguini, Seishin, 3RM, taigrr, Theory_Lukas, soy_3l.beantser, TyrHeimdal, DHH, Anon2033, Semtex, Freya Elizabeth Goins, d, SaltyIcetea, ari-cake, Xoores, Blake-sama, alexmanman5, Brandon Wang, Arkevius, --, mukaro, Sierra Layla Vithica, Kay, Hunter Wesson, Tom94, RaymondLC92, Jas Singh, MasterHowToLearn, johndoe42, EncryptedEnigma, SA1G0N, alukortti
New Monthly Supporters:
Blue, chrispycode, Harley, notFunnys, Hans Baier, lesscomplexity, katter, Michael Rainville, Alissa, bizmyth, Another Grateful User, MrFizban, Perttu Laaksonen, Brian, louwiet, kayvan kazeminejad, Darrion Burgess, Kees Rodriguez, dirtknight, trex, Bald Eagle, bror.net, Macintosh23, giallojoe, Ludvig Omholt, Mason Rhodes, swayne, meirin, dunxen, RevClamJuice, Raideeen, Edgar Lombera, Sean, solunix, reed, Servius, pw, Jeremy, Mimi, Night, Dominikrt, we.r.robots, Vinatic, Major Hayden, frozenkro, Rhizoome, m3tam3re, Linux Stork, CK, Shavix, NeonPalms, gephyroklept, Asterkeks, jollof, Sonny, Angel_of_Deths, Manoel Valladao, Gilberto Carvalho, thofu, Silas A. Bischoff, ko-fi-enjoyer-ubie, Janin, MarGri
One-time Donators:
yds, layz, stormaes, Sven, Pomelo, Rachel Snijders, non member, vafu, Isledon, maxxery, DerArim, Kasalovalova, coldwater, BH, WideTurtle, Niek, Ghoul, Pareix, DaveBlack666, xzxADIxzx, neweziz, Nemanja Lakicevic, Chicken_Nacho, Sirens, Davide, klukz, user, archaengel, trambowsky, Bastos, abbasio, TüT, Andrej De Palma, gabesan21, hawza, DAS67, Gábor, lei, Barry, Lembata, vputz, iv-lite, Enzy, krauzerkrip, neo-clon, ismay7, selion, jtc, Tyrianno, Lyan, MasterNerd, WF1d$, TomášBurkert, Leandro dos Reis, AlexC, Dimitris, b12o, luigiannelli, Ramin Assadollahi, maarten, mlemmer, qrulf, Usama, JustinChoi, strict, Mathisbuilder , RM Hubbert, EricHustinx, sidix, themkat, Q, Darogirn , Dez, przempore, Jakub W., Quintin, nixnix, botamonger, Corey McCulloch, ddubs, Jaglekon, Thank you, r!cky, vladikaPetrovacNaMlavi, Piquel, Noelo, Indyjones686, yoshi, Francois Smith, Krishap, Andy H, sdiggly, salivo, EricFries, tacogips, Ceroq, Sebastian, Jared Reardon, dylanarts, w0rk3r, Jacopo Soria, shellkr, schollmadf, lucaaaum, alextyh, Jan, Neson, coolstrong, frankphilip, Razcall, Huub, RodEsp, Leonel, JustinvanSon, Sid, dev2and0m, Malachi, MrIngelborn, Vale...
v0.50.1
A patch release backporting some fixes from main onto 0.50.0.
Fixes backported
- socket2: fixup invalid ws passed to openwindow
- config: default drag_lock to 0
- framescheduler: dont if check deleted weakpointer (#11063)
- compositor: properly set infinite region on null input
- framescheduler: check monitor validity in doLater
- snap: use window extents instead of border size (#11079)
- opengl: detect android fence support and disable explicit if it's missing (#11077)
- eventloop: avoid duplicate timers
- eventloop: improve timer handling to avoid crashes
- sessionlock: fix timer logic on unsafe state
Special thanks
Special thanks as always to the people who help fund this entire project:
Top Supporters:
Tonao Paneguini, MasterHowToLearn, Seishin, Amaan Q., --, SomeMediocreGamer, ExBhal, Xoores, Affax, Brandon Wang, mukaro, arc-d3v, ari-cake, Kay, RaymondLC92, travmonkey, alukortti, alexmanman5, taigrr, DHH, inittux111, Jas Singh, johndoe42, 3RM, Arkevius, Hunter Wesson, SA1G0N, Theory_Lukas, AuHunter
New Monthly Supporters:
Simen Graaten, Josh Ichiyo Lovejoy, idonthaveaname, edrodgers731, Narrador, blazebis, Nytem, kenya888, exebob, Gavilaan, JanCoe, Lasovar, Marcus Yanello, Freerunner, fossjunkie, ReaprXRam, ionut cristian cucu, yturijea, Phush, JoeKatar, Gábor Turu, Mircevski, Ronja, Anthony, N, alepez, CaptnJayce, dangatang, ismd, calumhalpin, Mike Zakes, Hyperactive Racoon
One-time Donators:
AsciiWolf, smolley, Porkinz, inlovewithhyprland, afrianjunior, Lungaro, JonesMcJon, syndicatedshannon, Tomfried, Alex M, mtj, Dustin Mason, Ashtefere, Jayge Ekenstam, Oofyeet, hmed69, Billy (bootlegbilly), pachicobue, dentych, yoorse, dorebase2006, vooshy, IamNanjo, aravinth, mbalasz, Fandermir, Munsio, Bracket, An appreciator, Luca Antonelli, Nik Reid, huckb, NathBeLive, Mateusz Wosik, Giri, NerdyByNature, Sam K, Brookesy, emeric, flashgnash, Pollo809, garypippi, Tor, Alosnah, SnUwU, DeaDvey, xxx, Nutel, kes, Franchise2099, Unboxed kitten, Oz Diamond, ddubs, Purian23, kurwa, mangust, Roman, Sumiinix, Afif Miguel Castañon, Kyurim, wyrd, Skallen, Doc, Otard95, R2D2_1234, revolverxd, sonicv6#7621, eracz
Full Changelog: v0.50.0...v0.50.1
v0.50.0
Hello there, can you hear me? I've got some Hyprland news for ya.
New features:
- Core: Add a test suite (#9297)
- config/monitor: Add monitor v2 HDR rules (#10623)
- config: add a new monitor v2 config syntax (#9761)
- config: add group: selector (#10588)
- config: add maxwidth monitor resolution mode (#10528)
- core: add auto-center arrangements (#10527)
- drm-lease: Add Multi-GPU Support (#10099)
- dwindle: add better automatic window drag and drop direction detection (#9704)
- dwindle: add the ability to specify an aspect ratio for a singular window (#10650)
- grpupbar: Add config options to color inactive and locked groupbar titles (#10667)
- input: add sticky option for drag_lock (#10702)
- internal: added error log when getEdgeDefinedPoint is impossible (#10462)
- keybinds: add an option to respect gaps out for floating to movewindow (#9360)
- permissions: add permission management for keyboards (#10367)
- protocols: add ext-workspace implementation (#10818)
- renderer/cm: Add automatic hdr (#9785)
- renderer: Added a pointer position uniform to the screen shader. (#10821)
- renderer: add mouse zoom animations (#10882)
- renderer: add wrapping options to renderTexture method (#10497)
- renderer: add wrapping options to renderTextureWithBlur method (#10807)
- snap: add option to respect gaps (#10524)
- unbind: add unbind all
- windowrules: Add noscreenshare (#10482)
Fixes:
- compositor: fix race to finish on null buffer (#10970)
- config: fix crash on misnamed variable (#10549)
- config: fix inconsistant hint of default value (#10556)
- config: add missing description for enforce_permissions
- cursor: fix screencopy cursor pos and duplicate shape with sw cursors (#10519)
- debugOverlay: fix tick measurement
- eventLoop: fixup event source callbacks
- hookSystem: avoid using manual mem management, fix leak
- hyprpm: fix crash with enable without an arg
- hyprpm: fix execute permission bit on installed dirs (#10435)
- hyprpm: fix typo in help message (#10687)
- hyprland-uwsm.desktop: Add TryExec
- hyprpm: add missing include for libc++ after 1c530cb (#10344)
- hyprpm: check version and update automatically on add (#10706)
- hyprpm: ignore pins when adding a package with a git rev (#10502)
- hyprpm: refuse adding a new repo without update
- input: Fix incorrect localcoords with a surface above an XWayland window (#10773)
- input: fix mouseDown triggering hl ops on locked (#10809)
- internal: Fix HyprError not displaying at startup (#10606)
- opengl: add missing skipcm if case (#10888)
- opengl: add missing vao for screenshader (#10397)
- protocols/cm: Fix preferred image description (#11026)
- protocols/cm: fix wp invalid luminance check (#10752)
- protocols/subcompositor: fixup place_above and _below
- protocols: Remove incorrect CM proto debug check and fix preferred image description (#11023)
- renderer: fix incorrect cursor position when screencopy region with monitor scaling (#10675)
- renderer: fixup some missing fadeout cases with special
- renderer: minor damage fixes
- screencopy: fix applying
noscreenshareto invisible special workspaces (#10628) - screencopy: fix improper box calculations for transforms (#10870)
- screencopy: fix incorrect noscreenshare positions with monitor scaling (#10674)
- snap: fix
border_overlapoption for monitor snapping (#10987) - xwayland: Fix crash when copying from wayland to xwayland (#10786)
- xwayland: fix minor errors in previous refactor (#10763)
- xwayland: fix xwayland -> wayland clipboard (#10646)
Other:
- CMake: disable tests by default (#10899)
- Nix: filter src using fileset
- README: Update image cdn (#10722)
- README: update previews
- Renderer: Implement new render scheduling (#10936)
- alphamodifier: move to unique ptrs
- anr: make dialog disappear if the app dies
- assets: update header
- asyncDialogBox: lock box in fdWrite to prevent a uaf (#10759)
- buffer: check if buffer fd already readable (#10894)
- buffer: don't use crazy listener::emit()
- build: require hyprgraphics>=0.1.3 (#10350)
- cmake: disable gprof by default
- compositor: dont send around int max values
- config: Restore auto-center-* for monitors (#10660)
- config: disable hw on mgpu nvidia by default (#11018)
- config: disable new_render_scheduling by default
- config: nuke explicit_sync settings
- config: remove render_ahead* config options
- config: use parseScale for monitorv2 (#10852)
- core: Include cstring whenever strncpy is used (#10404)
- core: drop the legacy renderer (#10408)
- core: never use hw cursors when tearing
- core: use new typed signals from hu (#10853)
- ctmcontrol: move to unique ptrs
- cursor: reset hc data after theme change
- cursorshape: use unique ptrs
- debug/pass: show live/precompile blur in debug
- desktop: prevent layers from dismissing their own seat grabs on map (#10417)
- dmabuf: move to unique ptrs
- eventloop: RAII the even source on readable fd
- groupbar: force recalc on visibility changes
- hyprctl: Remove exceptions, use modern error handling (#10664)
- hyprctl: don't detect a negative value as a parameter (#10671)
- hyprctl: print no open windows instead of invalid request on empty clients
- hyprctl: replace read-only strings with std::string_view (#10851)
- hyprpm: print all dependencies that are missing (#10907)
- hyprpm: reject remove without a param
- hyprpm: switch to numeric owner/group after f8bbe51 (#10345)
- input: always allow focus to permission popups
- input: disallow virtual keyboards from changing LED state (#10402)
- input: do not send mouse events when outside of a surface (#10416)
- input: ensure seat grabs from exclusive layers can be dismissed (#10418)
- input: grab the correct active workspace on mouseMove
- input: revert #10416 and #10418
- input: support configuring drag_3fg from libinput (#10631)
- input: unhide cursor on tablet events after touch events (#10484)
- internal: Catch filesystem exceptions while iterating RunTimeDir (#10648)
- internal: Center window on parent if available (#10582)
- internal: Prevent double-free in attemptDirectScanout (#10974)
- internal: Use
usinginstead of#defineto alias smart pointers (#10673) - internal: clean up dead snapshot code
- internal: embed example config (#10608)
- internal: handle setGroupCurrent properly on fs groups (#10920)
- internal: iso C++ prohibits anonymous structs (#10955)
- internal: refactor to use empty() (#10599)
- internal: removed Herobrine
- monintor: remove rathandler
- monitor: ensure autoDir is applied when changed (#10672)
- monitor: mark 0, 0 presentation timestamps as invalid
- opengl: avoid reallocations in EGLImage (#10960)
- opengl: optimize shaders and reduce unneeded drawcalls (#10364)
- opengl: publicize shader creation/usage functions (#10378)
- opengl: use a stack for storing monitor transform enabled
- pass/surface: make sure popup blurs are marked for require live blur
- pass: overload TexPass constructor
- permissions: properly print config requests for plugins
- plugins: don't update config plugins on state unchanged
- plugins: made currentWindow available in RENDER_PRE_WINDOW (#10957)
- presentation: move to unique ptrs
- protocols/hyprland-surface: account for scaled monitor positions (#10415)
- protocols: simulate mouse movement after activating a toplevel (#10429)
- protocols: support xdg-shell v7
- protocols: whitelist wp_color_manager_v1 for security_context (#10723)
- refactor: replace all
typedefwithusing(#10594) - refactor: use std::ranges whenever possible (#10584)
- renderer: always render snapshots as 8bit
- renderer: clamp rounding_power (#10816)
- renderer: make lock fail textures dynamically loaded
- renderer: move render calculation behind if case
- renderer: reduce a lot of glcalls and cache various states (#10757)
- renderer: refuse rendering invalid resolutions
- renderer: render blur on fade out (#10356)
- renderer: use alpha for the lockttytext texture
- renderer: use makeUnique for session-lock render passes (#11019)
- renderpass: use unique ptr instead of shared ptr
- screencopy: ignore hidden windows in noscreenshare
- screencopy: store a fb before permission popup if the permission is pending (#10455)
- session-lock: don't render workspaces when locked (#10865)
- sessionlock: restore cursor if hidden on unlock (#10889)
- shader: replace texture2d with texture (#10893)
- singlepixel: move to unique ptrs
- snap: move
gapOffsetlogic outside of for loop (#10861) - splashes: add zacoons' splash
- texture: zero out the cached states in destroy (#10954)
- versionkeeper: don't pop up on initial launch
- windowrules/move: clamp max pos in onscreen to avoid assert crash
- xwayland: Don't leave shell process (#10802)
- xwayland: Use RAII instead or freeing memory manually (#10677)
- xwayland: do not include xcb.h when xwayland is disabled (#10407)
- xwayland: pad pid with leading zeroes in lockfile
- xwl: dont mark the even source as readable
- xwm: Refactored functions in XWM.cpp (#10569)
Special thanks
As always, special thanks to these people for donating to keep the project running:
Top Supporters:
Tonao Paneguini, MasterHowToLearn, Seishin, Amaan Q., --, SomeMediocreGamer, ExBhal, Xoores, Affax, Brandon Wang, mukaro, arc-d3v, ari-cake, Kay, RaymondLC92, travmonkey, alukortti, alexmanman5, taigrr, DHH, inittux111, Jas Singh, johndoe42, 3RM, Arkevius, Hunter Wesson, SA1G0N, Theory_Lukas, AuHunter
New Monthly Supporters:
Simen Graaten, Josh Ichiyo Lovejoy, idonthaveaname, edrodgers731, Narrador, blazebis, Nytem, kenya888, exebob, Gavilaan, JanCoe, Lasovar, Marcus Yanello, Freerunner, fossjunkie, ReaprXRam, ionut cristian cucu, y...
v0.49.0
After a while, your Overlord is proud to announce Hyprland 0.49.0.
Breaking changes:
cursor:warp_on_change_workspaceno longer controls warps for special workspaces. Usewarp_on_toggle_specialfor more fine control.master:center_master_slaves_on_righthas been changed tomaster:center_master_fallbackproviding more options than just right.- you'll now need to input your sudo password for sensitive hyprpm operations. Due to that change your repositories and enabled plugins will be reset.
New features:
- InputManager: add config option to disable keybinds per device (#10064)
- InputManager: add nofollowmouse (#9994)
- Permission Manager: add permission management for screencopy (#9930)
- animations: Add option for animating workspaces as if the first and last were adjacent (#10277)
- anr: add config for ping number before popup shows up (#9782)
- async: add Promise and use it for AsyncDialogBox
- binds: add drag_threshold for click/drag isolation (#9839)
- groupbar: Add options for setting group bar title font weight (and indicator gap) (#9617)
- groupbar: add text offset and upper gap settings (#9733)
- helpers: Add an async dialog box impl (#9919)
- input: add warp_on_toggle_special (#9945)
- keybinds: add sendkeystate dispatcher (#9599)
- layerrules: add abovelock to render above lockscreen (#9793)
- permissions: add perms for plugin loading (#10184)
- protocols: add Hyprland toplevel mapping implementation (#9775)
- protocols: add support for xdg-system-bell-v1
- protocols: add xdg_toplevel_tag_v1 support
- renderer: add render:send_content_type setting (#9851)
- socket2: add minimized event for foreign-wlr
- socket2: add monitorremovedv2 event (#10229)
- windowrules: add noclosefor
- workspaces: Add binds:hide_special_on_workspace_change (#9728)
Fixes:
- asyncDialogBox: fix missing pid
- asyncdialogbox: fix missing header
- ci: minor fixes to glaze
- compositor/surface: fix surface opaque and input regions not being updated (#10055)
- compositor: fix crash when moving a workspace to a monitor with size 0x0 (#9848)
- compositor: fix getMonitorInDirection skipping active monitor (#10114)
- config: Fix matching monitor by description to allow space prefix (#9788)
- configmgr: fix CConfigValue<> from plugins
- core: fix artifacts when fullscreening (#9778)
- core: fix crash in data device on shutdown (#9997)
- core: fix null ref when resuming system (#9794)
- ctm: fix crash when finishing ctm progress with a destroyed monitor (#9835)
- framebuffer: Fix framebuffer size check (#10068)
- helpers: add missing include for BSDs after 3c12867 (#9982)
- hyprpm: add missing include for libc++ after 858c0e2 (#10234)
- hyprpm: add missing return (#10299)
- input/layers: Fix exclusive LS focus / refocus after unmap (#9984)
- internal: fix minor ubsan errors (#9743)
- internal: fix name confusion in SAlphaValue
- keybindmgr: fixup bindn regression
- layerrules: fix abovelock interactivity for touch input (#10253)
- makefile: add new shaders to
make installheaders(#9783) - makefile: fix find command in installheaders
- monitors: fix disconnected monitors are reconnected to an empty workspace (#9874)
- renderer: Simplify and fix hdr metadata setting (#9706)
- socket2: fix order of window events on map (#10341)
- solitary: Fix the non-working tearing #9429 (#9772)
- swipe: fix prev workspace remembering
- swipe: fix swiping onto a new workspace bound to another monitor (#8176) (#9927)
- window: Fix order of urgency flag and event emission (#10163)
- workspaces: Fix empty flag not selecting active workspace (#10237)
- workspaces: minor fixes to persistence
- xdg-bell/xdg-tag: fix moved resource usage
- xdg-bell: fix wrong resource cast
- xdg-shell: fix some null refs (#9992)
Other:
- CursorManager: Store cursor pixel data retrieved from X/HC as a copy (#9986)
- DMABuffer: reserve vector and avoid UB (#10317)
- DataDevice: position icon at cursor hotspot (#9895)
- DonationNag: ask after each major update (#10213)
- Groupbar: apply scaling factor to text (#9731)
- IHyprLayout: center floating window at cursor when picked up from fullscreen (#10063)
- IHyprLayout: respect minimum window size (#10017)
- SECURITY: init security policy
- ci: close unwanted issues automatically (#10106)
- cm: Use precomputed primaries conversion (#9814)
- cmake: do not install version.h.in (#10035)
- cmake: ignore Wclobbered
- compositor: avoid crash on null window monitor move
- compositor: refactor class member vars (#10141)
- compositor: set fullscreenstate on movetoworkspace (#10303)
- config: Refactor class member vars (#10124)
- config: use natural increase and decrease of brightness for default cfg (#10210)
- core: Don't damage the entire surface every frame (#9763)
- core: wait for dmabuf readiness (#9806)
- ctm: enable fade animation on nvidia driver versions 575 and above (#10095)
- debug: refactor class member vars (#10130)
- decoration: bring back border_part_of_window
- decorationPositioner: update posinfo on window update
- desktop: Damage subsurface when position changes (#10094)
- desktop: cleanup code and use std::ranges (#10289)
- devices: refactor class member vars (#10206)
- dwindle: ignore fullscreen window for positioning when use_active_for_splits=false (#9838)
- dwindle: use idealIgnoreReserved for moveWindowTo bbs
- github: remove issue templates
- groupbar: round boxes
- helpers: properly support next/prev for workspace switching (#10074)
- helpers: refactor class member vars (#10218)
- hyprerror: refactor class member vars (#10227)
- hyprpm: Minor optimizations and refactor of helpers and progress bar (#10246)
- hyprpm: clean up root access and properly check input (#10304)
- hyprpm: extend dep list
- hyprpm: move to system directories for storing plugins (#10211)
- hyprpm: wrap sudo cmd in quotes
- input: don't use pointer hold logic for unmapped surfs
- inputs: refactor class member vars (#10230)
- internal: Don't force default cursor on config reload/monitor reconfigure (#9815)
- internal: Removed Herobrine
- internal: Use vecnotinrect instead of !vecinrect (#10262)
- keybinds: allow executing binds not bound to a key (#10102)
- layerSurface: warp position and size before taking a snapshot (#10054)
- layers: refactor class member vars (#10149)
- layout: allow interacting with pinned windows when fullscreened (#10326)
- layout: center floating window at cursor when picked up from fullscreen (#9780)
- layout: properly assign workspace and monitor when moving a child to the parent (#10338)
- layout: properly track floating window position (#9937)
- layouts: refactor class member vars (#10228)
- managers: refactor class member vars (#10242)
- master: Change center_master_slaves_on_right to center_master_fallback (#10201)
- nix/module: load plugins using exec-once (#9836)
- opengl: check for g_pHyprOpengl pointer (#9791)
- opengl: don't attempt to compile cm on gles3.0
- pass/rect: include clipBox in opaque calculations
- pass: remove renderer finalDamage since it's unused (#9996)
- pass: remove unusued timeline in texpass (#9734)
- pass: revert "remove renderer finalDamage since it's unused (#9996)" (#10039)
- permissions: disable automatic reloading of permissions from cfg
- plugins: refactor class member vars (#10257)
- popup: damage old size on unmap as well as new (#10306)
- protocols/meson.build: use native wayland-scanner
- protocols: Don't update hdr metadata if image description is unchanged (#9776)
- protocols: ensure PointerConstraints activation occurs only after attched to InputManager (#10096)
- protocols: refactor class member vars (a-m) (#10265)
- protocols: refactor class member vars (core) (#10259)
- protocols: refactor class member vars (n-t) (#10273)
- protocols: refactor class member vars (types) (#10261)
- protocols: refactor class member vars (u-z) (#10282)
- refactor: cshader class to sshader struct (#10324)
- render, helpers: Call OpenGL destroyMonitorResources on disconnect (#10111)
- render: properly release rendered buffers (#9807)
- render: refactor class member vars (#10292)
- renderer/opengl: Extract shaders from source (#9600)
- renderer: always try to apply a mode if pixel size is invalid (#10291)
- renderer: precompute fullalpha (#10319)
- renderer: render fading out floating windows over fs
- renderer: render tiled fading out above other tiled windows
- screencopy: Handle explicit sync failure (#10050)
- screencopy: don't render cursor when frame doesn't want it
- screencopy: support hw cursors while sharing with cursor
- seat: avoid sending null surfaces in leave/enter events
- surfacestate: reset buffer bit before applying to current
- surfacestate: track and apply updated state
- synctimeline: check if fd is readable before wait (#9789)
- tablet: naive window refocusing (#10110)
- time: move to stl's clocks and move timer
- versionkeeper: create version file if not present (#9829)
- watchdog: remove watchdog
- window: don't deactivate unfocused xwayland windows in groups (#9781)
- window: make AsyncDialogBoxes not closeable
- window: send fractional scale on updateScaleTransform
- window: use stored size for new floating window when persistentsize is set (#10212)
- windowrules: allow incrementing window props (#9566)
- windows: refactor class member vars (#10168)
- workspaces: refactor class member vars (#10167)
- xcursormgr: include
- xdg-bell: avoid crashes on null toplevel
- xwayland: Cleanup server startup and FDs (#9769)
- xwayland: refactor class member vars (#10312)
- xwayland: sync primary selection with wayland (#9952)
- xwl: dont close the fd to early (#9715)
Special Thanks
Special than...
v0.48.1
This is a bugfix release with some patches cherry-picked from main on top of 0.48.0.
Fixes backported
- renderer: Simplify and fix hdr metadata setting
- seat: avoid sending null surfaces in leave/enter events
- xwl: don't close the fd too early
- groupbar: apply scaling factor to text
- pass: remove unused timeline in texpass
- groupbar: round boxes
- groupbar: include clipBox in opaque calculations
- opengl: don't attempt to compile cm on gles3.0
- surfacestate: track and apply updated state
- internal: fix minor ubsan errors
- workspaces: minor fixes to persistence
- surfacestate: reset buffer bit before applying to current
- core: don't damage the entire surface every frame
- xwayland: cleanup server startup and fds
Special thanks
Special thanks to these gigachads for donating $$$ to help the project run:
Top Supporters:
Azelphur, arc-nix, ExBhal, SomeMediocreGamer, Robin B., yyyyyyyan, taigrr, Amaan Q., Xoores, Jas Singh, Theory_Lukas, JanRi3D, ari-cake, alukortti, RaymondLC92, MasterHowToLearn, johndoe42, Abdulaziz Al-Khater, AuHunter
New Monthly Supporters:
Brad S, tidal608, Wateir, Firstpick(FirstPick), xyrd, realivlis, DeepBlue416, omniprezenze, azunades, aljoshare, Felix, danksa, Litheos, theailer
One-time Donators:
SymphonySimper, FlorentL, Birbirl, MeaTLoTioN, elia, mearkat7, Darmock, KD, Yehoward, nyatta, Urbinholt, InTerFace, Marcos92, Rei (os.rei), 6thScythe, sayykii, HowlVenger, Massis, Somebody, 46620, skk9, Jeffrey, Hari, IgorJ, neriss, Sleroq, Insomnes, Stefano, AJ, Troy, JNC, Gery, Dafitt, Stefan Ernst, quake, lharlanx, pscschn, Bex Jonathan, AliAhmad02, KomariSpaghetti, wjyzxcv, Daniel, Zoltar358, Airor 987, CBeerta, lcassa, Guy incognito , nobody, m3hransh, Lunics, GeoffC, Tamas Tancos, mikelpint, Nathan Lepori, fxj9a, Volodymyr Shkvarok, Haltesh, omnicroissant, grmontpetit, jw, CheeseHunter117, Hunter Wesson, eternal, ddubs, noname, bones, pixel <3, eltwig, Jose, NN, Mikol, Pekka, Andi, Treeniks, derethil, dfseifert, munsman, Cespen, jlevesy, Bill Fucking Nye, Kumungus, crappy, Alin742, Nicholas Roth, sijink, alba4k, Barry, MK, Yasen
Full Changelog: v0.48.0...v0.48.1
v0.48.0
After a while, it is my pleasure to release 0.48.0 to everyone!
Hyprland is now 3 years old since March 16th, happy birthday! :)
Breaking changes:
opengl:force_introspectionhas been removedrender:allow_early_buffer_releasehas been removed- windowrule v1 syntax is gone.
windowrulenow behaves likewindowrulev2, deprecating thewindowrulev2keyword
New features:
- animations: add the gnomed animation style for windows
- core: add an ANR dialog
- desktop: add ability to target pinned windows in workspace rules (#9344)
- dispatchers: add cyclenext hist option (#9055)
- groupbar: add an option to adjust gap sizes (#9578)
- hyprctl: Add IPC support for Hyprsunset (#9315)
- hyprpm: add --hl-url for custom forks
- input: add flip_x and flip_y for touchpad (#9481)
- input: add follow_mouse_threshold (#9392)
- keybinds: Added
toggleswallowdispatcher (#5548) - master: add option to keep master window position (#9537)
- protocols: add version 2 of ext-idle-notify-v1 protocol (#8959)
- renderer: add simple color management (#9506)
- socket2: add activespecialv2 (#9530)
- syncobj: ensure we only add waiters on succesful checks (#9412)
- windowrules: add option to allow size persistence between app launches (#9422)
- xwayland: add INCR support for clipboard transfers (#9434)
Fixes:
- cmake: add CXX_STANDARD_REQUIRED flag to ensure c++ version must be c++26 (#9476)
- config/descriptions: add enable_anr_dialog
- config/hyprctl: fix keyword not updating autoreload
- config: fix a possible crash in the monitor config parser (#9460)
- core,hyprctl: clang, clang-tidy, typo fixes and dtors changes (#9233)
- core/Compositor.hpp: fix non-relative Texture import (#9703)
- core/compositor: Fix dropping cursor buffer data early (#9700)
- core: Add null activeWorkspace check in moveWorkspaceToMonitor (#9503)
- core: fix DS and VRR automation (#9334)
- core: add default initializers for ccompositor ptrs
- core: add mallopt to modify trim threshold
- datadevice: fix wrong param (#9370)
- deps: add libinotify-kqueue on BSDs after 8dd2cd4 (#9197)
- desktop: fix segfault when destroying a partially create layer surface (#9247)
- desktop: move popups to UPs and fix missing subsurface resource
- groupbar: fix groupbar missing when indicator_height is <= 0
- hyprctl/config: fixup config descriptions, fill out missing ones, provide more data
- input: Fix clicking through groupbar tabs (#9606)
- input: fix touch calibration matrix overriding
- input: fixup mouse check for flipping x / y (#9529)
- internal: Fix compiler warnings (#9646)
- internal: fix include paths (#9500)
- keybinds: fix some errors not returning a failure (#9416)
- pass/rect: fix bounding / opaque regions
- presentation: log a fixme when there is a feedback leak
- protocols: Fix IWaylandProtocol onDisplayDestroy m_pGlobal double-free (#9507)
- protocols: Fix blocked color management get_information (#9563)
- protocols: Fix cursor shape protocol valid shape check (#9547)
- protocols: fix wrong iface for xdg_dialog
- renderer: add an option to disable cm and auto-skip cm if not necessary
- renderer: fix cm_fs_passthrough (#9698)
- renderer: fix fade out on silent moves to special
- renderer: fix missing null checks to prevent crashes (#9332)
- renderer: fix window offset for dragged windows (#9629)
- renderer: various fixes towards improving gpu calls robustness (#9188)
- subsurface: fix invalid parent typo
- toplevelexport: fix transformed origin for shm buffers (#9343)
- window: fix missing surface null checks to prevent crashes (#9350)
- xwayland: fix a possible clipboard race condition (#9394)
Other:
- CI/Nix: remove deprecated magic-nix-cache-action
- CMake: install frag files
- CMake: install frag files (for real this time)
- Meson: include frags in globber
- Nix: change meson buildtype from debugoptimized to debug
- XWayland: restore the abstract socket, and make it optional (#9615)
- animation: don't immediately disconnect active vars during tick (#9272)
- animations: sync inactive/active border angles when using borderangle animations (#9401)
- anr: add a note for no pid dialogs
- anr: add xwayland support (#9456)
- ci: Fail on warnings (#9668)
- cmonitor: guard old workspace
- compositor: don't iterate over unmapped ls-es in vectorToLS
- compositor: guard null ws in updating fade
- config/defaultConfig.hpp: windowrulev2 -> windowrule (#9663)
- config: actually set initial beziers (#9400)
- config: default movefocus_cycles_fullscreen to false
- config: nuke windowrule v1 syntax
- config: set no_hw_cursors to auto by default and disable on tearing
- configWatcher: watch both symlinks and canonical paths (#9219)
- configmgr: properly free glob memory
- core/compositor: Correctly track SHM buffer damage (#9678)
- core: avoid .at() and use [] operator (#9347)
- core: begin using CFileDescriptor from hyprutils (#9122)
- core: cleanup some smart pointer usage
- core: cleanup window properties
- core: ignore internal move workspace calls if the workspace doesn't change (#9516)
- core: prevent crash when monitor list is empty (#9572)
- core: update decorations on lockgroups (#9573)
- descriptions: remove allow_early_buffer_release
- desktop: move popup and subsurface ctors to factories
- dmabuf: pop buffer on failure (#9620)
- env: move XDG_SESSION_TYPE to before backend init (#9390)
- example/hyprland.conf: windowrulev2 -> windowrule (#9662)
- groupbar: pass alpha to title tex render pass
- groupbar: remove 2 pixel gap above groupbar (#9664)
- groupbar: remove recursive window recalc (#9561)
- groupbar: various visual improvements
- groups: deactivate unfocused windows in groups (#9354)
- hyprctl/layers: print pid for layershell clients (#9468)
- hyprctl: Error handling improvements, minor cleanups (#9536)
- hyprctl: Extract IPC code to separate method (#9223)
- hyprctl: don't return empty str if there are no global shortcuts
- hyprpm: return 1 when plugins are outdated (#9694)
- ikeyboard: free xkbSymState in clearManuallyAllocd
- input: Provide a non-zero time for button release triggered during window unmap. (#9513)
- input: change window grab cursor to closed hand (#9196)
- internal: redirect exec'd app output to /dev/null (#9411)
- internal: remove unused variable (#9402)
- internal: removed Herobrine
- internal: use isNumber from hyprutils (#9467)
- keybinds): prevent crash when executing movewindoworgroup (#9551)
- managers: Use primary backend for cursor swapchain (#9645)
- monitor: Optimize direct scanout damage (#9653)
- monitor: avoid crash on expired special workspace monitor owner
- monitor: preferred mode now tries first 3 modes if preferred fails before erroring (#9246)
- monitor: report a scheduled frame when tearing on cursor move
- monitor: round refresh rates in sorting modes
- nix/module: toHyprconf -> toHyprlang (#9221)
- nix: remove wayland-protocols overlay and bump flake (#9613)
- opengl: simplify cm pipeline
- pass: add input region debug
- popup: improve ::at() behavior
- popup: stop refocusing at unmap
- popup: take xdg geometry into account in input calcs
- protocols: Ensure protocol dtors are called in ProtocolManager dtor (#9521)
- protocols: Support content-type-v1 proto (#9226)
- protocols: Support wp color management proto (#9444)
- protocols: implement hyprland-ctm-control rev 2 (#9267)
- refactor: clang-tidy in compositor (#9241)
- render: enforce framebuffer offloading and remove introspection toggle (#9217)
- renderer: calculate UV using both pixel and monitor dimensions (#9210)
- renderer: delete now redundant ifdefs (#9651)
- renderer: disable explicit if aquamarine output doesn't support it (#9396) (#9398)
- renderer: don't crash if cm fails to compile
- renderer: remove spammy log
- screencopy, render: Use explicit sync for screencopy (#9697)
- scripts/generateVersion.sh: convert to posix (#9433)
- scripts: don't overwrite generated version if we're not in a git repo
- seatmgr: avoid crash on null surfs
- session-lock: send locked when in unsafe state (#9399)
- splashes: update for 3ya
- subsurfaces: dont try to access popup surfaces when handling subsurface updates (#9421)
- syncobj: dont crash compositor on protocol errors (#9627)
- syncobj: refactor point timelines (#9689)
- syncobj: restore SHM buffer reset (#9675)
- syncobj: use eventfd instead of stalling fd checks (#9437)
- tablet: take
active_area_sizeinto account when sending tip event (#9325) - touch: reject swipe on locked sessions
- types: Upgrade buffer ref from WP to SP (#9677)
- window: move size reporting to animation begin callback (#9298)
- windowrules: store floating size on close instead of resize (#9569)
- windows: respect noinitialfocus with workspace changes (#9586)
- workspaces: update persistence on workspace rename (#9368)
- xcursor: move config check to sync gsettings (#9473)
- xwayland: configure on a configure request and cleanup geometry conversion (#9375)
- xwayland: correct pointer coordinate mismatch in X11 windows (#9259)
- xwayland: handle window coords correctly (#9238)
- xwayland: improve dnd and cleanup (#9405)
- xwayland: prevent invalid window configurations for X11 apps (#9253)
- xwayland: respect window size set by configure requests (#9190)
- xwayland: send synthetic configure events (#9193)
Special thanks
Special thanks to these people for donating to help the project continue:
Top Supporters:
Azelphur, arc-nix, ExBhal, SomeMediocreGamer, Robin B., yyyyyyyan, taigrr, Amaan Q., Xoores, Jas Singh, Theory_Lukas, JanRi3D, ari-cake, alukortti, RaymondLC92, MasterHowToLearn, johndoe42, Abdulaziz Al-Khater, AuHunter
New Monthly Supporters:
Brad S, tid...
v0.47.2
A minor update on top of 0.47.1 with some additional fixes and patches.
Fixes backported
- xwayland: handle window coords correctly (#9238)
- monitor: preferred mode now tries first 3 modes if it fails before erroring (#9246)
- xwayland: prevent invalid window configurations for X11 apps (#9253)
- desktop: fix segfault when destroying a partially created ls (#9247)
- configWatcher: watch both symlinks and canonical paths (#9219)
- xwayland: correct pointer coordinate mismatch in X11 windows (#9259)
- animation: don't immediately disconnect active vars during tick (#9272)
- desktop: move popup and subsurface ctors to factories
- popup: take xdg geometry into account in input calcs
- desktop: move popups to UPs and fix missing subsurface resource
Special Thanks
Special thanks as always to these chads for donating:
- Xoores
- johndoe42
- yyyyyyan
- taigrr
- SomeMediocreGamer
- Azelphur
- alukortti
- Theory_Lukas
- MasterHowToLearn
- ari-cake
- AuHunter
- Amaan Q
- Jas Singh
- matipan
- SViN Drawing
- NextDreamJob.LIVE
- Plyply
- atomicptr
- Skidam
- Avid
- FUTO
- XoZu
- System64
- Pascal Nitsche
- JustOptimize
- billybo_o
- denast
- gorfxx
- LCLP
- Ben
- Dainatello
- Diego
- Riesi
- Xellor
- Daniel
- Abdulaziz Al-Khater
- Cassio Fernando
- Efo
- Adrian Dobkowski
- Ricardo C
- JanRi3D
- andmars
- SiliconVillager
- Frank Huurman
- Francois
- Fan2Shrek
- anna//bool
Full Changelog: v0.47.1...v0.47.2