Alerta quando o programa do terminal termina de funcionar? [duplicado]

15

Estou executando o Xubuntu 15.04, mas talvez essa questão tenha uma solução geral para todos os tipos de Ubuntu.

Geralmente deixo computações longas em execução em uma janela de terminal, o que pode levar de alguns minutos a horas ou dias. Seria bom se eu pudesse ser alertado de alguma forma quando um terminal terminar de executar um comando. Isso só deve ser necessário para terminais que são minimizados.

Existe uma maneira de configurar algo assim? Idealmente, a janela do terminal pode piscar, ou talvez uma notificação seja exibida.

    
por becko 04.08.2015 / 22:25

4 respostas

20

Existem algumas maneiras, ambas com o operador && (AND lógico) (que é executado somente quando o último comando é bem-sucedido). Se você deseja executar uma notificação, independentemente de o comando ter sido bem-sucedido ou ter falhado, use semicolon ; em vez de && .

  1. Gráfica

    myscript.sh && notify-send 'DONE'
    
  2. Áudio:

    myscript.sh && aplay /usr/share/sounds/speech-dispatcher/test.wav
    

    Note que você pode usar qualquer arquivo de áudio em vez daquele que eu usei aqui.

  3. Ambos:

     myscript.sh && aplay /usr/share/sounds/speech-dispatcher/test.wav && notify-send 'DONE !'
    
por Sergiy Kolodyazhnyy 04.08.2015 / 22:36
8

Você pode usar zenity para exibir um pop-up.

Após o comando shell, anexe

&& zenity --info --text "STRING"
    
por Bacon 04.08.2015 / 22:32
3

Sugiro usar o notify-send da libnotify para notificações. Eu criei o seguinte script para fazer isso:

#!/bin/bash
 && \
notify-send -u critical -i info 'Command execution finished' "The command '' terminated successfully" || \
notify-send -u critical 'Command execution failed' "The command '' exited with errors"

Se você salvar o script acima em um arquivo chamado, por exemplo, nexec e torná-lo executável usando chmod +x nexec e mover o programa para um diretório na variável shells PATH , (por exemplo, /usr/local/bin/ ), você pode executar qualquer comando com

nexec 'long-time-command some arguments'

Por exemplo,

nexec 'sudo apt-get update && apt-get dist-upgrade'

O libnotify irá (pelo menos no meu sistema, eu suponho que isso pode diferir entre desktops diferentes) exibir notificações marcadas como 'críticas' até que elas sejam descartadas manualmente (por exemplo, clicando nelas). Como você pode tirar do código, você receberá uma notificação diferente se o comando retornar um resultado diferente de zero.

    
por s3lph 04.08.2015 / 22:42
2

Você já ouviu falar de undistract-me ? Parece que ele atende às suas necessidades e seu código está no github .

Eu acho que o pacote está nos repositórios oficiais do Ubuntu, então deve ser suficiente

sudo apt-get install undistract-me

então você tem que fechar e reabrir qualquer terminal que você tenha, apenas para permitir que as mudanças entrem em vigor e você possa testá-lo com um simples

sleep 11

Lembre-se de alterar sua janela ativa. Caso contrário, você não verá nenhuma notificação.

    
por MaxChinni 04.08.2015 / 23:24