Dunst beállítása, alapok

Linux kezdő
Linux kezdő

Több Linux disztribúció használja a dunst értesítési rendszert. Bár az alapbeállításai, kinézete megfelelő, érdemes kissé testre szabni, megismerni a lehetőségeket.

Itt is az alapok bemutatása és az érdeklődés felkeltése a célom, nem egy teljes leírás készítés.

Bár elméletileg bármelyik asztali felületre adaptálható a dunst rendszere, de jellemzően érdemes az adott asztali felülethez kapottat használni. A dunst valódi ereje az egyszerűbb ablakkezelőknél jelentkezik: egyszerű, kicsi és alig használ erőforrást. Teljes mértékben az ablakkezelői kinézethez igazítható, így nem kell egyéb, esetleg más környezethez készült értesítést használni. Ami miatt érdemes átgondolni a használatát az egyszerű, gyors és átlátható beállítási lehetősége. Öt perc alatt nagyszerűen beállítható, majd a beállításai évekig jók lesznek.

Abból indulok ki, hogy a dunst telepítve van a gépeden, és az az alapértelmezett értesítési szolgáltatásod. A MagyArch-nál pont így van, és az ottani beállításokat veszem alapnak.

A dunst konfigurációs állománya

Alapesetben, ha igaz az alapfeltételezés, hogy már van egy működő dunst-od, a beállítást a/home/user/.config/dunst/dunstrc találod meg. Ha nincs ilyen állományod, akkor a /usr/share/dunst/dunstrc állományt másold be a fenti helyre majd a

sudo chown user:user /home/user/.config/dunst/dunstrc

paranccsal (értelemszerűen az user:user kitöltésével) készítsd el a sajátodat.

Majd a megszokott mód egy mentés következik, hiszen el is ronthatod a konfigot, és akkor egyszerűbb a régi még működőt visszatenni, mint a hibákat keresgélni. Bár a MagyArch konfigurációs állományai a github-on elérhetőek, de ha olyant használsz, aminél nem ilyen egyszerű, akkor már nehezebben állítod vissza az eredeti állapotot mentés nélkül.

A dunst alapbeállításai

Az első két lehetőség a monitor és a follow. Mindkettő azt definiálja, hogy hol jelennek meg az értesítések. Az monitor opció az a monitort (0-tól számozva) adja meg. Itt érdemes komolyan átgondolni, mert ha több monitorod van és az egyik képét felveszed, vagy éppen videókonferenciát tartasz, akkor nem túl jó, ha az értesítéseket oda dobja ki a a rendszer: ‘kedvenc pornó filmed letöltése kész!’.

Az follow opció felülírja monitor beállítást, és oda rakja, ahol az egér vagy a billentyűzet fókuszál. Logikusan válaszd ki a fix monitor vagy az aktívan használt (ahol pld. az egér van) legyen.

Ha azt szeretnéd, hogy az értesítések egy monitorra legyenek rögzítve, állítsd ezt az opciót none-ra.

Nálam:

monitor = 0

follow = none

A legegyszerűbben a notify-send paranccsal tesztelheted. Előbb le kell állítani a dunst-ot (fkill pld. nagyon jó erre) majd újraindítani, hogy az új beállítások legyenek az érvényesek. Itt is érdemes lépésenként menni, hogy egy-egy beállítást leellenőrizzünk.

Méret a lényeg!

Amikor először megláttam a dunst

geometry = „350×8-0+30”

sorát teljesen félreértettem. Szerintem mindenki rácsodálkozik, hogy 300×8 pixel???? De nem. Itt kicsit furább a megoldás. Két alapvető rész vant. Az első a teljes méreteket kezeli. A második beállítja a helyzetüket.

350×8 ez azt jelenti: 350 pixel 8 értesítéssel. Az értesítések legfeljebb 350 pixel szélességűek lesznek, és a dunst akár 8-at is rakhat egymás alá. Ami azt jelenti, hogy szépen becsempézi a monitor egyik oldalát, ha sok értesítés jön.

