Undistract-me, receba uma notificação ao finalizar um comando no Terminal

Notificação ao finalizar um comando no terminal
Notificação ao finalizar um comando no terminal

Neste artigo vamos mostrar um utilitário chamado Undistract-me. Este script mostra um aviso quando os comandos que estamos executando no terminal forem concluídos. Isso pode ser útil quando, após a execução de um comando, começamos a trabalhar em outra coisa. Com isso, não precisamos verificar constantemente o terminal para ver se o comando foi concluído ou não. O utilitário Undistract-me avisará quando um comando de longa duração for concluído. Ele funciona no Arch Linux, Debian, Ubuntu e outros derivados.
O script mostra um aviso na área de trabalho quando os comandos de longa duração terminam, possibilitando que dediquemos nosso tempo a algo mais do que olhar para o terminal enquanto os comandos são executados.

Instalar o Undistract-me

O Undistract-me está disponível nos repositórios Debian padrão e suas variantes, como o Ubuntu. Testei-o no Ubuntu 17.10. Todo aquele que quiser ver o código-fonte deste script no GitHub do projeto.
Para adicioná-lo ao seu sistema, tudo o que você precisa fazer é executar o seguinte comando no terminal (Ctrl + Alt + T) para instalá-lo:

sudo apt install undistract-me

Quando a instalação terminar, no mesmo terminal, execute o seguinte comando para adicionar “undistract-me” ao seu Bash:

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

Alternativamente, você pode executar este comando para adicioná-lo ao seu Bash:

echo "source /usr/share/undistract-me/long-running.bash\nnotify_when_long_running_commands_finish_install" >> .bashrc

Finalmente, atualize as alterações executadas no mesmo terminal:

source ~/.bashrc

Configurando o Undistract-me

Alterar o tempo para notificação

Por padrão, o Undistract-me considerará qualquer comando que leve mais de 10 segundos para ser concluído como um comando de longa duração. Mas isso pode ser alterado. Podemos alterar esse intervalo de tempo editando o arquivo /usr/share/undistract-me/long-running.bash.

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

Dentro do arquivo, teremos que encontrar a variável “LONG_RUNNING_COMMAND_TIMEOUT” e alterar o valor padrão (10 segundos) para outro valor de sua escolha. Em seguida, salve e feche o arquivo. Não esqueça de atualizar as alterações executando o comando:

source ~/.bashrc

Ativar / Desativar notificações para comandos específicos

Além disso, podemos desativar notificações para comandos específicos. Para isso, temos que procurar a variável “LONG_RUNNING_IGNORE_LIST” e adicionar os comandos que serão ignorados.

Ativar / Desativar verificação de janela ativa

Por padrão, a notificação só será exibida se a janela ativa não for a janela em que o comando for executado. Isso significa que só receberemos a notificação se o comando estiver sendo executado na janela de fundo. Se o comando for executado na janela ativa, a notificação não será exibida. Se quisermos que essa distinção não seja feita, podemos configurar o IGNORE_WINDOW_CHECK. Selecionamos 1 para desativar a verificação da janela.

Ativar notificação de áudio

A outra característica interessante do Undistract-me é que você pode configurar a notificação de áudio junto com a notificação visual quando um comando é concluído. Por padrão, ele só enviará uma notificação visual. Você pode alterar esse comportamento configurando a variável UDM_PLAY_SOUND para um número inteiro diferente de zero na linha. No entanto, nosso sistema Ubuntu deve ter os utilitários pulseaudio-utils e sound-theme-freedesktop instalados para habilitar esta funcionalidade.
Lembre-se de que você deve executar o seguinte comando após realizar as alterações:

source ~/.bashrc

Testando o Undistract-me

É hora de verificar se isso realmente funciona e veremos se a notificação é mostrada quando os comandos do terminal de longa duração estão completos. Agora, execute qualquer comando que demore mais de 10 segundos ou o período de tempo que você definiu na configuração do Undistract-me.
Para este exemplo, eu simplesmente fiz um ping para um dos roteadores na minha rede um certo número de vezes. Este comando levou cerca de 25 segundos para ser concluído. Depois de completar o comando, recebi uma notificação na área de trabalho.

ping -c 30 IP_NA_REDE

Caso tenha definido um tempo maior para a notificação, você pode alterar o 30 por um número maior.
 
Para ficar por dentro de todos os lançamentos do SempreUpdate, siga nosso grupo no Telegram.