J'exécute de temps en temps des scripts python dont l'exécution est assez longue.
Je les exécute comme ceci: $ time python MyScript.py
Comment puis-je jouer un son dès que l'exécution du script est terminée?
J'utilise Ubuntu 10.10 (bureau Gnome).
Ajoutez n'importe quelle commande qui joue un son; cela pourrait être aussi simple que
$ time mycommand; printf '\7'
ou aussi complexe que
$ time mycommand && paplay itworked.ogg || paplay bombed.ogg
(Les commandes supposent que pulseaudio est installé; remplacez votre lecteur audio, qui dépendra de votre environnement de bureau.)
spd-say
sleep 2; spd-say 'get back to work'
Boucle infinie avec -w
si vous avez besoin de motivation supplémentaire:
sleep 2; while true; do spd-say -w 'get back to work'; done
Pré-installé le 14.04 via le package speech-dispatcher
: http://releases.ubuntu.com/trusty/ubuntu-14.04.4-desktop-AMD64.manifest pour les aveugles je suppose?
Ajoutez également une fenêtre contextuelle
Ce combo est un épargnant de vie (b
signifie beep
):
b() ( spd-say 'done'; zenity --info --text "$(date);$(pwd)" & )
et alors:
super-slow-command;b
Si je suis quelque part dans la pièce, je vais l'entendre et je sais que le long travail est terminé.
Sinon, je verrai la fenêtre lorsque je reviendrai sur mon ordinateur.
Connexes: https://stackoverflow.com/questions/7035/how-to-show-a-gui-message-box-from-a-bash-script-in-linux
Choisissez simplement un son sur votre disque dur et exécutez une commande pour le jouer juste après la commande que vous attendez; ils se produiront séquentiellement:
$ time python MyScript.py; mplayer ~/ScriptDone.wav
(Vous pouvez naturellement utiliser n'importe quel lecteur). J'ai un script appelé alertdone
qui joue un ton et affiche une alerte libnotify lors de son exécution; Je l'utilise pour exactement cette occasion:
$ time python MyScript.py; alertdone "Done timing"
C'est vraiment simple, donc si vous voulez créer le vôtre, vous pouvez le baser dessus (le mien nécessite notify-more
, mplayer
et ~/tones/alert_1.wav
bien que):
#!/bin/bash
message=${1:-"Finished working"}
notify-more -t 10000 -i /usr/share/icons/gnome/32x32/actions/insert-object.png "Process Finished" "$message"
mplayer ~/tones/alert_1.wav
time python MyScript.py; play /path/so/sound.ogg
play
est un lecteur de son très basique (sans interface utilisateur) du paquet soxInstallez sox http://bit.ly/software-small . Vous pouvez le remplacer par n'importe quel autre lecteur audio piloté par ligne de commande.
Vous pouvez également faire en sorte que cela se produise automatiquement.
Je vais vous montrer comment dans zsh
, puis ajouter des informations sur bash
.
L'essence ressemble à ceci:
preexec()
{
starttime=$SECONDS
}
precmd()
{
if ((SECONDS - starttime >= 5)); then
aplay "sound.wav"
# or printf "\b", or notify-send, or whatever
fi
}
Vous pouvez également le faire uniquement si le programme était en Python, par ex.
preexec()
{
starttime=$SECONDS
case $3 in python*)
command_is_python=true;;
*)
command_is_python=false;;
esac
}
precmd()
{
if $command_is_python && ((SECONDS - starttime >= 5)); then
aplay "sound.wav"
# or printf "\b", or notify-send, or whatever
fi
}
Dans bash
, la meilleure façon est de télécharger preexec.bash.txt et de le source (par exemple . ~/preexec.bash.txt
en haut de votre ~/.bashrc
, alors ce qui précède (ou quelque chose de proche) devrait fonctionner. (Je ne suis pas sûr de la $3
bit pour vérifier si la commande est Python.)
Si vous utilisez GNOME Terminal, je voudrais également vous indiquer Flashing GNOME Terminal . C'est un patch que j'ai écrit qui fait clignoter le terminal lorsqu'une commande est exécutée, vous pouvez donc Alt-Tab à autre chose, puis il vous permet de savoir quand c'est fait.
Vous n'avez pas besoin d'ajouter une commande à tout, vous pouvez réellement utiliser un script, qui le fait automatiquement pour vous. Il s'appelle ndistract-me et il est disponible sur Github.
exemple
Sudo apt install undistract-me #installs the script (on Debian)
echo 'source /etc/profile.d/undistract-me.sh' >> ~/.bashrc #adds auto-enable to your console
echo 'export LONG_RUNNING_COMMAND_TIMEOUT=XXX' >> ~/.bashrc #where XXX is number of seconds when the command is long enough to alert you
echo 'export UDM_PLAY_SOUND=1' >> ~/.bashrc #to enable sound alert
commencez maintenant un nouveau bash et vous êtes prêt. Le son et l'alerte peuvent être modifiés en modifiant le script.