Kitérő: nem kell minden programnak, honlapnak és egyébnek értesítés küldenie! Nincs nagy teteje, hogy munka közben tucatszám érkező kiírásokat nézegess. Elveszi a figyelmet és zavar a munkában. Én levettem az egyszerre megjeleníthető értéket négyre. Ami még így is sok, és lehet, hogy lecsökkentem.

A következő két érték -0+30 az értesítési előugró ablak elhelyezésére vonatkozik. Az első érték a x, a második pedig az y tengelyen értelmezhető. Ha az x érték pozitív, akkor a képernyő bal oldalán jelenik meg, és az érték határozza meg, hogy milyen távra legyen a szélétől. Ha ez negatív érték képernyő jobb oldalán jelenik meg a panel, és az értéke határozza meg, hogy a jobb oldaltól milyen távra.

Az y érték ugyanúgy működik, mint az x csak képernyő felső és alsó részén. Mivel ez az érték pozitív, 30 pixel lesz a tetejétől.

Aki ismer, vagy látta a i3wm, vagy a xmonad asztalomat tudhatja, hogy a -0 (jobb oldalt, a legszélén) nekem nem jó, mert nem szeretem, ha az ablak „felmászik” a kávára. Így ezt megemeltem.

Elhelyezésnél érdemes figyelembe venni, hogy a monitor széleinél helyezkednek el a panelok, és ha azon fontos, gyorsan változó értéket jelenítünk meg, akkor a dunst ablaka ne takarja. Bár az értesítési dunst kiírás ideje szabályozható, és nem szoktuk folyamatosan ott tartani, de azért jobb ha nem takar ki semmit.

Szerintem a mérethez szorosan hozzátartozó téma a font mérete is.

font = Monospace 14

line_height = 0

Az első a betű típust és a méretet adja meg. A második a sortávot. A nulla a normál. Ha nagyobb értéket kap akkor annyi pixellel növeli a távot. Érdemes kicsit játszani a fenti értékekkel, mert a dunst ablakának a mérete, a betű méret összehangolása után sokkal kellemesebb képet fog nyújtani. Én a betű méretet levettem 10-re. Így kisebb lesz az ablak magassága egyforma hosszú üzenetnél.

A globális beállításoknál érdemes figyelni ezekre

indicate_hidden = yes

Ha így állítod be, akkor a megadott maximális értesítési számnál eggyel kevesebb értesítés jelenik meg, és az utolsó értesítési ablakban annak a száma, hogy mennyi nem jelenthetet meg. Azaz nálam ez a szám négy, így ha öt értesítés jelenne meg egyszerre, akkor az első három megjelenik, majd a negyedik helyén jelzi, hogy bizony van még, ami nem fért bele a keretbe. Ha normálisan beállítjuk az értesítést küldő programokat, akkor nem lesz sok ilyen „lemaradt” értesítés.

shrink = yes

Ezt mindenképp hagyd meg, mert ha kevesebb a szöveg, mint ami a normál (itt 350) pixelt elfoglalná, a dunst összezsugorítja az ablakát. Kissé furának néz ki, ha háromszavas üzenet egy nagy ablakban lebeg.

#transparency = 80

Értelemszerűen az átlátszóságot adja. Érdemes átgondolni, hogy itt, vagy a picom-ban adod meg ezt az értéket. Bár csak az én saját elképzelésem, de érdemes minden, a picom hatáskörébe tartozó beállítást ott megtenni. Így elkerülhető az ütközés a két beállítás közt.

notification_height = 0

Az értesítési ablak minimális magassága pixelben. Ha a szöveg és a kitöltés nem fér bele a megadott magasságba, a magasságot szükség szerint növeli a dunst. Teljesen felesleges emelni ezt, rá kell hagyni a dunst-ra. A nulla beállítás esetén a sunst normálisan, a megadott egyéb paraméterek mellet jól dolgozik.

separator_height = 2

Ez már érdekesebb beállítás. Ha több értesítés érkezik egyszerre a közte lévő távolságot adja meg. A felbontásom miatt és ezt megemeltem, hogy jobban elváljanak az ablakok.

padding = 0

horizontal_padding = 8

Ez fontos beállítás és én mindegyiket hatra állítottam. Az értesítés és a keret közti távot adja meg. Ha van egy színes kerete az értesítési ablaknak, ami a háttérszíntől eltér, akkor elég csúnyán néz ki, ha nincs a szegély és az írás közt egy kis tér.

