Picom alapok

Picom gyorstalpaló. Bár sokan használjuk ezt a kompozítáló eszközt, de a beállításokat csak kevesen kezdik el módosítani. Pedig érdemes lehet körbenézni a beállítások közt, és amit kell testreszabni. A beállítások alapesetben egyszerűek, de kell hozzá egy kis gyakorlat is, mert igen sok beállítási lehetőség közt gyorsan eltévedhetünk. A beállítási fájlt a /etc/xdg/picom.conf.example fájlra alapul, amit érdemes a saját könyvtáradba bemásolni, majd a picom indításakor explicit megadni.

Én ‘/home/laci/.config/picom.conf’ megoldást kedvelem, de sok disztribúcióban, illetve több picom leírásban is a ~/picom.conf stb. az elvárás. Mivel én megadom a használandó konfigurációs fájlt, így oda tehetem, ahova akarom. Jobban szeretem a saját gépemen a ~/.config alá berakni minden mozgatható beállítási fájlt, így kissé átláthatóbb a home könyvtár.

Mi is a picom, kompozítáló mit is tesz?

A picom a compton utódja, amit már nem fejlesztenek. Akit érdekel nézzen utána a név változtatásnak, vagy az okoknak. Nekünk alapesetben elég, hogy a compton-t váltja, és sok disztribúció már átállt erre, és így a compton csak egy link a compton programra.

A compozit program nem tesz mást csak az árnyékokat, átlátszóságot, és egyéb szépészeti megoldásokat adja az ablakkezelőhöz. Enélkül meg lehet lenni – pár program natívan adhat ilyen megoldásokat – de sokkal elegánsabb, ha azt egy erre rendelt, fejlesztett megoldással oldjuk meg. Ha egyáltalán nem kell neked ilyen, akkor is jól fog működni a Linux rendszered, csak egypár ablak háttere lesz fekete, szürke és nem tudod az átlátszóságot szabályozni. Azaz lehet enélkül is dolgozni, csak akkor pár kényelmi, vagy szépészeti megoldás nem lesz elérhető.

Picom, de melyik?

Hm… újabb példa a Linux erejére, vagy annak a hátrányára: nem egy, hanem több compton utód lett, mindegyik kicsit többet, vagy kevesebbet tud, mint az alap verzió. Így ha valami nem működik, vagy nincs a te beállításaid közt, akkor lehet, hogy másik mutációt, villát, forkot használsz. Én a
https://github.com/jonaburg/picom elérhető picom-ot tettem fel, a MagyArch discordon említették, és nekem megtetszett. De kisebb eltérésekkel a többi is hasonlóan működik.
Én most ennek a beállításon megyek végig, alapszinten, hogy tud mit és hol kell keresni, ha változtatni akarsz rajta.

Ezt nem simán picom és a kapcsolókkal indítjuk, hanem

picom --experimental-backends --config ~/.config/picom.conf &

Igen, van lehetőség itt is egysoros indításra, ahol a kapcsolókat adjuk meg szép sorban:

picom -cCGfF -o 0.70 -O 0.028 -I 0.028 -t 0 -l 0 -r 7 -D2 -m 1.00 &

Ami csak egy példa. Te döntesz, hogy melyik az átláthatóbb számodra. Én a config fájlos megoldáson megyek végig, de kis odafigyeléssel az egysoros megoldásra is átírhatod a beállításokat.

Az indítást a megszokott mód az általad kedvelt indító fájlba kell berakni. De amíg állítgatod, addig érdemes nem autostart-ba rakni, hanem terminálból indítani. Így a hibaüzeneteket rögvest látod, és azt is észreveszed, hogyha leáll a picom futása, valami hibás beállítás miatt:

laci@Laci ~ % [ 2021-01-14 19:16:17.414 parse_config_libconfig FATAL ERROR ] Error when reading configuration file „/home/laci/.config/picom.conf”, line 88: syntax error
[ 2021-01-14 19:16:17.414 main FATAL ERROR ] Failed to create new session

Ami ennél is nagyon kellemes: a picom is kiírja, hogy melyik sort tartja hibásnak, így hamar megtalálod a problémát.

