Picom Transparency és Opacity

Transparency és Opacity azaz átláthatóság és átlátszatlanság.
Az egyik legkedveltebb effektus a picom opacity, átláthatóság, amivel igen szép felületet kaphatunk olyan egyszerűbb ablakkezelőkön is, aminél nincs lehetőség alapból erre. Bár a tiling WM-eknél sokan nem kedvelik az ilyen nem funkcionális témázást, de aki szeretné feldobni a környezetét ezzel megteheti. Itt már összetettebb a feladat. Amíg sok egyéb beállításnál egy globális értéket adunk meg és azt szabályozzuk melyik ablak típus, vagy program kapja meg a beállítást, vagy ne, addig itt egyedileg rendelhetünk értéket egy-egy programhoz. Nem kevés időt el lehet tölteni ezzel, ha valaki szeretné nagyon extrémen beállítani, és egyéni megoldásokkal tarkítani.
Már tudjuk, de ismétlésnek nem árt:
Ha valami nem úgy működik, ahogy akarjuk egy-egy ablaktípusnál, vagy programnál akkor az utolsó blokkban nézd meg, hogy ott mit írtál felül a beállításoknál. Érdemes, ha ablaktípusra adsz meg értéket ott megadni.

Picom opacity beállítása

inactive-opacity = 0.8;
active-opacity = 1;
Az aktív és inaktív ablakok átlátszósága. Az egyes érték a teljesen átlátszatlanságot állítja be. Az inaktív ablakoknál sok helyen a 0.8 vagy annál kisebb értéket adják meg, de én ezt felemeltem 0.9-re így jobb nekem.
A picom opacity értékét – ha a későbbiekben tárgyalt elmosást is akarod használni – érdemes azzal párhuzamosan állítgatni, mert a kettő együtt adja a kinézetet.

frame-opacity = 1;

Értelemszerűen a keretek és a címsorok beállítására szolgál. Előfordulhat, hogy egyes ablakkezelőknél nem a kívánt hatást éred el. Eltérően kezelhetik a „keret” fogalmát és nem feltétlen fog az opacity érték a picom-ból vezérelve változni.

Ablak típus szerinti opacity beállítása

#popup_menu = { opacity = 0.8; }
#dropdown_menu = { opacity = 0.8; }
Logikus beállítási lehetőség, de én jobbnak tartom a végén megadni, mert akkor biztosan nem lesz ütközés, nem kell keresni, hogy miért is nem olyan, mint amit beállítottam.

wintypes:
{
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; }
popup_menu = { opacity = 0.8; }
dropdown_menu = { opacity = 0.8; }
};
Ha szeretnéd felülíratni a programokban megadott átlátszatlanságok, ha az ablaka inaktív, akkor ezt kell átállítani
inactive-opacity-override = false;


Itt jön elő, hogy egy beállítás nem annyira egyszerű, mint ahogy sokan gondolják. Egy értéket, jelen esetben az inaktív ablak átlátszóságát lehet szabályozni sok programban natívan, de lehet szabályozni globálisan is, esetleg az adott programhoz tett picom opatity értékkel. Ha ez a kettő nem egyezik, akkor probléma lehet, és nem a kívánt mód jelenik meg az ablak. Nem fog lefagyni a géped, vagy összeomlani, csak eltér az elvárt és a valós kinézet.
Az inaktív ablakok megjelentésének a másik módja a
inactive-dim = 0

Ami nem átlátszóvá teszi, hanem tompítja a kinézetet, itt a nulla nem változtat semmit, az egy pedig a maximális tompítás. Az
inactive-dim-fixed = 1.0

pedig felülírja az opacity értéket és nem együttesen jelenik meg.

Folyamatos fókuszban tartott?

Ide került egy fontos beállítás, ami első látásra nem igazán érthető.
focus-exclude = [
"class_g = 'Cairo-clock'",
"class_g = 'Bar'", # lemonbar
"class_g = 'slop'" # maim
];

Azaz a folyamatosan fókuszban tartott ablakokat sorolja fel. Az első olvasatban a leírása nem túl logikus, hiszen az a fókuszált ablak, amiben dolgozom. Minek másikat is fókuszáltnak jelölni, és ha ez fókuszban van, akkor melyikben is dolgozom? Kis agyalás után ráébred az ember: ez arra jó felsoroljuk azokat az ablakokat, amiknek a opacity értéke mindig a fókuszált értéknek kell megfelelnie. Jellemzően bárok, panelek vagy olyan ablakok, amiknek nem kellene felvenni az inaktív, esetleg áttetszőbb ablak kinézetet. Itt is igaz, hogy az ablakkezelők eltérően kezelik az ablakokat, és lehet, hogy nem is kell ez a beállítás. Nálam, I3wm és tint2, a panelnak eszében sincs felvenni az inaktív értéket, pedig nem adtam meg ebben a blokkban semmit. Mielőtt hibát jeleznénk a fejlesztőnek vegyük figyelembe az eltérő ablakkezelők, asztali felületek eltérően működhetnek egy-egy ilyen programmal!
Én kikommenteltem egyelőre, mert nincs ilyen elvárásom. Ha valamelyik panelom, pld. a tint2-es esetleg a conky gondot elcsúnyulna, akkor majd beállítom.