frame_width = 3

frame_color = "#2B27EE"

Keret mérete és színe. A MagyArch alapbeállításánál a keret színe a háttér színe, amit én megváltoztattam, és a pixel méretet levettem egyre. Szolidan keretbe foglalja az értesítést.

separator_color = frame

Az elválasztó színét adja meg. Ez többféle lehet, a konfigurációs fájlban találhatod (vagy a man-ban) a lehetőségeket.

# Sort messages by urgency.

sort = yes

Érdemes alapállásban hagyni, mert így fontossági sorrendben kapod az értesítéseket. Bár nem mindegyik program használja ezt ki. Ez azért is fontos, mert ha te írsz egy üzenet küldést használó szkriptet, akkor pld. a notify-send ismeri ezt a lehetőséget.

Mi jelenjen meg?

Az üzenet formátumát adhatjuk meg, ezt érdemes beállítani a saját igényednek. Bár az alap beállítás jó, de ha van pld. haladást jelző üzenetet azt már testre kell szabni.

# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
# Markup is allowed

format = "<b>%s</b>\n%b"

Kellemesen a konfigurációs fájlba be is írták a lehetőségeket.

A megadott üzenet formázás

<b>%s</b> Összefoglaló (ha küld a program, ami üzen). És az legyen bold, azaz félkövér.

A kódolás a HTML szabványt követi:

<b>bold</b>
<i>italic</i>
<s>strikethrough</s>
<u>underline</u>

\n%b sortörés után az üzenet szövege.

Ha megnézed a leírást ennél sokkal több beállítási lehetőség van. Az alapbeállítás egyszerű és informatív a legtöbb esetben.

Amit érdemes kiemelni: ha olyant adsz meg, ami nincs az üzenetben, akkor azt a dunst átugorja, azaz nem okoz gondot ha a %p-t is megadod (haladást jelző) de a legtöbb program értelemszerűen ilyent nem fog küldeni.

Egyéb globális beállításokat. Amik fontosak lehetnek

alignment = left

Igazítás, amit ki lehet egészíteni a vertical_alignment értékkel is. Logikus és ismert beállítások 🙂

word_wrap = yes

Szövegtörés, a hosszú sorokat tördelheti. Ha ezt no-ra teszed, akkor nem lesz szövegtördelés, és csonka sorok lehetnek!

elipsize = middle

Ez csak akkor fontos, ha a sortörést letiltod. Azt adja meg, hogy hol legyen a három pont, ami jelzi, hogy hosszabb a szöveg, mint ami belefér a megadott pixel számba. Itt az alapérték a középen megjelenő … jelzés.

ignore_newline = no

Az alapbeállításnál no, így a kapott értesítésekben a sortörést is meghagyja. Azaz ha olyan szöveg jön, ami sortörés karaktert is tartalmaz, akkor ott új sort kezd. Ha yes akkor ezeket a sortörési jeleket nem veszi figyelme, egy szóközt tesz be helyettük és saját maga tördeli a beállítások szerint a szöveget.

Használd no, azaz alapállatban, mert így az értesítést küldő program formázása megmarad. Ha pedig egyes programok ronda sortöréssel küldik az üzenetet, előbb abban próbáld meg az értesítést formázni. Ha nem megy, akkor csak a végső esetben állítsd itt át.

stack_duplicates = true

Maradjon így, mert a duplikált üzenetek egymásra kerülnek. Pár program küldhet egyszerre több üzenetet is, ami ugyanaz. Kissé zavaró, ha teleszemeteli a monitort. Ha ilyen van, akkor előbb a küldő programban próbáld szabályozni az üzeneteket.

hide_duplicate_count = true

A fenti beállítás duplikált üzeneteket nem számolja bele a meg nem jelenített üzenetek közé. Igen hasznos, ha sok duplikáltat kapsz.

show_indicators = yes

Egy jelzés jelenik meg, ha egy művelet, vagy link is van az üzenetben.

icon_position = left

max_icon_size = 40

#icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/:/usr/ share/icons/Adwaita/256x256/status/