Picom alapok, sorban

Nem logikai sorrendben, hanem a konfigurációs fájlban sorban megyünk. A sorrendet természetesen átvariálhatod, nincs kötött sorrend. Amire figyelni kel, hogy ha két azonos típusú beállítást teszel, akkor az utóbbi felülírja az előbbit. Bár viszonylag kötetlen formátumú a fájl, nem árt a pontos és átgondolt munka. Mivel a változtatás, mentés után rögvest életbe lép a beállítás, a kísérletezgetés gyorsan és kényelmesen megtehető. Érdemes mindent kipróbálni, és megnézni a változást, mert csak így tanuljuk meg.

Animations, azaz az animációk beállítása

Az általam használt picom ágnak ez a nagy előnye. Van benne animált váltási lehetőség. Nem sok erőforrást vesz el, de legalább szép, és kicsit attraktívabb a kinézet.

transition-length = 100

A legfontosabb beállítás, az animáció gyorsaságát adja meg. Én a 100-200 közti értékeket tartom kellemesnek. Elég gyors, és nem zavaróan lassú. Érdemes kipróbálni párat, és azt használni, ami kellemesen feldobja a kinézetet.
Gyakorlatilag ha csak ezt az értéket lövöd be, és a többit ebből a blokkból nem, akkor már a lényeget megtetted és használható lesz a dolog.

transition-pow-x = 0.1
transition-pow-y = 0.1
transition-pow-w = 0.1
transition-pow-h = 0.1

Az animációt szabályozod az x,y tengelyen, illetve a vízszintes, és a függőleges irányban. Én alapértelmezetten hagytam, így kellően sima, gyors a mozgás.

size-transition = true

Ha a mérete változik az ablaknak, akkor kell-e animálni. Látványos ha egy kisebb méretű lebegő ablakot full-ra váltjuk vagy vissza.

Az alap konfigurációban nem szereplő beállítások a leírás szerinti sorban.

Spawn-center-screen = true/false

Animálni kell-e az új ablakokat a képernyő közepéről, vagy inkább ne. Én nem használom, zavaró, ha a megnyíló ablak animálódik, de egyéni ízlés dolga ez is.
Én sok lebegő állapotban megnyíló ablakot használok, aminek a mérete és pozíciója be van állítva. Nekem nem jött be, ha ezt még azzal is keverem, hogy középről animálja be a helyére…

spawn-center = true/false

A megnyíló ablak közepétől animálódjon, „terüljön szét”. Szintén nem használom, de egy próbát megér. Hátha neked jobban bejön.

A no-scale-down kicsinyítés animálása (egyes programok ezt rosszul kezelik). Így szól a leírás. Én ki sem próbáltam. Ha egyes programok nem kezelik jól, akkor nincs annak értelme, hogy bármennyi jól kezeli, de pár nem, és azon bosszankodjak, hogy nem szép a beállítás.

Amit érdemes tudni: lehetnek olyan ablakkezelők, vagy asztali környezetek, amiknél egyes beállítások nem fognak működni a felület sajátosságai miatt. Ami kellemetlen, de nem a picom a lényeg, hanem a wm vagy a DE minősége. Csak azért, mert esetleg nem animál középről a teljes ablakméretig a picom, nem kell wm-et váltani. Legalábbis szerintem.

Corners, a lekerekített sarkok

Érdekes, hogy eddig kipróbált wm-eknél legalább egyszer előkerült fórumon, vagy a redditen a kérdés: na és vannak-e lekerekített sarkok. Bár jól néz ki, és én is használom, de a nagy lelkesedés, ami ezt övezi sok helyen engem hidegen hagy. Igen, jobban néz ki, de csak ezért egy picom-ot vagy mást használni, esetleg wm-et váltani… érdekes gondolat.
Igen, ez a picom verzió valóban adja ezt a szépészeti dolgot. A sarkokat lekerekíti.

A legfontosabb beállítása a

corner-radius = 5.0;

Ami értelemszerűen a kerekítés sugarát adja meg. A felbontás és az igényed szerint kikísérletezve megkaphatod a neked tetsző beállítást. Itt érdemes mértéket tartani, mert nagyon csúnya lesz egyes esetekben, ha nagy az érték és a keret vékony.

