A tőkéletes I3Wm rendszer

i3wm
I3 ablakkezelő

A mostani sorozatban egy tökéletes I3Wm rendszer építésébe kezdünk. Itt is igaz: a tökéletes az, ami neked megfelel, így amit leírok az pontosan az én igényeimnek felel meg, ha Te másképp oldod meg, az legyen a Te igényeidnek megfelelő. Soha ne másolj egy rendszert, alakíts ki ami nálad a lehető legjobb.
A tökéletes Linux rendszerhez kell szerintem egy kellemesen használható ablakkezelő is. Én az I3Wm gaps verzióját választottam, mert ezt ismerem, ezt megszerettem és teljesen kielégíti az igényeimet. Bár elég sok hasonlót kipróbáltam, ez adja meg számomra azt az egyensúlyt, amit a használhatóság, tudás és a konfigurálás nehézsége ad. Ami sokkal többet tud (pld. xmonad) már nem ilyen egyszerűen konfigurálható, és sok van olyan, ami egyszerűbb, de sokkal kevesebbet tud.
Ami nem ismeri az I3Wm rendszert a honlapomon a keresőbe beírva, vagy a videó csatornámon rákeresve elég jól megismerheti.
Amit mindenképp tudni kell: én a tökéletes Linux rendszer fellépését egy Debian Stable alapra építkező MX Linux alatt kezdtem el. Így a leírás, a munkafolyamat ehhez lesz igazítva. Bár minden Linux más, de a legtöbb lépés megegyezik. Ennek ellenére mindent gondolj át, mert esetleg nálad picit másképp lehetnek a lépesek. Saját tapasztalat a kicsi eltérések megléte, mert ahogy tudjátok Arch alapról Debian alapra kellett váltani. Így most, amikor ezt a “tökéletes” I3Wm rendszer építését kezdtem szembesültem ezekkel. Bosszantó, de ez van.

A “tökéletes” I3Wm rendszer építésének lépései

  • Telepítés
  • Hardver beállítás
  • I3Wm tökéletes beállítása
  • I3Wm kiegészítők
  • Kinézet beállítása
  • Programok indítása
  • Programok gyorsbillentyűi
  • Panel

Bár nagyon szép és logikusnak tűnik a felsorolás, de párszor ide-oda kell ugrálni a megoldásokban, mert az élet nem ilyen szép.
Ami nagyon fontos és itt elengedhetetlen: legyen egy olyan szövegszerkesztőd, amivel a konfigurációs fájlokat gyorsan, hatékonyan tudod szerkeszteni. Én a NeoVim mellett tettem le a voksot. A gyors és hatékony munka érdekében ezt ki kell egészíteni egy általad kedvelt fájlkezelővel. Én (nem nagy meglepetés) a ranger mellett döntöttem. Mindkettő terminálos, gyors és ami fontosabb: kedvelem őket. Bármi jó, amivel gyorsan tudsz dolgozni, és egy háromoldalnyi szöveget meg tudsz írni.

Első lépés

Az egyik legfontosabb lépést már most tegyük meg. Érdemes felmenni az I3Wm oldalra és a leírást elolvasni. Hosszú. Megtérül, mert ha végignézted egyszer, akkor már lesznek sejtéseid a lehetőségekről. Én a harmadát sem használom, de aki valóban custom rendszert akar, ami I3Wm, tökéletes működésű, akkor ezekről tudnia kell. Majdnem minden jól szabályozható és nincs értelme csak azért nem tudni ezekről, mert egyszer lusták voltunk elolvasni a lehetőségeket. Ha már ezen túl vagyunk a feladatok nagy részét el fogjuk tudni látni.

A második olyan oldal, amit ismerni kell a I3Wm gaps oldala. Itt sokkal kevesebb beállítási lehetőség lesz. Ezek a réseket szabályozzák, így egyszer kell beállítani, majd örökre jó lesz.
Ami fontos, és tapasztalat: ha olyan konfigurációt akarsz a sima I3Wm-be illeszteni, ami a gaps-hoz készült akkor sem lesz gond. Szól induláskor az I3Wm, hogy vannak “hibás” sorok. Ennek ellenére elindul, és ki lehet kommentelni a nem kívánt sorokat. Kicsit ijesztő tud lenni, amikor az első ilyen konfigurációs fájllal kapcsolatos hibát megkapjuk, de egy idő után már rutinosan kezeljük.

Miután a fenti két lapot könyvjelzőztük, más neki is állhatunk a telepítésnek.

I3Wm telepítése