Ikonokkal kapcsolatos beállítás, nekem le van tiltva az ikonok megjelenítése, így nem használatos ez a rész.

sticky_history = yes
history_length = 20

A régebbi üzenetek megtartását szabályozza. Ha beállítasz egy gyorsbillentyűt, akkor elő tudod hívni őket. A régebbiek törlődnek.

Ha Wm-emet használsz

Ha ablakkezelőt használsz, vagy akár a picom-ot, akkor az ablaknak, a programnak a tulajdonságait title, class stb, megadásával teheted meg. Az egyszerűség kedvéért a dunst már definiálta ezeket a neveket, egységesen a Dunst stringgel hivatkozunk rá a

title = Dunst

class = Dunst

sorban ezt megváltoztathatod, bár nem sok értelmét látom.

[shortcuts] azaz gyorsbillentyűzés

Pár gyorsbillentyű megadható, értelemszerűen:

close = ctrl+space
close_all = ctrl+shift+space
history = ctrl+grave
context = ctrl+shift+period

Hasznos lenne kényelmesebbre cserélni, illetve – ha nem kellenek – kikommentelni, mert nem túl egészséges, ha mással is ütköznek. Rákattintással is el lehet tüntetni, egyébre meg nekem nincs szükségem.

Fontosság beállítása a dunst-ban

Bár legtöbbet a kinézetet szeretjük állítani, meg egyéb kevésbé fontos „testre szabást”, de itt a lényeg a következő három beállítás.

[urgency_low] [urgency_normal] [urgency_critical]

Sejthető, hogy a sürgősség szerinti eltérő beállítást adjuk meg. A megszokott

background = "#2f2b26"
foreground = "#928374"
frame_color = "#fabd2f"

beállítást ízlés szerint tedd meg. A fontos üzeneteket érdemes más színnel megjelöltetni. Így kitűnik a többi közül.

Ami ennél fontosabb, az időtartam beállítása, amíg a monitorodon lesz.

Legalább a kritikusnak jelölt üzeneteket tartsd a monitorodon addig, amíg le nem nyugtázod. ezt a timeout = 0 beállításával teheted meg. Így vagy rá kell kattintanod, vagy a megadott gyorsbillentyűvel eltüntetni. Érdemes – szerintem – megszokni, hogy el is olvasod az üzeneteket és nem csak bezárod. Pont ezért nem kell – szerintem – a torrentkliensbe beállítani, hogy mindenkor küldjön üzenetet, a discordba sok csatornánál engedélyezni az összes üzenet kijelzését stb. Nem jó ha a sok üzenet miatt egy reflex lesz a „zárjuk már be, mit ugrál ez itt” mozdulat…

Bár nagyon kellemes lenne, ha minden program jól kategorizálná az üzenet sürgősségét, de nem minden esetben van így. Nem a dunst dönti el az üzenet típusát, csak a megjelenítésért felel. Így ha van rá mód (bár ritka) akkor a küldö programba állítsd be. Ha pedig magadnak írsz programot és pld notify-send küldi, akkor erre is figyelj!

Ami kényelmes, hasznos…

…de nekem nem kell. Egyéni formációkat adhatsz hozzá, szkripteket hozhatsz létre. Erre van példa, én nem nagyon foglalkoztam vele, így nem is tudok érdemit hozzátenni. Itt a minimum elvet követem: ez csak egy üzenet, amit ha lehet a küldő programban állítok be, vagy tiltok le stb. nem akarok egy komplett rendszert összerakini.

Ennyi. Bár még sokféle beállítás van, én nem vittem túlzásba a beállítás. Dobja fel az üzenet, majd tüntesse el. Ezt tegye meg olyan mód, olyan kinézettel, ami illik a saját környezetembe. Öt perc alatt testre szabható, ha nincsenek extra terveid ezzel.

Összeraktam egy videót is ebben a témábam:

Az ott használt tesztelési szkript:

#!/bin/bash

killall dunst

title="$(date +%H:%M)"
text="$(date +%d). $(date +%B) $(date +%Y), $(date +%A)"

notify-send "$title" \
"$text" -u critical

Related Posts