Releases: hyprwm/Hyprland
v0.53.1
This is a standard patch release backporting a few fixes from main.
Fixes backported
- desktopAnimationMgr: fix slide direction
- desktop/window: go back to the previously focused window in a group
- input: guard null view() when processing mouse down
- desktop/LS: avoid creating an invalid LS if no monitor could be found
- input/ti: avoid sending events to inactive TIs
- desktop/window: use workArea for idealBB
- desktop/window: read static rules before guessing initial size if possible
- core/xwaylandmgr: fix min/max clamp potentially crashing
- desktop/layerRuleApplicator: fix an epic c+p fail
Special thanks
Special thanks as always for these people / companies for supporting Hyprland:
Sponsors
Diamond
37Signals
Gold
Framework
Donators
Top Supporters:
miget.com, Hunter Wesson, --, ari-cake, TyrHeimdal, Joshua Weaver, alukortti, mukaro, Arkevius, 3RM, johndoe42, Insprill, Tonao Paneguini, Seishin, Anon2033, RaymondLC92, vmfunc, DHH, MadCatX, Jas Singh, John Shelburne, Xoores, lzieniew, Kay, Brandon Wang, MasterHowToLearn, taigrr, Semtex, alexmanman5, Theory_Lukas, ExBhal, Sierra Layla Vithica, Tom94, d, Illyan, soy_3l.beantser, Freya Elizabeth Goins, inittux111
New Monthly Supporters:
Tomek, Brian Donovan, Flanksy, Oversiate, Matt, Lungefisk, Leszek Kalwa, Chronoyevsky, metaru, AV, Daniel Segan, Fernando Sanchez, dharmapee, Will K, Jói, Adam Cogdell, Anthony McKeever, Crashdummy, dovahi, AndrewF, adsf, grhobe, Mr Maestro, lepokle, Dainatello, floer, Ben Kimble, hyprdick, Imp, popich, Mansoor Faqiri, dukeofcool199, ReallyNoteless, coldwater, Adrian, Anarcho, Zerby, Pracyan, evict, lexeko, Hauke, Jackrin, Tom Richards, searchsr555
One-time Donators:
Kaizza, cherny, tega90, Greg Chen, TF, Kenneth Breugelmans, Daniel Stuessy, taxiservice, Rockvald, yoboyfromtaiwan, Tekn, Martin, Jonathan Knapp, maribust, JWHall, raccoon, Zarquon, Wouter Bos, Malte, Areg, R. Pope, ko-fi-enjoyer-ubie, Sander, saphira_a, HackHQ, Simen Hagelid, Matthew Flower, SOSdude, Cristian, mike, b1ackswordsman_, gvdb, Nick, gwek, Haru, Tuomo Tr., diam0ndable, seagull, PyrosaurusRex, abat, Sebastian Przybyło, unknown, Joonas, Rasibobs, Dgolub, qtwork, revitalist, Al Johri, snakebones, eman, Flavius, Foibles, Tom, dabit, Jesus Humble Coder, goodroot, BeardlessPirate, jamerrq, Pedroelfire, pingu667, Kaiseki, Leon, tadz, Mine13zoom, JamesBond, MRP, Jon, Fernando Okuma, Nathan Drayson, Le_Kos, limenode, Samuel Tissot, IcsBoyX, Pol Ros Domènech, Cyber Spectrum / DJ Forge, Jan, Bastian Blokland, RobG, Itagane, checor, giorki, Richard, jgarzadi, Dunadan, Torwalt, hyperv01, Kirill Solodukhin, dentych, Steffen, Sort, Don Quixote, DirkPorsche, Eltharion, der_jean_marc, Apoorva, j, Otavio Augusto Gomes, clumsy, Jonas, Gersnifagus, dasd, Emil Erikmats, Jakov, Horst, Pastor Cmentarny, albrat, Borissimo, Jimbo, George, McMooMoo, rafazaya, CoolMcGrrr, HyperbolicParabaloid, Osamu Makiguchi, Gun155, noxc, demonic_chicken, Djoerzilla, Okazagi, moferrin, CareAgain, Mathias Karstädt, Holger Caribe, Stefan Schrage, maardal, yagaaa, Geenath, Steven, Roberto, DenverLacey, Foggerty, wtsmith, Alex, fraxineus, Simone, luccaugusto, endersdad, nomixer, Komor, Junkie, Hemendex7, nnutter, fujibearly, nachtschatten, hectorsq, ., EG, tsah, AhmedAlYousif, Karaviro, raydiatian, gnudoc, RussianMoroccan, Henrik, Cleptomania, Jason Kuan, beavis, jhoj, lmcanavals, Máté, boxplayer, ekholme, LeBew, mehiel, viscount-monty, sander, Ricebal, Vineeth Reddy Kanupuru, уσsίЬгσsί, Magnus, EmilioPeJu, Anersyum, Quambo, Outsiders17711, e, Anders Keis, Vladimir, Lyri, Zack L, Doug, Lolenz, valentine filatov, fakeclear_mei, Henry, Happyelkk, Jordi, Ben, lotaviods, BruhhnoV, Chad, neweziz, Huub, senorBeard, The Universality, Lyrael, Nioner, Wes, Nice job!, Damacon, Dvd-Znf, Jaeden T, Josh, Jojo, joeknit, zacoons, blychs, Eduardo Spanó, Anton Kesy, Tobias, Frisbee, Jaime Ledesma, Snepsts, pfrank, nimo , Bim Phomthong, Tim, eric280, Boothe, T.C., LeoFly, Jerkcircling, lucas, Gixbert, Nathan BARDAVID, mbald1, Diogo Ferreira, vitaliiorlov, Rai T., geko, JD, George S, reatret, Ar, joshuahardwick, GK, Lukaol, Senshyn, bobbackwardsbob, Crinfarr, jrgd, Shaun, UnMaykr, Christian DeCarle, EverybodySurf, mook, MandoArtstudios, yorishori, Holerra, Sean, derui, andybitz, StyxUT, Saulius, Awoo, Sshanky, Speedz, zssork, Mathias Vesterlund, Nicholas, Ricardo Dias, mo, Fulgoran, Joao Goncalves, Zer0's Void, Rasmus Lumholdt, Dave, eltharion, Terminal Dot Shop, Ger O'M, Robert, bokac, Szwagi, Plonky, xtiang7c0, luprzybyl, Seraphim of Boise, Kike, rafael araujo, Exanime, MRJN, Riley, dillius, ApproachingApathy, magballs, NeoDev, S, celestialSlice, jimdavid, imAsparky, highafdoge, Gene Brewskin, Jim, Toby, Darth, Gunnar, larsjr, Neocrius, Khue, Jerry, damndxyo, falsparsi, spintops, John, Liz, Chibi, Gizu, tricked, flaxfrax, Chrezzly, Pb, vzkz, Asaf, Pablo, dusmartijngames, geekologist, schmendiey, chucknorris, Jo, Nathan Lepori, unclefrank7, Limrun, Vadym, CoolJBad01, Mirko R, jahol, Frank Ploegman, Ryan Gorman, Pedro Pinto, Seyloria, Franky, Lukas, Michael, Keith Veleba, frebib, Leon K., kados, benben, Z, Anas Bashir, Jacob, Heuge, dev2and0m, kuroma, MightiD, Mike Kuenzi, aliiscripts, Claymaker, duane, rbgtk, Jonathan Montgomery, DanielPürner, Rowan-Paul, CareFully, FLX, Jeff Nunn, timugen_st, Mikol, Matsuji, sikor666, Evan, Ximizu, Timur Bogdanov, Luc, Purple Sorcerer, drook207, AkhiAC, misunderstood, Frank Besson, Xiuyuan Bi, ironick, fxhm, Lubix, Farex, Nerox, Cole, JavierRios, bombusbee, philipl, 0Tick, urssur, JasonWitty, ziga, Zev, Jymm6, TrashyFur, iamLIMPaf, Dafitt, Aidan, Joe Mama, rankomat, phga, l, Jea, None, wiesel78, shazbot, coglinks, drulex, DocE / DocEys, Klaus Strele, Waterbottle45, coquin, phiwan, MadByte, Galg, ChuckLorris, Victor, lejouson, quack, NEXNC, Justus, thousandlegs, Sigitas, RFS, oskhen, Noel, Kristof Bajan, pelda, talys, invalidusrname, fragile, guusw, av8avenger, R, Martin Fournier, Jack, Spr3eZ, revilo196, Toft, JerwuQu, Aymir, blocho, Allan, Nick M, Andrew, Monssaf, Denis S.
And all hyprperks members!
Full Changelog: v0.53.0...v0.53.1
v0.53.0
Ladies and gentlemen, we made it before 2026. A chonker!
Breaking Changes
- Windowrule syntax has been completely overhauled. Please check the wiki: https://wiki.hypr.land/Configuring/Window-Rules/
misc:on_focus_under_fullscreenreplacesmisc:new_window_takes_over_fullscreenandmaster:inherit_fullscreen
You can check out an automatic windowrule syntax converter (unofficial, in-browser) here thanks to @ItsOhen !
New features:
- config/keybinds: add a submap universal keybind flag (#12100)
- config: added locale config option (#12416)
- deco/groupbar: add groupbar blur (#12310)
- hyprctl: add nix flag (#12653)
- hyprpm: added plugin author (#12594)
- renderer: add quirks:prefer_hdr to fix HDR activation for some clients (#12436)
- renderer: add zoom with detached camera (#12548)
- tablet: added option to hide cursor (#12525)
Fixes:
- CMake: fix GIT_COMMIT_MESSAGE parsing
- CrashReporter.cpp: fix stderr conflict (#12440)
- Nix: fix GIT_* env vars
- Nix: fix glaze build for CI and devShell (#12616)
- cmake: fix XKBCOMMON variable typo (#12550)
- compositor: fix isPointOnReservedArea
- cursor: fix m_cursorSurfaceInfo not being updated while a cursor override is set (#12327)
- desktop/overridableVar: fix possible crash
- desktop/popup: fix invalid surface coord
- desktop/windowRules: fix disabling binary window rules with override (#12635)
- example/hyprland.desktop: fix path
- examples: fix example config (#12394)
- groupbar: fix rounding logic for edge cases (#12366)
- hyprctl: fix no_vrr prop ref (#12410)
- i18n: fix typos/unnatural spellings in french translation (#12443)
- input: fix pending perm keyboards being enabled
- internal: fix crash at startup on FreeBSD (#12298)
- internal: fix subtractWindow typo for POSYSTR (#12259)
- keybindmgr: fix focusCurrentOrLast
- keybinds: fix multikey binds breaking after scroll wheel events (#12638)
- keybinds: fix previous workspace remembering (#12399)
- layouts: fix maximize size
- master: fix placement with center_ignores_reserved (#12695)
- meson: fix version.h install location
- protocols/cm: fix CColorManagementSurface m_imageDescription init (#12734)
- protocols/compositor: fix null deref on unassigned surface image desc
- protocols/lock: fix missing output enter on surface (#12448)
- protocols/outputMgmt: fix wlr-randr by defering success event until monitor reloads (#12236)
- protocols/workspace: fix crash in initial group sending
- protocols/xdg-shell: fix crash on null parent in pin (#12694)
- renderer/cm: fix typo on color simage description op (#12551)
- renderer/ime: fix fcitx5 popup artifacts (#12263)
- renderer: add quirks:prefer_hdr to fix HDR activation for some clients (#12436)
- renderer: fix fractional scale artifacts (#12287)
- renderer: fix noscreenshare layerrule popups (#12260)
- renderer: fix render_unfocused
- renderer: fix uv sufrace calc with scales < 1 (#12481)
- rules/windowRuleApplicator: fix min/max size effects (#12491)
- screencopy: fix possible crash in renderMon()
- windowrules: fix group rule recalcs (#12403)
- windowrules: fix matching against xdgTag (#12393)
- windowrules: fix persistent_size not applying (#12441)
Other:
- CI/Nix: simplify cache config
- CI/release: populate git info (#12247)
- CI: drop meson build, simplify c-f check
- CI: drop no_pch and make default, drop noxwayland
- CI: run translator in pull_request_target for comment access
- CMake: prepopulate GIT vars from env
- CMakeLists.txt: improve libudis86 and librt detection (#12472)
- Desktop/history: Move history to desktop (#12676)
- Nix: re-enable uwsm desktop file
- animation: improve animations on multi refresh rate monitors (#12418)
- animation: migrate PHLANIMVAR from SP to UP (#12486)
- animationmgr: avoid possible uaf in handling anim updates
- anr: don't create for anr dialogs (#12601)
- buffers: revert state merging (#12461)
- ci: disable comments for members
- ci: run pr comment in target
- cm: allow force disabling WCG and HDR per monitor (#12733)
- cm: handle CM for SDR content with cm=hdr, cm_sdr_eotf=2 (#12127)
- cmake: fail if scripts/generateShaderIncludes.sh fails (#12588)
- cmake: only use system glaze package if above version 6.0.0 (#12559)
- cmake: track dependencies in pkgconfig file (#12543)
- compositor: Configurable behavior when window to be focused conflicts with fullscreen (#12033)
- compositor: dont try to focus unmapped window (#12629)
- compositor: early return on no monitor (#12637)
- compositor: return nullptr when cursor is outside of a maximized windows' box
- compositor: warn on start via a log about start-hyprland
- config: export version variable for versioned configs
- config: move config parsers to VarList2 (#12465)
- core/compositor: remove a monitor reset on cleanup (#12645)
- crashReporter: cleanup code (#12534)
- cursor: ensure cursor reset on changed window states (#12301)
- debug: move to hyprutils' logger (#12673)
- desktop/layer: store aboveFs property and use that
- desktop/overridableVar: improve performance
- desktop/popup: minor improvements
- desktop/rules: tag static rule being ignored (#12514)
- desktop/view: use aliveAndVisible for most things (#12631)
- desktop/window: improve fullscreen handling for grouped windows
- desktop/windowRule: force center and move rules to override each other (#12618)
- desktop/windowRule: return reset props from resetProps and recheck them (#12458)
- desktop: Update Exec command for UWSM Hyprland desktop entry (#12580)
- desktop: cleanup, unify desktop elements as views (#12563)
- desktop: rewrite reserved area handling + improve tests (#12383)
- dispatcher: include mirrors of monitor in dpms (#12552)
- dwindle: Revert rework split logic to be fully gap-aware (#12047)
- example/config: use hyprshutdown if available
- example/hyprland.desktop: install with full path in Exec
- flake.nix: update guiutils and override hw-s
- hyprctl: show contentType in activewindow (#12214)
- hyprctl: use new hyprpaper ipc format (#12537)
- hyprpm: check for abi strings in headersValid (#12504)
- hyprpm: remove -nn flag and make notification behaviour more consist… (#11272)
- i18n: Add Arabic translations for safemode (#12670)
- i18n: Add Dutch translations (#12326)
- i18n: Add Hindi translations (#12324)
- i18n: Add hungarian translations (#12346)
- i18n: Added Finnish translations (#12505)
- i18n: add Arabic (ar) translations (#12352)
- i18n: add Assamese translations (#12356)
- i18n: add Belarusian language (#12358)
- i18n: add Croatian translations (#12374)
- i18n: add Czech translations (#12428)
- i18n: add Danish translation (#12333)
- i18n: add French translations (#12330)
- i18n: add Indonesian translations (#12468)
- i18n: add Latvian translations (#12430)
- i18n: add Malayalam translations (#12345)
- i18n: add Nepali translations (#12451)
- i18n: add Norwegian Bokmål translations (#12354)
- i18n: add Persian translations (#12361)
- i18n: add Português (Portugal) translation (#12328)
- i18n: add Russian translations (#12335)
- i18n: add Serbian Translations (#12341)
- i18n: add Simplified Chinese translations (#12332)
- i18n: add Slovenian translation (#12369)
- i18n: add Spanish translations (#12334)
- i18n: add Tatar translations (#12538)
- i18n: add Turkish translations (#12331)
- i18n: add Ukrainian translation (#12370)
- i18n: add pt_BR translations (#12351)
- i18n: improve Spanish translations for clarity and consistency (#12378)
- i18n: init german translations (#12323)
- i18n: init localization for ANR, Permissions and Notifications (#12316)
- i18n: more natural Japanese translation (#12649)
- i18n: slight update to it_IT translations (#12372)
- input: cleanup sendMotionEventsToFocused()
- input: simplify mouseMoveUnified a tad
- internal/start: More careful signal handling (#12573)
- internal: put Linux-only header behind ifdef (#12300)
- internal: removed Herobrine
- keybinds: restore pointer warp on switch
- keybinds: simulate mouse movement after bringing active window to top (#12703)
- layout: include reserved area in float fit (#12289)
- meson: drop
- monitor: remove monitor from list on disconnect before unsafestate (#12544)
- opengl: default initialize m_capStatus (#12619)
- opengl: properly combine transforms in renderTexture
- plugin/hook: disallow multiple hooks per function (#12320)
- pointer: apply locked pointer workaround only on xwayland (#12402)
- presentation: only send sync output on presented (#12255)
- protocols/cursor-shape: impl version 2 (#12270)
- protocols/datadevice: avoid double leave
- protocols/layershell: do not raise protocol error if layer surface is not anchored (#12241)
- protocols/workspace: avoid crash on inert outputs
- render/cm: various updates, remove old protocols (#12693)
- renderer/cm: higher-quality tonemapping (#12204)
- renderer/cm: make needsHDRupdate per-monitor state (#12564)
- renderer: Allow DS for surfaces with inert subsurfaces (#12133)
- renderer: avoid crash on arrangeLayers for an empty mon
- renderer: remove unnecessary assert from renderRoundedShadow (#12540)
- renderer: stop looping over null texture surfaces (#12446)
- rule: nuke parseRelativeVector
- src/protocols/types/DMABuffer.cpp: <sys/ioctl.h> is required for ioctl(), not only linux (#12483)
- start: avoid crash in dtor after forceQuit
- start: init start-hyprland and safe mode (#12484)
- welcome: init welcome manager (#12409)
- window: automatically pin child windows (#12224)
- window: implement CWindow::getEnv() for BSDs (#12462)
- window: only damage floating on clamped size change (#12633)
- windowrules: bring back windo...
v0.52.2
Another patch release with a few fixes backported on top of 0.52.1.
Fixes Backported
- presentation: only send sync output on presented (#12255)
- renderer: fix noscreenshare layerrule popups (#12260)
- renderer/ime: fix fcitx5 popup artifacts (#12263)
- screencopy: fix possible crash in renderMon
- internal: put Linux-only header behind ifdef (#12300)
- internal: fix crash at startup on freebsd (#12298)
- cmake,meson: fix inclusion of gpg info in git commit info (#12302)
- cursor: ensure cursor reset on changed window states (#12301)
- plugin/hook: disallow multiple hooks per function (#12320)
- protocols/workspace: fix crash in initial group sending
- renderer: stop looping over null texture surfaces (#12446)
- protocols/workspace: avoid crash on inert outputs
- buffers: revert state merging (#12461)
- protocols/lock: fix missing output enter on surface (#12448)
- dmabuf: sys/ioctl is required for ioctl (#12483)
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.1...v0.52.2
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...