A következő beállítási lehetőség ennek a kizárása, azaz mi ne legyen lekerekítve. Ezt a blokkot érdemes kifejezetten jól megismerni, mert más néven, de a kizárások több helyen szerepet kaphatnak.

rounded-corners-exclude = [
#"window_type = 'normal'",
"class_g = 'awesome'",
];

Alapok a kizáráshoz:

Kizárhatunk ablak típusokat, ami a „window_type = ‘normal'”, példában szerepel. Itt a normál ablakokat zárjuk ki. Ezek lehetnek: „unknown”, „desktop”, „dock”, „toolbar”, „menu”, „utility”,
„splash”, „dialog”, „normal”, „dropdown_menu”, „popup_menu”, „tooltip”, „notification”, „combo”, és „dnd”. Általában a nevek utalnak is a funkcióra, a legtöbb esetben nem okoz gondot. Itt is nagy segítség lesz az xprop!

A típusokat mindenképp érdemes ismerni, mert nagyon hasznos módja az egységes kinéztek megadásánál. Már a követő részben is kialakítjuk az egységes típusokhoz kötött árnyékolást.

Az egyszerű kizárás

A másik kizárási megoldás „class_g = ‘awesome’ azaz az osztály típus szerinti kizárás. Ez nem idegen senkinek, aki tiling wm-et használ. Hiszen az ablakok tulajdonságait ezzel a class megadásával szabályozhatjuk egyedileg.

Itt is használhatjuk class=”(?i)mpv” azaz a Mpv és az mpv együttes megadását, hogy ne legyen érzékeny a kis és nagybetűs kezdésre.

A „name = ‘Plank'” is megadható, azaz name-re is szűrhetjük a programot. Ez főleg akkor kényelmes, ha a class nem megállapítható egyértelműen, és egyedileg adjuk meg azt. Ilyen lehet ha terminálból futtatunk két programot és a class-nak a terminál nevét jelzi a xprop mindegyiknél, de nekünk külön szabályt kellene hozni a két programra. Valahogy így néz ki az egyedi megadás: urxvt -name cal -e calcurse -D ~/.config/calcurse amikor a name értéke a megadott cal lesz. Erre nem feltétlen lesz szükséged, de jobb ha ismered ezt is.

Lehet, hogy nem is kell, de…

Előfordulhat, hogy egyes programok window_type értéke nem meghatározható. Nekem a conky aminél, hogy az I3wm ne lebegő módban jelenítse meg, a own_window_type = 'override' lett megadva. A listában nincs ilyen, pedig a picom 15 félét ismer, így nehézkesen lehetne megadni, hogy a conky-nak ne legyen árnyéka, elmosása stb. Így a „! name~=”” megadásával kizárhatjuk az összes ismeretlen típusú ablakot. Erre sem lesz feltétlen szükség, de ezt is jó tudni.

A lekerekített sarkoknál ez az ismeret nagyjából csak érdekesség, hiszen nem egy túl problémás dolog, ha pár olyan ablakon is le lesz kerekítve a sarok, aminél felesleges, de az árnyékok stb. témakörben ez már nagyon kiemelten fontos téma lesz.

Ne a másét másoljuk, szabjuk saját képünkre!

Praktikus dolog lehet, ha egy kész picom konfigurációt kapsz és azt írod át, az ilyen kizárási listákban szereplő sorokat – azaz a kizárt programokat – legalább végignézed. Lehet, hogy a felsorolásban számos olyan is lesz, amit soha nem használsz, azokat érdemes kikommentelni, vagy törölni. Amiket használsz, azokat is érdemes átnézni, mert nem feltétlen szeretnéd azt kizárni a kidekorált ablakok közül, amiket a készítő.

Folytatni fogom, de ebbe a részbe ennyi fért bele. Próbáld ki a leírtakat. Nincs nagy értelme, ha csak olvassa az ember, és nem próbálja ki. Elrontani nem tudod, ha van egy biztonsági másolatod az előző, még működő beállításról.

Related Posts