Opacity beállítása picom alatt egyes programoknál

Ez az a rész, ahol kellő önmérsékletet kellene tanúsítani. Itt adjuk meg egyesével azokat az opacity értékeket, amiket egy-egy adott programhoz rendelünk, és az eltér a fő beállítástól.
opacity-rule = [
"10:class_g = 'URxvt'",
"100:class_g = 'kitty'",
"80:class_g = 'Thunderbird'"
];

Itt azt az értéket adod meg alapesetben, ami a fókuszált és nem fókuszált állapotra is igaz. Mindig olyan lesz, amilyennek itt beállítod, felülírja a inactive-opacity és a active-opacity értéket is.
A megszokott mód itt is elég sokféle kitétel alapján lehet a beállítást megtenni, jellemző a class_g. De a name stb. is működik. De mi van, ha nem egy értéket akarok az adott programhoz meghatározni, hanem a fókuszált, és a nem fókuszált értéket is be szeretném állítani, de nem a globálisan megadott inactive-opacity és a active-opacity szerint.
Az Arch wikiben van egy nagyon kellemes megoldás, amivel érdemes megismerkedni:
opacity-rule = [
"90:class_g = 'URxvt' && focused",
"60:class_g = 'URxvt' && !focused"
];

Aminél a fókuszált terminálablak 90, a nem fókuszált pedig 60 értéket vesz fel. Bár nem igazán az a cél, hogy minden programhoz egyesével megadjunk két opacity értéket a picom segítségével, de egyedileg, pár program esetén jó lehet ismerni ezt is.
Itt is jó kezdés lehet az általad nem használt programok kigyomlálása a felsorolásból, majd egyesével átnézni a beállításokat. Ha már van lehetősé igen magas szinten testreszabni a picom opacity beállításait, akkor ne a disztribútor ízlése legyen a mérvadó, hanem a sajátod.

Elmosódott háttér az átlátszó ablakok mögött

Ahogy említettem az elmosódott háttér és az opacity érték adja meg a kinézetet, így ezt együtt, párhuzamosan érdemes állítani. Ha nem tetszik, hogy egy áttetsző inaktív ablak alatt lévő ablakok, vagy a háttér elmosódik, akkor ne használd. Az alapbeállítás – legalábbis nálam az volt – a kikapcsolt elmosás. Ami arra enged következtetni, hogy sokaknak zavaró lehet ez a beállítás. Itt is az ízlés és a megszokás dönt. Nekem jelenleg tetszik ez a lehetőség, így be is mutatom.
A szekció elég sok kikommentelt sorral, magyarázattal kezdődik, ahol megadhatod at értékeket, de sokkal összefogottabb, ha a
blur: {
# requires: https://github.com/ibhagwan/picom
method = "kawase";
#method = "kernel";
strength = 7;
# deviation = 1.0;
# kernel = "11x11gaussian";
background = false;
background-frame = false;
background-fixed = false;
kern = "3x3box";
}

blokkban adod meg az összest. Kétféle elmosási típust ismer, mindegyik szép. Én a kawase metódusút használom, ha esetleg az nem csinál semmit, akkor váltsd ár a kernel metódusra. Ilyenkor valószínűleg valami miatt a glx helyett a #backend = “xrender”; lett beállítva.
A
strength = 7;

az elmosás erejét adja, amit érdemes állítgatni, hogy olyan legyen, amilyent Te kellemesnek találsz.
Itt is lehetőséget kapsz a kizárásra, azaz letilthatod egyes ablakoknál vagy programoknál a háttér elmosását.
blur-background-exclude = [
"window_type = 'dock'",
"class_g = 'URxvt'",
"! name~=''",
"_GTK_FRAME_EXTENTS@:c",
];

Ebben semmi új nincs, ahol zavaró, felsoroljuk és máris nem lesz elmosott háttere az inaktív és átlátszó ablakoknak.

Összefoglalva: a picom alapszintű beállítása nem túl nehéz, inkább a figyelem és a pontos munka ötvözése a jó ízléssel. Egyszer kell beállítani minden paramétert, ami nem kevés munka, hiszen egymásra ható beállítások is vannak, de megéri. A nagy előnye a picom-nak, hogy nem egy adott WM része, ha beállítod, akkor bármely olyan WM-hez viheted, amiben ezt alkalmazni tudod. Ami kicsit kellemetlen, hogy sokféle villa, ág, mutáció van, így minden esetben meg kell nézni, hogy egy adott mutáció mit tud. Az alapokat mindegyik tudja és sokszor egyikből a másikba is átkerülnek a funkciók, így hamar megkapod a kedvenc picom-odban azt is, amit egy másik verzióban kifejlesztettek.

Related Posts