I3wm include – új megoldás a 4.2 verzióban!

i3wm és i3gaps
I3 ablakkezelő

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