Összeraktam a Niri ablakkazelőről egy videót, ítt pedig írásban mutatom be. Jó Linuxozást! Niri egy modern, Wayland-alapú kompozitor és ablakkezelő, amely az ablakokat egy végtelen szélességű vízszintes munkaasztalra (workspace) rendezi. Az ablakok egymás mellett, oszlopokban helyezkednek el, és balra-jobbra görgetve érhető el a teljes felület. Új ablak nyitásakor nem zsugorítja a többi ablakot, így minden ablak a korábbi méretében marad. Ez a megközelítés eltér a hagyományos csempézett ablakkezelőktől (pl. Sway, Hyprland), és inkább a GNOME PaperWM vagy a KDE Karousel görgethető elrendezéséhez hasonlít. Niri tehát a “scrollozható csempézés” koncepciójával kínál alternatívát: ahelyett, hogy egy rácsba kényszerítené az összes ablakot, egy végtelen vízszintes sávban rendezve helyezi el őket.
Előnyök és jellemzők
Niri több szempontból is előnyös a hagyományos ablakkezelőkhöz képest:
-
Wayland-kompatibilis, modern alapok – Rust nyelven íródott, így kihasználja a Wayland előnyeit (pl. jobb energiahatékonyság, integritás). A Wayland-protokollban az ablakkezelő és a kijelzőszerver egyetlen folyamatként fut, ami egyszerűbbé és gyorsabbá teszi a rendszerműködést.
-
Scrollozható csempézés – mivel minden monitoron egy vízszintes “ablakcsík” húzódik végig, új ablakok megnyitásakor nem zsugorodnak automatikusan a többi ablak, így nagyítható vagy szabadon áthelyezhető a nézet. A munkaterületek dinamikusak, a GNOME-féle dynamic workspace koncepciót követik, mindig van egy üres workspace a sor végén.
-
Rugalmas elrendezés – konfigurálhatók a margók, keretek, gaps-ok, az ablakok méretei és arányai. Van beépített áttekintő nézet (overview), amely kicsinyített formában mutatja az összes workspace-et és ablakot. Animációk és gradiensek támogatottak, testre szabhatóak. Ez csak az újabb verziókban van, és a bal felő sarokba tolt egérrel aktválható.
-
Bemeneti eszközök kezelése – támogatja a többmonitoros környezetet (minden monitoron külön ablakcsíkkal), az eltérő DPI-értékű kijelzőket és az arányos (fractional) skálázást a pixelpontos UI-megjelenítés mellett. Működik NVIDIA videokártyákkal is, ha engedélyezett a kernel módváltás(modesetting). Támogatottak az érintőképernyők, touchpad-gesztusok, tabletek – utóbbiakat akár monitorhoz is rendelhetjük.
-
Teljesítmény – a fejlesztő tudatosan ügyel a hatékonyságra: Niri még régebbi netbook gépeken is futtatható. Az induló képernyő (lock/splash) és képernyővédők (swaylock, swayidle) integrációja, valamint alacsony memóriahasználat jellemzi.
-
Extra szolgáltatások – beépített képernyőkép-készítő felület (fokusszal akár terület vagy ablak kiválasztására) és támogatott a képernyő-megosztás (xdg-desktop-portal-on keresztül blokkolhatóak érzékeny ablakok). Lehetőség van ablakokat csoportba (fülbe) rendezni (tab-csoportok). A konfiguráció élőben újratölthető hiba nélkül: ha a mentett beállítás nem érvényes, Niri megtartja az előző működő állapotot és hibaüzenetet küld.
Telepítés különböző disztribúciókon
-
Arch Linux: A niri csomag elérhető az extra repóban. Egyszerű sudo pacman -S niri paranccsal telepíthető. Javasolt mellé telepíteni a szokásos segédprogramokat (például Alacritty terminált, fuzzel alkalmazásindítót, waybar alsó sávot, swaybg háttérképes háttérkezelőt, stb.).
-
Fedora: A fejlesztő által karbantartott COPR tárolóban található Niri. Például sudo dnf copr enable yalter/niri után sudo dnf install niri parancs futtatásával telepíthető. EPEL 10 disztribúcióra is van csomag, illetve a Fedora hivatalos repóiban a legújabb kiadás elérhető (lásd a COPR oldal “Active Releases” listáját).
-
NixOS/Nix: A Niri hivatalos dokumentációja említ egy community által karbantartott flake-et, mellyel könnyen beépíthető a Nix környezetbe.
-
Ubuntu/Debian és egyéb Linux: Nincs hivatalos csomag; a legegyszerűbb megoldás a forrásból építés. Szükséges a Rust eszközkészlet (rustup-on át beszerezhető), valamint fejlesztői könyvtárak – például Ubuntu 24.04 alatt a gcc clang libudev-dev libgbm-dev libxkbcommon-dev libegl1-mesa-dev libwayland-dev libinput-dev libdbus-1-dev libsystemd-dev libseat-dev libpipewire-0.3-dev libpango1.0-dev libdisplay-info-dev csomagokat kell telepíteni. Ezután a cargo build --release parancs elkészíti a futtatható binárist. (Fontos: NE használjuk a --all-features kapcsolót építéskor, mert egyes fejlesztői funkciók memóriaszivárgást okozhatnak). A felépített niri binárist és a szükséges .desktop fájlt, szolgáltatásokat telepítsük a rendszer megfelelő könyvtáraiba (pl. /usr/local/bin, /usr/local/share/wayland-sessions/ stb. – lásd a dokumentáció Manual Installation részét).
Alapvető konfiguráció
Niri konfigurációs fájlja a ~/.config/niri/config.kdl helyen található KDL formátumban. A program első indításakor létrejön egy alapértelmezett, kommentárokkal ellátott config.kdl, amely bemutatja a tipikus beállításokat. A konfiguráció fájl szekciókra van bontva (pl. input.keyboard, output, bindings, spawn-at-startup, environment stb.). A fájl mentése után a Niri automatikusan újratölti a beállításokat; érvénytelen konfiguráció esetén megőrzi az utolsó működőképes állapotot, és hibaüzenetet jelenít meg. Külső ellenőrzéshez futtatható a niri validate parancs.
-
Billentyűzetkiosztás (input.keyboard.xkb): Itt adhatjuk meg az elérhető billentyűzetkiosztást. Például ha az alapértelmezett US kiosztást akarjuk AltGr-es változattal, CapsLock helyett Ctrl-ként használva:
input { keyboard { xkb { layout "us" variant "altgr-intl" options "ctrl:nocaps" } } }
-
Kijelzők (output szekciók): Először érdemes a niri msg outputs paranccsal megnézni a csatlakoztatott monitorok nevét. Utána minden monitorra külön szakaszt írhatunk. Például egy HDMI-A-1 nevű monitort 2560×1440 felbontással 60 Hz-en, 1.2-es skálával, míg a beépített laptopképernyőt kikapcsolva:
output "HDMI-A-1" { mode "2560x1440@60.000" scale 1.2 } output "eDP-1" { off }
-
Gyorsbillentyűk és kötés (bindings): A binds szekcióban adhatjuk meg a Niri által használt billentyűkombinációkat. Fontos, hogy Niri nem tölt be beépített alapértelmezett kötéseket; ha valamit nem definiálunk a configban, az nem lesz aktív. Például a futtatók (spawn) beállításai:
binds { Mod+T { spawn "alacritty"; } // Terminál indítása Mod+D { spawn "fuzzel"; } // Alkalmazásindító Mod+Q { close; } // Fókuszált ablak bezárása }
Itt a Mod általában a Super (Win) billentyűt jelöli (ha Niri önállóan fut), vagy Alt-ot, ha más kompozitorban “ablakként” fut. Minden spawn parancsnál a program és annak argumentumai idézőjelbe kerülnek.
Van lehetőség alternatív navigációra is (például „WASD” jellegű). Például így:
binds { Mod+A { focus-column-left; } Mod+S { focus-window-or-workspace-down; } Mod+W { focus-window-or-workspace-up; } Mod+D { focus-column-right; } // ... további kötés átírások szükség szerint }
-
Automatikus indítás (spawn-at-startup): Itt adhatunk meg programokat, amiket a Niri indulásakor futtat. Tipikusan ide kerülhet az alsó sáv (például waybar), értesítési démon (mako), képernyővédő stb.:
spawn-at-startup "mako" spawn-at-startup "waybar" spawn-at-startup "swayidle" "-w" "timeout" "601" "niri msg action power-off-monitors" "timeout" "600" "swaylock -f" "before-sleep" "swaylock -f"
(A fenti példa egy komplex swayidle parancsot mutat be időzítéssel. Az indított folyamatok alapértelmezetten a Niri életciklusához kötődnek: amikor kilépünk Niriből, ezek leállnak. Ha valamit háttérfeladatként akarunk futtatni, adjuk hozzá a & paramétert.)
-
XWayland: A Niri önmagában nem indít el X11-t futtató alkalmazásokat; ehhez az xwayland-satellite csomagot ajánlják. Telepítés után a DISPLAY környezeti változót be kell állítani (például :0), és el kell indítani az xwayland-satellite-et. Konfigurációban például:
environment { DISPLAY ":0" } spawn-at-startup "xwayland-satellite"
A saját dokumentáció javaslata szerint a DISPLAY beállítással és az xwayland-satellite használatával a Steam/Proton játékok, JetBrains IDE-k, Discord és más X11-alapú alkalmazások is jól működnek Niri alatt.
Használati példák és billentyűparancsok
-
Alapvető parancsok: A Niri-ban alapértelmezetten nincs gyorslista, de a létrejött konfigurációban megtalálhatók a példa kötések. A dokumentáció szerint a legfontosabbak: Mod+T Alacritty terminált indít, Mod+D fuzzel alkalmazásindító futtatása, Mod+Q a fókuszált ablak bezárása. A Mod+Shift+E (vagy a megszokott Ctrl+Alt+Delete) Niri-ból való kilépést végzi.
-
Ablakok és oszlopok között mozgatás:
-
Mod+H és Mod+L (vagy balra/jobbra nyílbillentyű) a balra vagy jobbra lévő oszlop fókuszát aktiválja.
-
Mod+J és Mod+K (vagy le/fel nyíl) a lentebbi vagy felette lévő ablakot fókuszálja az adott oszlopban.
-
Ha Ctrl-al együtt használjuk (Mod+Ctrl+H/L stb.), akkor mozgatjuk az oszlopot vagy ablakot az adott irányba.
-
-
Workspace-ek (munkaterületek): Mod+U/Mod+I vagy oldalsó PageUp/PageDown vált a fenti vagy lenti munkaterületre, Ctrl-lal együtt pedig mozgatja a fókuszált oszlopot másik workspace-be.
-
Átméretezés és elrendezés: A Mod+R vált az oszlopok előre definiált szélessége között, Mod+Shift+R a magasságok között. A Mod+- és Mod+= (illetve Mod+Shift+- és Mod+Shift+=) felelnek az oszlop szélességének, illetve az ablak magasságának kisebb-nagyobb lépésekben történő módosításáért. A Mod+F full-screen módra kapcsolja a fókuszált ablakot (rányitja a teljes monitorra), és Mod+Shift+F ki is lép ebből.
-
Lebegő elrendezés: Beépített lebegő (floating) mód is van: Mod+V átkapcsolja a fókuszált ablakot lebegő/tiling között, Mod+Shift+V pedig váltó kapcsolóként a fókuszpontot váltja a lebegő és csempézett réteg között.
-
Képernyőkép-készítés: A PrtSc gomb megnyomásával kiválasztható területet fényképezhetünk le (egérrel jelöljük ki, majd Space-szel mentjük), Alt+PrtSc a fókuszált ablakot (vágólapra és a ~/Pictures/Screenshots/ könyvtárba), Ctrl+PrtSc pedig a teljes monitort rögzíti hasonlóan.
Kompatibilitás és támogatott funkciók
-
X11 alkalmazások: Ahogy korábban említettük, a Niri nem tartalmaz beépített XWayland-implementációt; helyette az xwayland-satellite eszközt javasolják. Ezzel a módszerrel a régi X11-es alkalmazások, játékok és egyéb eszközök (Steam/Proton, JetBrains IDE-k, Ghidra, Discord, Electron alapú appok stb.) is jól működnek. A DISPLAY környezeti változó beállításával (például DISPLAY=":0") és az xwayland-satellite futtatásával teljes X/TOP csatlakoztatást kapnak.
-
Wayland protokollok és portálok: Niri támogatja a fontosabb Wayland protokollokat – például layer-shell (alsó sávok, menük), gamma-control, screencopy (képernyőrögzítés) és másokat. Támogatott az xdg-desktop-portal, így például a képernyőmegosztás és a szeletelés (screencasting) is működik (GTK és GNOME portalok is telepíthetők).
-
Teljes funkcionalitás: A legtöbb natív Wayland alkalmazás hiba nélkül fut. A fejlesztők és felhasználók is igazolták, hogy modern grafikus könyvtárak (GTK, Qt Wayland backend) teljesen kompatibilisek. Mivel Niri aktívan fejlődik, folyamatosan bővül a protokollok és alkalmazások támogatottsága.
-
Bővítmények és eszköztárak: Mivel önmagában Niri csak a kompozitor/munkamenet (session) része, a teljes környezethez társíthatunk hozzá értesítési démonokat (pl. mako), menüindítókat (fuzzel), órát, hálózatkezelőt stb. (például waybar panel). Ezek a kiegészítő programok a spawn-at-startup szekción keresztül automatikusan elindulnak a Niri kezdésekor.
Fejlesztés és közösség
A Niri nyílt forráskódú projekt, GitHub-on érhető el (YaLTeR/niri). A fejlesztés aktív: az eszközt naprakész állapotban tartják, és stabilnak minősítik a napi használatra. Sok felhasználó futtatja mindennap, és támogatásra, kérdésekre a fejlesztők a Matrix chaten (IRC/Slack-szerű felületen) állnak rendelkezésre. A dokumentáció részletes: a GitHub Wiki-jén megtalálhatók a telepítési lépések, konfigurációs példaoldalak, és egy felépített konfigurációs kézikönyv (Configuration section) is. Sőt, az ArchWiki is összefoglalja a legfontosabb tudnivalókat magyar nyelven.
Mivel a Niri viszonylag új, a közösség mérete növekszik, de már ma is aktív fórumokon és közösségi médiában (reddit, YouTube-demók) találkozhatunk visszajelzésekkel és segédanyagokkal. A projekt folyamatosa kap új frissítéseket (például a 25.01 és 25.05 verziók újításairól bővebben a Phoronix cikkeiben olvashatunk), és tervek szerint tovább bővítik a funkciókat.
Gyakori fogalmak (szószedet)
-
Wayland – A grafikus kijelző rendszerek új generációja. A Wayland alatt az ablakkezelő és a kijelzőszerver egyetlen programként működik. A régebbi X11-hez képest egyszerűbb és modernebb megközelítést kínál.
-
Kompozitor (compositor) – Olyan program, amely a megjelenítést (ablakok kirajzolását) és az ablakok elrendezését végzi. A Wayland alatt a kompozitor maga kezeli az ablakok mozgatását és a képernyőre rajzolást (Niri például teljes egészében az).
-
Ablakkezelő (window manager) – Szoftver, ami az ablakok méretét és helyét kezeli. X11 alatt gyakran külön program volt az ablakok elhelyezésére; Wayland esetén a kompozitor azt is magába foglalja (ahogy Niri esetén is).
-
Csempézett ablakkezelő (tiling WM) – Olyan ablakkezelő, amely az ablakokat nem egymásra helyezi („lebegtetve”), hanem rácsba vagy oszlop-struktúrába rendezi, az ablakokat oszlopokba/falakba illesztve. Így egy időben mindig az ablakok közül több is látható, és a felhasználó billentyűparancsokkal vált közöttük.
-
Dinamikus munkaasztal (dynamic workspace) – A munkaasztalok (workspace-ek) száma változik aszerint, ahogy ablakokat használunk. Például mindig van egy „üres” workspaceünk, ahová új ablakot nyithatunk, és a nem használt munkaterületek felszabadulnak.
-
XWayland – Egy réteges megoldás, amely lehetővé teszi, hogy X11-es alkalmazások (pl. régi programok, játékok) Wayland környezetben fussanak. A Niri hivatalosan nem tartalmazza beépítve, de az xwayland-satellite segédprogrammal egyszerűen beállítható.
-
KDL – A konfigurációs fájl formátuma ( _K_eys_D_efinition _L_anguage) – Niri beállításai ilyen fájlban vannak, ember számára olvasható, szekciókkal és kulcs-érték párokkal szervezve.
Mindezek mellett a Niri dokumentációja és közössége segíti a kezdőket a beállításban és használatban. Az itt bemutatott példák és leírások alapján egy induló Linux-felhasználó is képes legyen Nirit telepíteni, konfigurálni és kipróbálni egy saját tesztkörnyezetben.
Források:
Github oldala: https://github.com/YaLTeR/niri
A beállításhoz: https://github.com/YaLTeR/niri/wiki/Configuration:-Introduction
Arch wiki: https://wiki.archlinux.org/title/Niri
Spanyol tutorial videó: https://www.youtube.com/watch?v=f1ZB_4pQR2g
(fordítóval teljesen jó)
Saját bemutató videóm:
https://youtu.be/Pq5YjnjQLso