Ak ste niekedy spustili príkaz v termináli, ktorý chvíľu trval, a potom ste začali robiť niečo iné, viete, aké ľahké je stratiť pojem o čase. Rozrušte ma Už sa nemusíte každých pár minút vracať do konzoly, aby ste skontrolovali, či je hotovo: nástroj zobrazí upozornenie na ploche po dokončení dlhotrvajúceho príkazu.
Tento malý skript funguje na Debian, Ubuntu a deriváty, ako aj Arch LinuxPredvolene považuje každý príkaz, ktorého spustenie trvá viac ako 10 sekúnd, za „dlho bežiaci“ a pokiaľ to nezmeníte, upozorní vás iba v prípade, že aktívne okno nie je terminál, v ktorom proces beží, práve preto, aby sa predišlo zbytočnému rozptyľovaniu, keď sa už na toto okno pozeráte.
Čo je Undistract-me a ako to funguje?
Undistract-me je v podstate sada shellových funkcií, ktoré sa pripájajú k cyklu vykonávania Bashu (a môžu tiež integrovať do Zshna zistenie začiatku a konca príkazu. Keď čas vykonávania prekročí konfigurovateľnú prahovú hodnotu, spustí sa upozornenie na ploche a ak si to želáte, zvuk POZOR.
Skript je zámerne definovaný predvolený časový limit 10 sekúnd od ktorého sa príkaz považuje za „dlhý“. Túto hodnotu je možné upraviť a je možné vytvoriť aj zoznam vylúčení s názvami príkazov, ktoré by nemali generovať upozornenia (napríklad ls o cd Ak ste si ich prispôsobili, niekedy to trvá dlhšie.
Ďalším dôležitým aspektom jeho fungovania je kontrola aktívneho okna: Upozornenie sa zobrazí iba v prípade, že terminál nie je spustený v popredí.Ak chcete byť aj tak upozornení, existuje premenná prostredia, ktorá toto správanie zvráti.
Projekt je open source a jeho kód je vydaný pod licenciou. ExpatHistoricky bol vývoj iniciovaný pomocou JML a je hostovaný na platformách ako Launchpad a GitHub. V podstate používa známy „hack“ predvýkon pre Basha (inšpirovaného dielom Glyf Lefkowitza získal príspevky od ľudí ako Chris Jones (Terminátor), Mikey Neuling y Stephen Rothwell, čo zlepšilo ich výkon a kvalitu.

Inštalácia na Debian, Ubuntu a deriváty
Najpriamejšia cesta v systémoch Debian / Ubuntu Je to cez štandardné repozitáre. Jednoducho nainštalujte balík a budete pripravení ho prepojiť so svojím shellom.
sudo apt update
sudo apt install undistract-me
Vo veľmi starých verziách Ubuntu existoval špecifický PPA, pre prípad, že pracujete so staršími prostrediami, kde naklonený Tento aktualizovaný balík nie je k dispozícii:
sudo add-apt-repository ppa:undistract-me-packagers/daily
sudo apt update
sudo apt install undistract-me
Po nainštalovaní je potrebné skript „pripojiť“ k vášmu shellu. V Bash máte niekoľko možností. Najjednoduchšia pridá riadok automatické načítanie do štartovacieho súboru:
echo 'source /etc/profile.d/undistract-me.sh' >> ~/.bashrc
Ak uprednostňujete explicitnú inštaláciu hlavného komponentu plus inštalátor hook, môžete tiež napísať dva riadky vo svojom ~ / .bashrc touto cestou:
echo "source /usr/share/undistract-me/long-running.bash
notify_when_long_running_commands_finish_install" >> ~/.bashrc
A nezabudnite obnoviť reláciu shellu, aby sa zmeny prejavili pomocou zdroj po úprave spúšťacích súborov.
source ~/.bashrc
Inštalácia na Arch Linux a deriváty (AUR)
V ekosystéme Arch je Undistract-me dostupný v AUR (zvyčajne vo variante undistract-me-gitMôžete ho skompilovať pomocou vášho obľúbeného AUR helpera alebo manuálne pomocou makepkgPre pomôcku sú tu bežné príkazy pre pomocníci ktoré poznajú mnohí používatelia:
pacaur -S undistract-me-git
packer -S undistract-me-git
yaourt -S undistract-me-git
Majte na pamäti, že niektoré z týchto pomocníkov sú zastarané, ale slúžia na ilustráciu toho, že inštalácia sa vykonáva z komunitného repozitára. V každom prípade, po nainštalovaní, aktivácia Pre váš shell sa to robí rovnako ako v Debiane/Ubuntu: pridaním príslušných riadkov do štartovacieho súboru.
Aktivácia a použitie s Bash a Zsh
Pre Bash, okrem vyššie uvedených variácií, existuje kompaktný blok, ktorý môžete zahrnúť na koniec ~ / .bashrc aby sa skript načítal v prípade potreby:
if ! [ -z "$BASH_VERSION" -o -z "$PS1" -o -n "$last_command_started_cache" ]; then
. /usr/share/undistract-me/long-running.bash
notify_when_long_running_commands_finish_install
fi
V Zsh sa integrácia dosahuje podobne, smerovaním rovnakých riadkov do súboru ~ / .zshrcPomocou tohto príkazu to môžete všetko naraz vypísať:
echo "source /usr/share/undistract-me/long-running.bash
notify_when_long_running_commands_finish_install" >> ~/.zshrc
Po úprave ktoréhokoľvek z týchto súborov, znovu načítať konfiguráciu z vášho aktuálneho shellu, aby sa zmeny prejavili bez odhlásenia.
source ~/.bashrc
# o bien para Zsh
env zsh -l
# alternativamente
a source ~/.zshrc
Dôležité: V mnohých terminálových emulátoroch budete musieť túto možnosť povoliť „Spustite príkaz ako prihlasovací shell“. V Terminál GNOME Nachádza sa v časti Nastavenia profilu > Názov a príkaz; v Terminál XFCE Nájdete ho v časti Nastavenia > Všeobecné; a v Guake Nachádza sa v časti Nastavenia > Všeobecné. Bez neho sa hook nemusí načítať správne.

Nastavenia: čas, výnimky, aktívne okno a zvuk
Funkcia Undistract-me sa primárne ovláda zo súboru /usr/share/undistract-me/long-running.bash a prostredníctvom premenných prostredia. Tento súbor môžete otvoriť vo svojom obľúbenom editore a skontrolovať dostupné parametre.
Ak chcete zmeniť minimálny čas, po ktorom sa príkaz považuje za „dlhý“, vyhľadajte premennú DLHO BEŽIACI_PRÍKAZ_ČASOVÝ_LIMITPredvolená hodnota je 10 (sekúnd), ale môžete ju nastaviť podľa vlastného uváženia.
sudo nano /usr/share/undistract-me/long-running.bash
# Busca y ajusta:
# LONG_RUNNING_COMMAND_TIMEOUT=10
Ak chcete určité príkazy nikdy nespúšťať upozornenie, pridá ich názvy oddelené medzerami k premennej DLHO BEŽIACI_ZOZNAM_IGNOROVANÝCHJe to užitočné na filtrovanie nástrojov, ktoré používate neustále a nechcete, aby vás rušili.
Na druhej strane, ak chcete dostávať upozornenia, aj keď je terminál aktívnym oknom, definujte IGNORE_WINDOW_CHECK=1Týmto sa deaktivuje kontrola a vždy Upozornenie sa zobrazí na konci dlhého príkazu.
Ak chcete pridať zvukové upozornenie, upravte premennú UDM_PLAY_SOUND na nenulové celé číslo. V systémoch Debian/Ubuntu táto funkcia vyžaduje nainštalovaný pulzné audio nástroje y zvukovo-tematicky uvoľnená pracovná plocha, keďže sa spolieha na tému zvukov pracovnej plochy.
sudo apt install pulseaudio-utils sound-theme-freedesktop
Po akýchkoľvek zmenách v konfiguračnom súbore alebo premenných prostredia nezabudnite dobiť si škrupinu:
source ~/.bashrc
# o
source ~/.zshrc
Rýchle testy na overenie funkčnosti
Najjednoduchší spôsob, ako to overiť, je spustiť príkaz, ktorý trvá dlhšie ako 10 sekúnd (alebo prahovú hodnotu, ktorú ste nastavili). Môžete napríklad urobiť ping k hostiteľovi vo vašej sieti alebo von s dostatočným počtom paketov na prekročenie časového limitu.
ping -c 25 1.1.1.1
V prostredí Archu je tiež veľmi vizuálne prehľadné použiť príkaz ako sudo pacman -Syčo zvyčajne trvá nejaký čas v závislosti od stavu zrkadiel:
sudo pacman -Sy
Pamätajte na dve kľúčové veci: upozornenie sa zobrazí, keď príkaz trvá dlhšie ako prahová hodnota a štandardne iba vtedy, ak aktívne okno nie je terminál kde sa spúšťa. Ak sa proces dokončí pred uplynutím časového limitu, nezobrazí sa vám správa; ak ju stále chcete dostávať, upravte hodnotu DLHO BEŽIACI_PRÍKAZ_ČASOVÝ_LIMIT alebo zakázať kontrolu okien pomocou IGNORE_WINDOW_CHECK.
Rýchle alternatívy bez nutnosti inštalácie čohokoľvek navyše
Hoci je Undistract-me veľmi praktický, existujú minimalistické riešenia, ktoré môžete použiť iba vtedy, keď chcete. S upozorniť-poslať (Toto je zvyčajne štandardne zahrnuté v mnohých počítačoch.) Na koniec príkazu môžete pridať upozornenie:
cat archivo && notify-send '¡Terminado!'
Ak uprednostňujete viditeľnejšie dialógové okno, Zenivosť Toto je ďalšia typická možnosť v prostrediach GTK. Použitie je rovnako jednoduché a po dokončení sa zobrazí informačné okno:
cat archivo && zenity --info --text='Proceso finalizado.'
Rýchly trik: namiesto && (ktorý vykoná druhú časť iba v prípade, že prvá uspeje), môžete reťaziť s ; aby sa oznámenie doručilo bez ohľadu na situáciu. Používajte ho opatrne v závislosti od situácie.
Existuje viac alternatív a doplnkov: od nástrojov ako NotiFyre dokonca aj terminály s integrovanými notifikáciami (napríklad Tilix (Môže vás upozorniť, keď je panel neaktívny). Ak chcete extra zvuk a držíte sa základov, možnosťou svojpomocne je reťazenie hlasových pokynov:
foo; spd-say 'tarea completada'
A pre tých, ktorí stále používajú hlasitý odposluch systému, sú tu aj takí, ktorí ho aktivujú. pcspkr s pípnutím po dlhých úlohách. Je to neohrabané, ale efektívne vo veľmi minimalistických prostrediach.
Tipy na používanie a riešenie problémov
Ak nedostávate upozornenia, najprv skontrolujte, či ste povolili túto možnosť „prihlasovací shell“ vo vašom terminálovom emulátore. Bez tohto nastavenia sa Undistract-me nemusí načítať a hook sa nemusí nainštalovať.
Tiež skontrolujte, či váš shell číta správny súbor (~ / .bashrc o ~ / .zshrca čo si urobil/a zdroj Po úprave pridajte ladící riadok (napríklad minúť) na potvrdenie, že súbor sa spustí pri spustení terminálovej relácie.
Ak zapnete zvuk a nič nepočujete, skontrolujte prítomnosť pulzné audio nástroje a z balíka zvukovo-tematicky uvoľnená pracovná plochaOkrem hlasitosti a zvukového servera vo vašej relácii. Na veľmi minimalistických počítačoch môže byť potrebné spustiť PulseAudio manuálne alebo použiť iný backend.
Príliš veľa upozornení na triviálne príkazy? Upravte DLHO BEŽIACI_PRÍKAZ_ČASOVÝ_LIMIT na vyššiu hodnotu a naplňte DLHO BEŽIACI_ZOZNAM_IGNOROVANÝCH s aliasmi a nástrojmi, ktoré nechcete monitorovať (napríklad git status o docker ps ak ich veľa opakujete).
Detaily projektu a komunity
Kód Undistract-me je distribuovaný pod Expat licencia a nachádza sa na Launchpade aj GitHube. Nemá vyhradený IRC kanál, hoci tradične bolo možné ho nájsť na GitHube. Celkom v ekosystéme freenode (kedysi, v #ubuntu-vývoj). V prípade otázok alebo chýb je príslušným kanálom otázky z repozitára alebo projektu na Launchpade.
Zaujímavá zmienka pre tých, ktorí si užívajú vnútorné fungovanie ozubených kolies: podpora predvýkon Typ Zsh v jazyku Bash nie je natívny, takže skript používa hacknúť Inteligentný systém, ktorý spúšťa funkcie pred a po každom príkaze. Vďaka príspevkom, ako sú tie od Chris Jones (z terminálu) terminator) a optimalizácie Mikey Neuling y Stephen RothwellVýkon sa v porovnaní s prvými verziami výrazne zlepšil.
Pri každodennom používaní sa tento nástroj obzvlášť dobre hodí pri kompilácii, konverzii multimediálnesynchronizujete veľké množstvo údajov alebo vykonávate operácie parcela Trvá to nejaký čas. Vzor je vždy rovnaký: spustiť príkaz, prepnúť okná a nechať pracovnú plochu upozorniť vás na jeho dokončenie.
Undistract-me spĺňa presne to, čo sľubuje: menej času stráveného pozeraním do konzoly a viac sa sústrediť na to, čo robíte. Ľahko sa inštaluje, dá sa doladiť pomocou niekoľkých premenných a dobre sa integruje s Bash a Zsh, vďaka čomu je nevyhnutnosťou pre tých z nás, ktorí trávia polovicu svojho života v termináli.