Nemrég megjelent a 4.20-as verzió az I3wm ablakkezelőből. Pár újítás és jelentős számú hibajavítást kaptunk. Én szubjektíven egy újdonságot emelnék ki, ami nekem nagyon megtetszett. Bár nem a felülettel kapcsolatos, nem új funkciót kaptunk, de egy kellemes – és régen várt – megoldás. A konfigurációs lehetőségeket érinti. Ez az include lehetőség a konfigurációban.
Mit is jelent az I3wm include lehetősége?
Jelenleg, illetve a 4.20-as I3wm előtt a konfigurációt egy fájlban tehettük meg, ami jellemzően a ~/.config/i3/config fájlt használtuk. Ez évekig nagyon jól működött és nem is jelent problémát, ha ezen a bevett szokáson nem változtatsz. Ha nem tetszik az újítás, akkor maradhat minden a régiben. Az újítás lényege, hogy most ezt az egy fájlt feloszthatjuk több különálló fájlra. Ezeket az I3wm kezelni tudja, a benne lévő beállításokat összesíti.
Miért is jó ez nekem?
Az I3wm beállítása már elég hosszú fájlt adott, folyamatosan kerültek bele a sorok. Bár igyekszik az ember ezeket valami rendezett formában, csoportosítva megtenni, de a navigálás és a keresés már nem kényelmes. Ha használjuk az include megoldást a témakörök szerint létrehozott fájlok már könnyebben kezelhetők lesznek. Csak az adott témakört érintő fájlt nyitom meg, írom bele a megfelelő kiegészítést.
A dolog nem idegen, hiszen a Vim, Nvim konfigurációt is felbontottam több fájlra, illetve a bash, zsh konfigurációból is kiszerveztük az alias-okat.
Hogyan kezdjünk neki?
Első lépésként érdemes kiemelni a fő konfigurációs fájlból stabilan tartott, soha nem állogatott részeket. Ezek lehetnek az asztalok nyitására, illetve az asztalokra való ugrásra stb. irányuló billentyű parancsok:
- bindsym $mod+1 workspace number $ws1
- bindsym $mod+Shift+1 move container to workspace number $ws1
- workspace „1” output DVI-D-0
- és az összes, blokkonként 10 sor…
Ez általában stabilan marad, nem változtattam ezeken nagyon rég semmit. De mivel ezek a beállító fájl elején vannak, mindig tovább kellett lapoznom, ha valamit kerestem a fájlban.
Hasonlóképp a színek beállítása is stabil, az első állítgatások után már nem napi szinten variálja át az ember a kereteket stb.
A másik ilyen lehetséges kiemelendő lehet a gyorsbillentyűk megadása. Nekem viszonylag sok gyorsbillentyűm van, így ezeket is érdemes lehet kiemelni egy külön fájlba. Ilyenkor már csak ezt az egy fájlt kell megnyitni, ha a billentyűket át akarom írni.
Amit nem használok, de aki igen, ő átgondolhatja, hogy a panel beállításait is kiteszi egy külön állományba.
Az első lépés mindenképp a logikus átgondolás legyen, mert jobb egyszer átgondolva megcsinálni, mint többször átírni a dolgokat. Pont azt veszti el ezzel az ember, ami miatt ez nagyon jó, a gyors átláthatóságot.
A technikai kivitelezés
Első lépés a config fájlról egy biztonsági mentést készíteni.
Majd létrehozni a kívánt fájlokat. Praktikusság miatt érdemes a i3wm saját könyvtárában, és egy
standardizált kiterjesztéssel.
include ~/.config/i3/keys.conf
A meglévő config fájlban meg kell adni melyik fájlokat kellene beolvasni induláskor. Ezeknek a nevei legyenek beszélő nevek, ne kelljen keresgélni mi mibe került át. Gondolom a formátum egyértelmű, a példa magért beszél.
Majd a megfelelő fájlokba kimásoljuk az oda szánt részeket, az eredeti config fájlba pedig kikommenteljük a már áthelyezett sorokat.
Gyakorlatilag nem teszünk mást csak a régi, elég hosszút feldaraboljuk a könnyebb kezelhetőség miatt, majd hivatkozunk rá. Majd amikor az indítás lefut, akkor az I3wm beolvassa a config fájl, amiben látja, hogy még a meghatározott fájlokat is be kell olvasnia.
Ha mindegyiknek a kiterjesztése conf, akkor nem kell minden egyes fájlra egyesével hivatkozni, jó lehet a
include ~/.config/i3/config.d/*.conf
sor is. De ennek van egy komoly hátulütője is. Az össze .conf fájlt megpróbálja beolvasni, így ha ebben a könyvtárban mentési fájl ezzel a kiterjesztéssel nem lehet! Ezt azért érdemes hangsúlyozni, mert sokan használjuk a megnyitást követő azonnali mentést egy ilyen formátumba: fájlnév_dátum.kiterjesztés.
Majd újra leellenőrzi az ember a munkáját, mindent ment és egy újraindítás után – jó esetben semmit nem veszünk észre – minden működik.
Mikor nem jó ez az I3wm alatt?
Ha régebbi a verziód, mint a 4.20. Ezt a i3 --moreversion
parancs kiírja.
Problémákat okozhat, ha változókat szeretnél használni, amiket az adott fájlban nem definiáltál.
Ez gyakorlatilag nem olyan bonyolult, mint ahogy hangzik. Ha nem akarsz gondot, és a legkevesebb hibalehetőséget szeretnéd, akkor a fő config fájlban határozod meg őket. Ezek jellemzően a set kezdetű sorok.
Gond lehet az is, amikor egy-egy fájl nem olvasható, vagy nincs is meg, mint ahogy én elírtam a nevét, az I3wm meg leresni próbálta… Ilyenkor (legalábbis a leírás szerint) a I3wm hibát ad, és tovább folytatja a fő config fájl feldolgozását. Ami jó, mert kisebb, nem létfontosságú beállítások nélkül el is indul a rendszer, nem fagy le csak azért mert valami fájl nevét rosszul írtál be.
Problémás lehet – bár ez az egy fájlban tárolt beállításnál is az – ha egy billentyűkombinációhoz két funkciót társítasz. Én minden ilyen billentyűkötést egy fájlba rakom, így hamar kiderül a hiba, ha rákeresek.
Az I3wm gaps?
Abba is ott lesz ez, csak most (2021.10.20) még nem frissült az új verzióra.
Addig ha ki akarod próbálni, akkor vissza kell térni a I3wm-re, ami alapvetően nem gond, hiszen a két csomag ütközik, a csomagkezelőd az egyiket leszedi, majd a másikat rakja fel. A config fájlban ki kell kommentelni azokat a sorokat, melyeknél a gap-eket állítod és akkor máris a sima, eredeti I3wm-nek teljesen megfelelő lesz a beállítás. Ha nem kommenteled ki a gaps sorokat, akkor kidob egy vörös csíkot, hogy gond van a konfigurációval, de a megszokott mód elindul