A telepítése egyszerű, a disztribúciódnak megfelelően telepítsd. A Debian Stable ág alatt a tárolókból kell telepíteni. Igen! nem ok nélkül írtam, hogy a tárolókból… Mielőtt nekiálltam volna telepíteni keresgéltem az interneten, hogy miképp is megy ez Debian alatt. Pár elég összetett munkafolyamatot találtam, ami leírja, hogy forrásból, vagy egy github oldalon lévő szkripttel, de előbb a sima I3Wm-et kell… Kicsit el is ment az egésztől a kedvem, mert ideális esetben a tökéletes I3Wm rendszer nem egy olyan, mait úgy kell felbarkácsolni a gépre. Alapesetben kerüljük az ablakkezelők, vagy komolyabb rendszer részek nem a hivatalos tárolókból való telepítését. Ami nincs a tárolókban, az gondokat is okozhat.
Ezután esett le a tantusz: miért is ne lenne benne? Meg is néztem:

i3/stable 4.19.1-1 amd64 metapackage (i3 window manager, screen locker, menu, statusbar)
i3-gaps/scar 4.20.1-1 amd64 metapackage (i3-gaps window manager, screen locker, menu, statusbar)
i3-gaps-wm/scar,now 4.20.1-1 amd64 [telepítve] improved dynamic tiling window manager
i3-wm/stable 4.19.1-1 amd64 improved dynamic tiling window manager
i3blocks/stable 1.4-4 amd64 highly flexible status line for the i3 window manager
i3lock/stable 2.13-1+b1 amd64 improved screen locker
i3lock-fancy/stable 0.0~git20160228.0.0fcb933-3 amd64 i3lock custom wrapper script
i3pystatus/stable,stable 3.35+git20191126.5a8eaf4-2 all Large collection of status modules compatible with
i3bar i3status/stable,now 2.13-3 amd64 Generates a status line for dzen2, xmobar or i3bar

Azaz ott van, igaz a stable ágban a “régebbi” 4.19 verzió, de a 4.20-as is elérhető. Az első kérdés, hogy melyiket akarjuk? Mindegy. Ha nálad csak a 4.19 van, az is jó. Minimális eltérés van, bár én örültem, amikor a 4.20-asba pár újdonság belekerült, de nem lesz eget rengető hátrányod, ha csak a 4.19 I3Wm lesz a tökéletes rendszer. Én a magasabb verziót választottam.
A következő döntés a metapackage, vagy a sima verzió. Itt a metapackage egy komplett összeállítást, plusz csomagokat rak fel. A screen locker, menu, statusbar kell neked? Akkor ezt válaszd, ha nem, vagy csak egy-egy a felsoroltból, akkor a sima csomagot. Nekem egyik sem kell, nem azt a statusbar-t használom, menu sem kell így marad a sima “meztelen” i3-gaps telepítése.
Nagyonnagy a valószínűsége, hogy telepítéskor semmi hibába nem fog ütközni, pillanatok alatt felmegy. Elvileg (MX alatt, Arch Linux alatt) automatikusan bekerül az indítható asztali környezetek, ablakkezelők közé.
Ha más disztribúciót használsz a nevek eltérhetnek. Már miért is lenne egységes névvel az egyforma csomag? A rendszer építésekor több alkalommal is belefutottam, hogy a megszokott, az Arch Linux alatt megszokott elnevezésektől eltér egy-egy csomag neve.
Kijelentkezel, majd a bejelentkezési oldalon kiválasztod az I3-at és bejelentkezel.
Az i3Wm tökéletes rendszer indulásánál egy üres monitort kapsz, esetleg a bar indul és egy kis panelkában kiválaszthatod a módosító billentyűt. Elkészíti az alap konfigurációt, ami nagyon, de nagyon szerény. Ennek ellenére nem okoz gondot, hiszen ez is használható.

Első hiba a telepítés után

A gyorsabb elkészülés okán az internetről, innét-onnét összeszedett konfigurációk rámásolása az új rendszerünkre. Ez nem lesz tökéletes I3Wm rendszer. A gondolat jó, csak nem így kell eljárni. Addig mindenképp követendő a gondolat, hogy szedjünk össze pár (Axyl, Magyarch stb.) érdekes és haladó módon összerakott I3Wm konfigurációt. De ne másoljuk egy az egyben rá a rendszerre. Így nem custom lesz, hanem más által összerakott, plusz nem feltétlen fog működni. Lényegesen nagyobb munka egy hibakeresés, és másénak a személyre szabása, mint egy saját összeállítása. Minden disztribúció beállítása tükrözi a készítőjének a személyiségét, ízlését, igényét. Ami nem feltétlen olyan, mint az enyém. A Magyarch paneljében nagyon sok munka van, és jól is néz ki, de nekem az ottani modulok (blokkok) nem kellenek. A kijelzések egy része egyáltalán nem kell, ami meg kell, azt conky-ba raktam. Az asztal nevek is szépen meg vannak csinálva, nagyon jól néz ki, de nekem az 1, 2, 3, elnevezés sokkal jobban bejön. Az egyénileg megadott program elhelyezések (melyik asztalra, mekkora ablak stb.) gyakorlatilag mindenképp átírásra kerülnek szerintem mindenkinél, mert ez valóban egyéni, a gyorsbillentyűk is, hiszen az saját ergonómiára, megszokásra lesz állítva. Így mintának, ötletadónak nagyon hasznos, de most nulláról építjük fel a fájlt.

