Undistract-me, azaz ha lefut egy parancs, jelez

Hosszabb ideig futó parancssori programoknál kellemetlen, ha nem értesülünk, ha lefutottak. Erre több megoldás is létezik, én egy ideig vagy egy kis hangfájlt játszattam le a script végén, vagy a kdialog-gal írattam ki, vagy a notify-t használtam. Ez csak olyan scripteknél működött, amikbe ezeket explicit bele is írtam.

Nemrég olvastam egy cikket a undistract-me nevű kis alkalmazásról. Most ezt mutatom be röviden.

A Undistract-me elérhető a Debian és annak változatai, például az Ubuntu alapértelmezett adattáraiban. Mindössze annyit kell tenni, hogy futtassuk le a következő parancsot a telepítéshez:

sudo apt-get install undistract-me

Az Arch rendszert használóknak a leírás szerint az AUR-ban van, így ott sem okozhat gondot. Akinek meg nincs csomagban, annak érdemes meglátogatni a undistract-me github oldalát. https://github.com/jml/undistract-me

Az undistract-me beállítása

echo 'source /etc/profile.d/undistract-me.sh' >> ~/.bashrc

paranccsal írassuk be a bashrc-be.

Alapértelmezés szerint az Undistract-me minden olyan parancsot figyelembe vesz, amely több mint 10 másodpercig fut. Ezt az időintervallumot megváltoztathatjuk a /usr/share/undistract-me/long-running.bash fájl szerkesztésével.

sudo nano /usr/share/undistract-me/long-running.bash

# Default timeout is 10 seconds. if [ -z "$LONG_RUNNING_COMMAND_TIMEOUT" ]; then LONG_RUNNING_COMMAND_TIMEOUT=10 fi

Ezt a sort kell keresni és megadni a kívánt értéket. Én hagytam alapértéken, de mindenki úgy és azt állít, ami neki jó.

Majd mentsük el a fájlt, és adjuk ki ezt a parancsot, ha Bash-t használunk:

source ~/.bashrc

Ha Zsh-t:

source ~/.zshrc

És kész, ki lehet próbálni. A terminálablak újra indításáról ne feledkezzünk meg, mert akkor lép érvénybe a változtatás.

Ami fontos: ha az a terminálablak aktív, amiben a program fut, akkor nem ad jelzést. Ami logikus is, hiszen akkor nem kell figyelmeztetés.

A Debian alatt telepítéskor azt tapasztaltam, hogy egy csonka long-running.bash telepít. Ebből pár fontos funkció ki van véve. Ez nem jó, így a github oldalán lévő long-running.bash-ra cseréljük ki.

A Undistract-me ezen változatának kellemes tulajdonsága, hogy hangjelzést és vizuális értesítést küldhet, amikor egy parancs végrehajtásra kerül. Alapértelmezés szerint csak vizuális értesítést küld. Ezt megváltoztathatjuk úgy, hogy az UDM_PLAY_SOUND változót egyesre állítjuk. A rendszerbe azonban telepítenie kell a pulseaudio-utils és a hang-theme-freedesktop segédprogramokat, amelyek lehetővé teszik ezt a funkciót. Nekem (MX linux) fenn voltak.

# Default is not to play sound along with notification. (0 is false, non-zero is true.) if [ -z "$UDM_PLAY_SOUND" ]; then UDM_PLAY_SOUND=1 fi

Majd mentsük el a fájlt, és adjuk ki ezt a parancsot, ha Bash-t használunk:

source ~/.bashrc

Ha Zsh-t:

source ~/.zshrc

És kész, ki lehet próbálni. De a terminál...

Ami kicsit kellemetlen, hogy leírások szerint be lehet állítani, ha aktív ablakban fut a program, akkor azt is jelezze, ha kész, de erre nem találtam meg a beállítási lehetőséget. Így kézzel írtam be ezt a sort:

# Aktív ablakban is jelez (0 is false, non-zero is true.) if [ -z "$IGNORE_WINDOW_CHECK" ]; then IGNORE_WINDOW_CHECK=1 fi

Majd source ~/.bashrc és tesztelés. Így bármilyen ablakban is fut a terminál, jelezni fog.

Ami fontos: pár helyen említik, a "LONG_RUNNING_IGNORE_LIST" változót, ezt én nem találtam, illetve pár megoldás, amit a net-en olvastam azokat sem tudtam életre kelteni. Így azt a lehetőséget, hogy megadjuk azokat a programokat, melyeknél nem kérünk riasztást nem használhatjuk.

Ennyi