web-dev-qa-db-ja.com

スクリプト実行の準備ができているときにサウンドを再生するにはどうすればよいですか?

私は時々実行していますpythonスクリプトの実行にはかなり時間がかかります。

私はこのようにそれらを実行します:$ time python MyScript.py

スクリプトの実行が完了したらすぐにサウンドを再生するにはどうすればよいですか?

私はUbuntu 10.10(Gnomeデスクトップ)を使用しています。

47
Martin Thoma

サウンドを再生するコマンドを追加します。これは、

$ time mycommand; printf '\7'

または同じくらい複雑

$ time mycommand && paplay itworked.ogg || paplay bombed.ogg

(コマンドでは、pulseaudioがインストールされていることを前提としています。デスクトップ環境に応じて、サウンドプレーヤーを置き換えてください。)

42
geekosaur

spd-say

sleep 2; spd-say 'get back to work'

やる気が必要な場合は、-wを使用した無限ループ:

sleep 2; while true; do spd-say -w 'get back to work'; done

パッケージspeech-dispatcherを介して14.04にプリインストール: http://releases.ubuntu.com/trusty/ubuntu-14.04.4-desktop-AMD64.manifest 視覚障害者向けと思いますか?

また、ポップアップを追加します

このコンボは命の恩人です(bbeepの略です):

b() ( spd-say 'done'; zenity --info --text "$(date);$(pwd)" & )

その後:

super-slow-command;b

部屋のどこかにいると、それを聞いて長い仕事が終わったことがわかります。

そうしないと、コンピューターに戻ったときにポップアップが表示されます。

関連: https://stackoverflow.com/questions/7035/how-to-show-a-gui-message-box-from-a-bash-script-in-linux

ハードドライブからサウンドを選択し、待機しているコマンドの直後に再生するコマンドを入力するだけです。それらは順番に発生します:

$ time python MyScript.py; mplayer ~/ScriptDone.wav

(当然、どのプレーヤーでも使用できます)。 alertdoneというスクリプトがあり、実行時に音を鳴らしてlibnotifyアラートを表示します。私はそれをまさにこの機会に使用します:

$ time python MyScript.py; alertdone "Done timing"

とてもシンプルなので、自分で作成したい場合は、これをベースにすることができます(私の場合はnotify-moremplayer~/tones/alert_1.wavただし):

#!/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
9
Michael Mrozek
time python MyScript.py; play /path/so/sound.ogg

playsoxInstall sox http://bit.ly/software-small パッケージの非常に基本的な(UIなし)サウンドプレーヤーです。他のコマンドライン駆動のサウンドプレーヤーで置き換えることができます。

個人的にはmy-script && notify-send "done"。これによりデスクトップ通知が送信されます。これはLinux Mint(シナモン)では次のようになります。

enter image description here

5
eeze

これを自動的に実行することもできます。

zshでその方法を示し、次にbashに関する情報を追加します。

本質は次のようになります。

preexec()
{
    starttime=$SECONDS
}

precmd()
{
    if ((SECONDS - starttime >= 5)); then
        aplay "sound.wav"
        # or printf "\b", or notify-send, or whatever
    fi
}

プログラムがPythonの場合にのみ実行することもできます。

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
}

bashの場合、最善の方法は preexec.bash.txt をダウンロードして入手することです(例:. ~/preexec.bash.txtの上部にある~/.bashrc、次に上記(またはそれに近いもの)が機能するはずです(コマンドがPythonかどうかを確認するための$3ビットについては不明です)。

GNOMEターミナルを使用している場合は、 Flashing GNOME Terminal も示します。これは私が書いたパッチで、コマンドが実行されたときに端末を点滅させるので、Alt-Tabで別の場所に移動でき、完了したことを通知します。

3
Mikel

すべてにコマンドを追加する必要はありません。実際にスクリプトを使用して、自動的に追加することができます。 ndistract-me と呼ばれ、Githubで入手できます。

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

新しいbashを開始すると、設定が完了します。サウンドとアラートは、スクリプトを変更することで変更できます。

1
Jakub Lucký