Indulás utáni első lépés

Win + Enter majd Win + Enter Ez nyit két panelban egymás mellett terminálokat. Már kész is vagyunk. Ha van terminál, van minden. Megkeressük a konfigurációs fájl (~/.config/i3/config) és megnyitjuk. Belenézünk, és látni fogjuk, hogy egy sima, egyszerű szöveg, ami – bár első pillanatban nem úgy tűnik – nagyon egyszerű szintaxissal érkezik. Jellemzően egy sor, egy bejegyzést takar, és a sor elején adják meg az I3Wm-re jellemző parancsokat. Amit érdemes megjegyezni a kettőskereszt (#) a komment jel, azokat a sorokat nem veszi figyelembe a rendszer.
Ezután papír és ceruza segítségével felírjuk a gyorsbillentyűket. Aki már használt I3Wm-et (és alapkiosztással) neki ezt nem kell megtenni, de aki még nem neki kifejezetten ajánlott.
Amit érdemes tudni és sokat használjuk az alapfelépítés:

# start terminal
bindsym $mod+Return exec i3-sensible-terminal

Minden bejegyzés előtt normálisan megkapjuk a magyarázatot, így nem okoz senkinek sem gondot az értelmezés.
a bindsymazt magyarázza el nekünk, hogy az azt követő kombináció leütése után a végére írt parancs fut le. A fenti sort már használtuk, ezzel indultak a terminálok.

  • $mod+nyisson terminált
  • $mod+ddmenu megnyitása (szöveg alapú programindító)
  • $mod+shift+ekilépés az i3-ból
  • $mod+shift+rIndítsa újra az i3-at
  • $mod+shift+ctöltse be újra a konfigurációs fájlt
  • $mod+shift+qablak bezárása
  • $mod+wfüles elrendezés
  • $mod+efüggőleges és vízszintes elrendezés (váltás)
  • $mod+shalmozott elrendezés
  • $mod+fteljes képernyő

Ezek az alapvetően fontos eszközök, mindegyiket nézd meg, mert sokkal több alapbeállítás van. A $mod azt jelenti, amit az elején beállítottál, vagy az ALT vagy a Supert, azaz WIN gomb.
Eddig különösebb teendőnk nem volt, ha működik a rendszer, akkor léphetünk tovább.

A tökéletes hardver beállítás az I3Wm rendszerhez

Ha azt a metódust követted, amit én, akkor nincs különösebb teendőd. Már az XFCE alatt beállítottunk mindent.
Nálam egy érdekes helyzet állt elő: a monitor felbontás nem lett jó, én alapesetben kisebb felbontásban használom őket, mint a maximum. Ezt az egy értéket nem vette át az I3Wm. Önmagában a monitorok beállítása nem egy agysebészet, de előtte pár fontos döntést meg kell hozni. A monitor beállítása (és egyéb dolgok) hova kerüljenek? Akinek idegen az ArandR használata, ezt a kis kiegészítő videót nézze meg.

Több megoldás van, amit érdemes átgondolni

Egy ilyen parancs, vagy induló program kerülhet az I3Wm saját konfigurációs állományába is. Az I3Wm tökéletesen alkalmas a rendszer programok indítására is, többféle megoldással. A megoldás előnye az egyszerűség, illetve egy fájlba kerül bele az összes olyan beállítás, ami az I3Wm-hez tartozik.
A másik lehetőség ezeket egy külön fájlban tárolni, majd ezt a szkriptet elindítani, amikor az I3Wm indul. Itt további döntés is lesz: hova kerüljön a fájl, illetve ezt az autostart fájlt használjuk esetleg más ablakkezelőkhöz is.
Én egy egyszerű megoldást használok, aminél mindenképp el tudom szeparálni az induló ablakkezelőkhöz rendelt indítandó rendszerprogramokat. Külön autostart fájlokat használok mindegyikhez. A kérdés hamar eldőlt, hiszen az XFCE alatt ezt már megoldottam, így azzal közös megoldások nem jöhetnek szóba, nem is nagyon lenne értelme túlzottan összegányolni az XFCE alapból jól működő rendszer-konfigurációit.
A hova kerüljenek ezek a fájlok már komolyabb gondolatok szült, mert ezzel együtt azt is eldöntöttem, hogy az I3Wm rendszerhez tartozó szkriptek és egyebeket hogyan kezelem. Ezek csak az I3Wm alatt használatosak, így az I3 könyvtárba hoztam létre nekik egy könyvtárat. Bármilyen neve lehet, és nem kerül bele a PATH-ba. Ez adja feladatot: ha egy ilyen szkriptre, programra hivatkozom a konfiguráció közben a teljes elérési utat meg kell adni.

Már most adjuk meg a I3Wm konfigurációban az automatikusan induló programokat felsoroló szkript nevét. Így a későbbiekben nem lesz gondunk ezzel.

A I3Wm konfigutációját megnyitjuk és a legvégére beillesztünk egy sort:

exec --no-startup-id $HOME/.config/i3/script/autostart

Illetve elé berakjuk a kommentet, ami bármi lehet, csak az a kitétel: tudd, hogy mit is tesz az adott szakasz.

Az értelmezéséről az I3Wm leírásában a 4.19. Automatically starting applications on i3 startup szakaszban olvashatsz. Mindig gondold át, hogy a

exec [–no-startup-id]
exec_always [–no-startup-id]

közt mi a különbség és az adott indításhoz mi kell majd. Az exec beállítja, hogy az I3 mely parancsokat hajtsa végre a kezdeti indításkor. Az exec parancsok nem futnak le az I3 újraindításakor, ha az I3 újraindításakor is futtatni kell egy parancsot, akkor használjuk az exec_always kulcsszót. Itt is lehetséges több megoldás, de én azt gondoltam, hogy a az autostartba csak olyanok kerülnek, amiket nem kell egy újraindításkor lefuttatnia. Itt nem arról az újraindításról beszélünk, amit a kilépés, újra bejelentkezéskor használunk, hanem az I3Wm konfigurációjának változtatásakor sokszor megismételt újraindításról. Ezt érdemes nagyon átgondolni, mert sok esetben hasznos lehet. Ilyen lehet egy panel, conky indításnál eldönteni, hogy azt újra kell-e indítani, ha újraolvastatjuk az I3Wm konfigurációját.

Illetve mit is jelent a [–no-startup-id]? Vannak olyan programok amik visszajelzik, ha rendben indulnak, és vannak amik nem. Ha rendszerinduláskor hosszabb ideig a kurzor forgó kerék, akkor olyan indult el, ami nem jelezte vissza, így a rendszer várakozik egy ideig és forgatja a kurzor kereket. Ami nem okoz gondot, de nem szép. Az ilyennek nincs helye a tökéletes I3Wm rendszerben, így minden esetben megkeressük az okát, majd az adott programot a [–no-startup-id] kapcsolóval indítjuk. Így nem vár visszajelzést a rendszer.

A munkakönyvtár és az autostart fájl létrehozása után jöhet az arandr program használata.

Monitor beállítása? felbontás és elhelyezkedés

Az MX linux alatt, Xfce felületen (illetve pontosabban bármely Xfce-n) a kijelzők beállítására van kis program. Itt is van kényelmes megoldás, mert lehet telepíteni ArandR-t, ami egy jó grafikus beállítási lehetőség. Használata egyszerű, nem okoz senkinek sem gondot. Ha komoly gondot okozna a használata, akkor nézd meg ezt a segéd videót.

Ha nincs fenn a Linux disztribúciódban, tedd fel a nálad szokásos módon. A beállításokat scriptbe is lehet menteni, azaz több beállítást is létrehozhatunk, majd azt a szkriptet – amibe mentettük – lefuttatva váltani is lehet. Egy ilyen szkriptet fogunk létrehozni és belenézni. Az elérési út (alapesetben): ~/.screenlayout/ lesz. Egy hibája van ennek a megoldásnak: induláskor nem azzal indul a rendszer, amivel akarom, hanem megint be kellene állítani, vagy az adott scriptet futtatni. Természetesen van arra is lehetőség, hogy az autostart-ba beírjuk a parancsokat és a paramétereket. Az ArandR az xrandr előtétprogramja, azaz „csak” azt paraméterezi fel és menti el a paramétereket a szkriptekbe. Így már viszonylag egyszerű dolgunk van. Ha megfelel a beállítás, amit a ArandR létrehozott, akkor simán be kell másolni az autostart-ba, és ki és belépni az I3Wm-be.

Ha ezzel kész vagyunk, kilépünk, visszalépünk és kiderül, hogy jól dolgoztunk. A felbontás már jó.

Innét folyatjuk legközelebb.