A notify-send egyszerű, gyors és mindenhol használható üzenet küldő rendszer. Ami nem takar mást, csak egy üzenet megjelenítését a monitorodon. A notify-send küldi az üzenetet, így kell valami ami meg is jeleníti: ez a dunst. Mindkettő könnyű, egyszerű és erőforrásigénye kicsi. Az laapfunkciókat tudja, azaz ne egy kdialog stb. szintet várj el.
Két fontos témát kell eldönteni a használata előtt. Az első logikusan a tudásszint. Ha grafikus ablakokat akarsz megjeleníteni, abban kiválasztó, vagy kitöltendő menüket, és interaktív üzenetpanelok a célod ez arra nem lesz jó. A másik fontos kérdés a használat helye. Ha egy szkriptben, vagy sima parancssorban alkalmazod, akkor ez nagyon kellemes megoldás egy-egy üzenet megjelenítésére. Ezt azért emelem ki, mert – bár egyértelmű – de nem egy adott programnyelvhez kötött üzenetküldésről beszélünk, hanem önálló kis programról. A különféle programnyelveknek van saját funkciója erre, így oda ezt nem kellene beerőltetni.
A notify-send telepítése
Ha nincs fenn a gépeden, a saját disztribúciódnak megfelelően telepítsd.
Én itt abból indulok ki, hogy már van egy üzenet megjelenítő program, ami megjeleníti az üzeneteket. A MagyArch alatt biztosan van, és a dunst amit használunk.
Teszteljük le a működést
A működése nagyon egyszerű:
notify-send "Üzenet"
Meg kell jelenni a dunst (vagy a beállított egyéb program) beállításai szerinti helyen, kinézetben a szöveg: Üzenet
Alapértelmezés szerint az üzenet 5 másodpercig látható. Ha módosítani szeretnéd, hogy egy üzenet mennyi ideig maradjon látható, használjd a “-t” kapcsolót. Ez ezredmásodpercekben megadja, hogy mennyi ideig legyen fenn az üzenet. Írj be “-t 0“-t, hogy az üzenet fennmaradjon, amíg a felhasználó be nem zárja. Bár ez így nagyon egyértelmű, de ha mégsem így működne, akkor a megjelenítő programodban keresd a beállításoknál a megjelenítési időt.
notify-send "Ez az üzenet 3 másodpercig tart" -t 3000 notify-send "Kattints rám, hogy bezárhassam magam" -t 0
Bár én mindenhol ” azaz kettős idézőjelet írtam, de lehet, hogy egyes shell-ek az egyes idézőjelet szeretik. Ha pld. felkiáltójeles szöveg van, akkor nem feltétlen jelenik meg a kettős idézőjelnél, ilyen esetben válts át az egyesre.
Ikon is beilleszthető
notify-send " Ez a program végzett" -i home/laci/.local/share/icons/Minal.0.png
Az -i kapcsoló adja meg az ikont és a pontos elérési útvonal.
Ha jól megnézed, az első ” után van egy space. Ami kissé szebbé teszi a megjelenést egyes betűtípusoknál, mert az ikon és az első karakter kicsit távolabbra kerül.
Sürgősség a notify-sent beállításával
A notify-send és a legtöbb megjelenítő ismeri a sürgősség fogalmát, és eltérő megjelenítést ad az eltérő (low, normal, critical) esetekhez. Igen hasznos, mert így pld. a dunst beállításainál megadott megjelenítéssel jelenik meg az üzeneted.
Az alap teszt sorunk így néz ki sürgős módban:
notify-send "Üzenet" -u critical
Így, bár maga az üzenet nem kritikus, de a dunst stb. az arra rendelt beállítással, színezéssel jeleníti meg.
Az -a kapcsoló a programnév szerinti ikon megadásra szolgál, ami nem mindig fog működni. Így jobb az explicit ikon útvonal megadása.
A -c kapcsoló adja meg az üzenet kategóriáját, amiről itt olvashatsz többet: https://www.galago-project.org/specs/notification/0.9/x211.html
Számomra ez sem érdekes funkció.
Egy komplettebb megoldás, ami mindet tartalmaz:
notify-send "Ez a cím" \
"Ez a szöveg" \
-i /home/laci/.local/share/icons/hicolor/32x32/apps/1C9D_Terminal.0.png -u critical
Ha így adod meg, az első szöveg lesz a summary, azaz amit a dunst-ban a %s summary megadásánál bold-ra formáztunk.
Összefoglalva
Ami a sürgősség, az lejárati idő, és esetleg a summary, a cím megadásával operálunk a legtöbbet.
Mire lehet használni a notify-sent programot?
Sejthető, hogy egy ilyen parancs beírásárnak a terminálba nem sok haszna van:
notify-send "Üzenet"
De egy ilyennek már igen:
upall && notify-send "Kész a frissítés"
Az upall a frissítő parancs, ha az hiba nélkül lefut azaz &&, akkor kapunk egy üzenetet. Az ilyen összekötéseket két parancsra, ami kezeli a hiba nélkül, hibával ért véget, vagy simán csak a parancs után érdemes megtanulni. Itt volt róluk szó.
Mivel a upall a MagyArch egyik alias megoldás, így ha azt megváltoztatod a fenti elvek alapján, akkor már egy „komoly” értesítő rendszert is kapsz.
Hasonlóan kényelmi megoldás, ha egy várhatóan hosszabb ideig futó parancs után berakod az értesítést, hogy ha lefutott, küldjön üzenetet. Így értesülsz róla, hogy véget ért.
Logikus felhasználás egy-egy szkriptbe beépíteni. Így az indulásról, hibákról, vagy csak a feladat korrekt elvégzéséről kaphatsz üzenetet. Egy sor a végére, és már egy kényelmi funkciót kap a szkript.
A notify-send kezeli a változókat is, így a kiírást, egy szkriptben dinamikussá tudod tenni, nem csak egy statikus szöveget tudsz kiküldeni.
Erre jó példa egy egyszerű időkijelző szkript:
#!/bin/bash title="$(date +%H:%M)" text="$(date +%d). $(date +%B) $(date +%Y), $(date +%A)" notify-send "$title" \ "$text"
Amire még nagyon jó, és szerintem pár helyen érdemes is alkalmazni, ha egyszerűbb ablakkezelőt használsz és még szokatlan a billentyűparancsok sokasága. Nagyon egyszerű példa:
bindsym $mod+h split h; exec notify-send 'Oldalra rakja!'
Azaz, ha lenyomjuk a win+h, ami egy i3wm parancsot, a vertikális osztást hív meg, azután kirak egy kis feliratot: ‘Oldalra rakja!’. Ezzel megerősíti, hogy vette a parancsot és a következő megnyitott ablak a meghatározott felosztásban jelenik meg. Arra is jó, hogy rögvest észleljem, ha véletlenül nyomtam meg a kombinációt… Igen, tudom, hogy van más megoldás erre, és azt is, hogy az i3 a saját bárján is kijelezheti ezt. De én nem azt a bárt használom.
Bár nem lesz sokkal jobb és praktikusabb a Linux felhasználásunk, de egy kis lépést tettünk a jobb felhasználói élmény felé. Pár jól elhelyezett egyszerű üzenetküldési parancs átlag egy perc alatt összehozható, és azután már csak az eredményt kell élvezni.
Hozzászólások
Noti
Beküldte kimarite -
Értékelés:
Csak távolról hasonló...
A Noti egy parancssori eszköz a macOS, a Linux és a Microsoft Windows számára, amely figyeli a folyamatot / parancsot, és értesítést indít az asztalon vagy telefonon, amikor említett befejezte a futását.
https://www.linuxuprising.com/2021/02/get-notifications-on-your-desktop-...