Jei kada nors terminale vykdėte komandą, kuri užtrunka, o tada pradėjote daryti ką nors kita, žinote, kaip lengva prarasti laiko nuovoką. Nesiblaškyk-man Daugiau nereikės kas kelias minutes grįžti į konsolę ir patikrinti, ar viskas baigta: įrankis darbalaukyje rodo pranešimą, kai ilgai vykdoma komanda baigia vykdyti.
Šis mažas scenarijus veikia „Debian“, „Ubuntu“ ir jų išvestinės versijos, taip pat „Arch Linux“Pagal numatytuosius nustatymus bet kurią komandą, kurios vykdymas trunka ilgiau nei 10 sekundžių, jis laiko „ilgai veikiančia“ ir, jei jos nepakeisite, įspės tik tuo atveju, jei aktyvus langas nėra terminalas, kuriame vykdomas procesas, būtent tam, kad būtų išvengta nereikalingo dėmesio blaškymo, kai jau žiūrite į tą langą.
Kas yra „Undistract-me“ ir kaip ji veikia?
„Undistract-me“ iš esmės yra apvalkalo funkcijų rinkinys, kuris prisijungia prie „Bash“ vykdymo ciklo (ir taip pat gali integruoti į Zshaptikti komandos pradžią ir pabaigą. Kai vykdymo laikas viršija konfigūruojamą ribą, suaktyvinamas darbalaukio pranešimas ir, jei pageidaujate, Garsas įspėjimas.
Pagal dizainą scenarijus apibrėžia a numatytasis 10 sekundžių skirtasis laikas nuo kurios komanda laikoma „ilgąja“. Šią reikšmę galima modifikuoti, taip pat galima sukurti išimčių sąrašą su komandų pavadinimais, kurie neturėtų generuoti įspėjimų (pavyzdžiui, ls o cd Jei juos pritaikėte, kartais tai užtrunka.
Kitas svarbus jo veikimo aspektas yra aktyvus lango patikrinimas: Pranešimas rodomas tik tuo atveju, jei terminalas nėra priekiniame plane.Jei vis tiek norite gauti pranešimus, yra aplinkos kintamasis, kuris gali pakeisti šį elgesį.
Projektas yra atvirojo kodo, o jo kodas publikuojamas pagal licenciją. emigrantasIstoriškai kūrimą inicijavo jml, o jis talpinamas tokiose platformose kaip „Launchpad“ ir „GitHub“. Po gaubtu naudojamas gerai žinomas „įsilaužimas“ priešvykdymas Bashui (įkvėptas darbo Glifas Lefkowitzir gavo įnašų iš tokių žmonių kaip Chrisas Jonesas (Terminatorius), Mikey Neuling y Stephenas Rothwellas, o tai pagerino jų našumą ir kokybę.

Diegimas „Debian“, „Ubuntu“ ir išvestinėse sistemose
Tiesiausias kelias sistemose „Debian“ / „Ubuntu“ Tai atliekama per standartines saugyklas. Tiesiog įdiekite paketą ir galėsite jį susieti su savo apvalkalu.
sudo apt update
sudo apt install undistract-me
Labai senose „Ubuntu“ versijose buvo specialus PPA, jei dirbate su senesnėmis aplinkomis, kuriose linkęs Šis atnaujintas paketas nepasiekiamas:
sudo add-apt-repository ppa:undistract-me-packagers/daily
sudo apt update
sudo apt install undistract-me
Įdiegę skriptą, turite jį „prijungti“ prie savo apvalkalo. „Bash“ kalboje turite keletą parinkčių. Paprasčiausias variantas prideda eilutę automatinis krovimas į paleidimo failą:
echo 'source /etc/profile.d/undistract-me.sh' >> ~/.bashrc
Jei pageidaujate pagrindinio komponento ir kabliuko diegimo programos įdiegimo, galite parašyti ir dvi eilutes savo ~ / .bashrc šiuo būdu:
echo "source /usr/share/undistract-me/long-running.bash
notify_when_long_running_commands_finish_install" >> ~/.bashrc
Ir nepamirškite atnaujinti apvalkalo sesijos, kad pakeitimai būtų pritaikyti naudojant Šaltinis pakeitus paleisties failus.
source ~/.bashrc
Diegimas „Arch Linux“ ir išvestinėse versijose (AUR)
„Arch“ ekosistemoje „Undistract-me“ galima įsigyti AUR (paprastai variante neatsiplėšti-aš-gitGalite jį kompiliuoti naudodami savo mėgstamą AUR pagalbininką arba rankiniu būdu su makepkgKaip pavyzdį, pateikiamos šios įprastos komandos, skirtos pagalbininkai su kuo daugelis vartotojų yra susipažinę:
pacaur -S undistract-me-git
packer -S undistract-me-git
yaourt -S undistract-me-git
Turėkite omenyje, kad kai kurie iš šių pagalbininkų yra pasenę, tačiau jie iliustruoja, kad diegimas atliekamas iš bendruomenės saugyklos. Bet kuriuo atveju, įdiegus, aktyvacija Jūsų apvalkalui tai daroma kaip Debian/Ubuntu: pridedant atitinkamas eilutes prie paleidimo failo.
Aktyvinimas ir naudojimas su Bash ir Zsh
Be aukščiau pateiktų variantų, „Bash“ kalboje yra kompaktiškas blokas, kurį galite įtraukti pabaigoje. ~ / .bashrc kad scenarijus būtų įkeltas tinkamu laiku:
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
Zsh kalboje integracija atliekama panašiai, nukreipiant tas pačias eilutes į failą ~ / .zshrcGalite viską išmesti iš karto naudodami šią komandą:
echo "source /usr/share/undistract-me/long-running.bash
notify_when_long_running_commands_finish_install" >> ~/.zshrc
Redagavus bet kurį iš šių failų, perkrauti konfigūraciją iš dabartinio apvalkalo, kad pakeitimai įsigaliotų neatsijungiant.
source ~/.bashrc
# o bien para Zsh
env zsh -l
# alternativamente
a source ~/.zshrc
Svarbu: daugelyje terminalo emuliatorių reikės įjungti šią parinktį „Vykdyti komandą kaip prisijungimo apvalkalą“. Į GNOME terminalas Tai yra Profilio nuostatose > Pavadinimas ir komanda; XFCE terminalas Jį rasite skiltyje „Nuostatos“ > „Bendra“ ir Guake Jis yra skiltyje „Nuostatos“ > „Bendra“. Be jo kabliukas gali neužsikrauti tinkamai.

Nustatymai: laikas, išimtys, aktyvus langas ir garsas
„Undistract-me“ daugiausia valdomas iš failo /usr/share/undistract-me/long-running.bash ir per aplinkos kintamuosius. Galite atidaryti tą failą naudodami mėgstamą redaktorių ir peržiūrėti galimus parametrus.
Norėdami pakeisti minimalų laiką, po kurio komanda laikoma „ilga“, suraskite kintamąjį ILGAS_VEIKIMO_KOMANDOS_LAIKASNumatytoji reikšmė yra 10 (sekundės), bet galite ją nustatyti pagal savo poreikius.
sudo nano /usr/share/undistract-me/long-running.bash
# Busca y ajusta:
# LONG_RUNNING_COMMAND_TIMEOUT=10
Jei norite tam tikrų komandų niekada neaktyvuoti pranešimo, prideda jų tarpais atskirtus pavadinimus prie kintamojo ILGAI VEIKIANČIŲ_IGNORE_SĄRAŠŲTai naudinga norint filtruoti nuolat naudojamas programas, kurių nenorite, kad jos jus trukdytų.
Kita vertus, jei norite gauti pranešimus net tada, kai terminalas yra aktyvus langas, apibrėžkite IGNORE_WINDOW_CHECK=1Tai išjungia patikrinimą ir visada Įspėjimą pamatysite ilgos komandos pabaigoje.
Norėdami pridėti garsinį įspėjimą, pakoreguokite kintamąjį UDM_PLAY_SOUND į ne nulinį sveikąjį skaičių. Debian/Ubuntu sistemose šiai funkcijai reikalinga įdiegta pulseaudio-utils y „sound-theme-freedesktop“, nes ji remiasi darbalaukio garsų tema.
sudo apt install pulseaudio-utils sound-theme-freedesktop
Atlikę bet kokius konfigūracijos failo ar aplinkos kintamųjų pakeitimus, nepamirškite įkraukite savo apvalkalą:
source ~/.bashrc
# o
source ~/.zshrc
Greiti testai, siekiant patikrinti, ar veikia
Paprasčiausias būdas tai patikrinti – paleisti komandą, kuri užtrunka ilgiau nei 10 sekundžių (arba jūsų nustatytą ribą). Pavyzdžiui, galite atlikti zvimbimas į jūsų tinklo pagrindinį kompiuterį arba į išorinį kompiuterį su pakankamu paketų skaičiumi, kad būtų viršytas laiko limitas.
ping -c 25 1.1.1.1
„Arch“ aplinkose taip pat labai vizualiai atrodo naudoti tokią komandą kaip sudo pacman -Sykuris paprastai užtrunka, priklausomai nuo veidrodėlių būklės:
sudo pacman -Sy
Atminkite du svarbius dalykus: pranešimas rodomas, kai komandos vykdymas užtruko ilgiau nei nustatyta riba, ir, pagal numatytuosius nustatymus, tik jei aktyvus langas nėra terminalas kur jis vykdomas. Jei procesas baigsis prieš skirtą laiką, nematysite pranešimo; jei vis tiek norite jį gauti, pakoreguokite reikšmę ILGAS_VEIKIMO_KOMANDOS_LAIKAS arba išjungti langų tikrinimą su IGNORE_WINDOW_CHECK.
Greitos alternatyvos be jokių papildomų diegimų
Nors „Undistract-me“ yra labai patogus, yra minimalistinių sprendimų, kuriuos galite naudoti tik tada, kai norite. pranešti-siųsti (Daugelyje darbalaukio versijų tai paprastai įtraukta pagal numatytuosius nustatymus.) Komandos pabaigoje galite pridėti įspėjimą:
cat archivo && notify-send '¡Terminado!'
Jei pageidaujate labiau matomo dialogo lango, zenity Tai dar viena tipinė parinktis GTK aplinkose. Naudojimo schema yra tokia pat paprasta, o užbaigus procesą rodomas informacijos langas:
cat archivo && zenity --info --text='Proceso finalizado.'
Greitas triukas: vietoj && (kuri antrąją dalį vykdo tik tuo atveju, jei pirmoji pavyksta), galite sujungti su ; kad pranešimas būtų išsiųstas bet kokiu atveju. Naudokite jį atsargiai, atsižvelgdami į situaciją.
Yra daugiau alternatyvų ir priedų: nuo tokių įrankių kaip NotiFyre net terminalai su integruotais pranešimais (pavyzdžiui, Tiliksas (Jis gali pranešti, kai skydelis neaktyvus). Jei norite papildomo garso ir laikotės pagrindų, galite patys sukurti balso komandą:
foo; spd-say 'tarea completada'
Ir tiems, kurie vis dar naudoja sistemos garsiakalbį, yra tokių, kurie jį įjungia vnt. su pyptelėjimu po ilgų užduočių. Tai nepatogu, bet veiksminga labai minimalistinėje aplinkoje.
Naudojimo ir trikčių šalinimo patarimai
Jei negaunate pranešimų, pirmiausia patikrinkite, ar įjungėte šią parinktį „prisijungimo apvalkalas“ terminalo emuliatoriuje. Be šio nustatymo „Undistract-me“ gali neįsikrauti ir neįdiegti prievado.
Taip pat patikrinkite, ar jūsų apvalkalas skaito teisingą failą (~ / .bashrc o ~ / .zshrcir ką tu padarei? Šaltinis Po redagavimo pridėkite derinimo eilutę (pvz., praleisti), kad patvirtintumėte, jog failas vykdomas prasidėjus terminalo sesijai.
Jei įjungus garsą nieko negirdite, patikrinkite, ar nėra pulseaudio-utils ir iš pakuotės „sound-theme-freedesktop“Be garsumo ir garso serverio jūsų sesijoje. Labai minimalistiniuose darbalaukiuose gali tekti paleisti „PulseAudio“ rankiniu būdu arba naudoti kitą posistemę.
Per daug pranešimų apie nereikšmingas komandas? Pakoreguokite ILGAS_VEIKIMO_KOMANDOS_LAIKAS iki didesnės vertės ir užpildykite ILGAI VEIKIANČIŲ_IGNORE_SĄRAŠŲ su slapyvardžiais ir įrankiais, kurių nenorite stebėti (pavyzdžiui, git statusas o docker ps jei juos daug kartosite).
Projekto ir bendruomenės informacija
„Undistract-me“ kodas platinamas pagal Užsieniečio licencija ir buvo prieinamas tiek „Launchpad“, tiek „GitHub“. Jis neturi atskiro IRC kanalo, nors tradiciškai jį buvo galima rasti „GitHub“. jml ekosistemoje laisvasis mazgas (anais laikais, #ubuntu-devel). Kilus klausimams ar klaidoms, tinkamas kanalas yra klausimai iš saugyklos arba projekto „Launchpad“ programoje.
Įdomus paminėjimas tiems, kam patinka krumpliaračių veikimas: palaikymas priešvykdymas „Zsh“ tipas „Bash“ kalboje nėra gimtoji vieta, todėl scenarijus naudoja nulaužti Išmanioji sistema, kuri suaktyvina funkcijas prieš kiekvieną komandą ir po jos. Dėka tokių indėlių kaip Chrisas Jonesas (iš terminalo) Terminatorius) ir optimizavimas Mikey Neuling y Stephenas RothwellasNašumas gerokai pagerėjo, palyginti su pirmosiomis versijomis.
Kasdieniam naudojimui šis įrankis ypač gerai tinka kompiliuojant, konvertuojant daugialypė terpė, sinchronizuojate didelius duomenų kiekius arba atliekate operacijas siuntinys Jie užtrunka. Modelis visada tas pats: paleiskite komandą, perjunkite langus ir leiskite darbalaukiui pranešti, kai jis bus baigtas.
„Undistract-me“ išpildo būtent tai, ką žada: mažiau laiko žiūrint į konsolę ir daugiau dėmesio skirti tam, ką darote. Jį lengva įdiegti, galima tiksliai suderinti kelis kintamuosius ir jis gerai integruojasi su „Bash“ ir „Zsh“, todėl tai būtinas pirkinys tiems iš mūsų, kurie pusę savo gyvenimo praleidžia terminale.