スクリプトの実行準備ができたときに、どのようにサウンドを再生できますか?


44

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

次のように実行します。 $ time python MyScript.py

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

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


bashまたはを使用していますかzsh?実際にこれを自動的に行う方法はいくつかありますが、それらは非常に複雑で、使用しているシェルに依存します。
ミケル

$ echo $ SHELLは "/ bin / bash"を返します
マーティン・トーマ

回答:


39

サウンドを再生するコマンドを追加します。これは次のように簡単です

$ time mycommand; printf '\7'

または

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

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


6
+1 paplayは、おそらく「最新の」Linuxシステムでサウンドを再生するために使用する最適なコマンドです。
ミケル

4
printfの「\ 7」は私のために動作しませんが、私はそれを望んでいたとして、このコマンドは、働いていたtime python MyScript.py -n 40 && paplay /usr/share/sounds/ubuntu/stereo/desktop-login.ogg || paplay /usr/share/sounds/ubuntu/stereo/phone-outgoing-busy.ogg
マーティン・トーマ

printf '\7'私のために動作します(paplayは動作しません;(git shell))が、それはほんの小さなbipです。他の音を出すコードはまだありますか?私が試した\6\8しかし、彼らはいくつかの文字です。
laggingreflex 14

2
@laggingreflexいいえ、\7(BEL)は通常、おそらくサウンドをトリガーする可能性のある唯一のキャラクターです(Wikipediaの記事Control characterを参照)。常に音を出すとは限らないことに注意してください。
ムシフィル14年

3
@laggingreflexこれはおそらくこれ以上必要ないでしょうが、笑いのためだけです;)for i in {1..30}; do for j in {1..3}; do printf '\7'; sleep 0.12; done; sleep 0.4; done
cprn

16

spd-say

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

-w追加のモチベーションが必要な場合の無限ループ:

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

パッケージを介して14.04にプレインストールされていますspeech-dispatcher:視覚障害者向けの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


spd-say関連付けられたツールを取得するには、(Fedora 24)のspeech-dispatcherようなサブパッケージをインストールする必要がある場合がありますspeech-dispatcher-utils
dfarrell07 16

9

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

$ 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

2
notify-moreまたはnotify-send実際にサウンドを再生するための有用な代替手段になる可能性があります。
ミケル

@Mikel私は完全にlibnotifyにはまっています。システム上のすべての通知がポップアップ表示されます
Michael Mrozek

8
time python MyScript.py; play /path/so/sound.ogg

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


うん、playaplay、またはpaplay。(私のUbuntuシステムを持っているaplaypaplay、デフォルトで。)
ミケル

1
time python MyScript.py -n 40; paplay /usr/share/sounds/ubuntu/stereo/desktop-login.ogg働いた、ありがとう。
マーティントーマ

5

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

ここに画像の説明を入力してください


3

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

方法を示して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
}

ではbashpreexec.bash.txtをダウンロードしてソースにする(たとえば. ~/preexec.bash.txt、の上部で~/.bashrc、上記(またはそれに近いもの)が機能するはずです($3コマンドがPythonかどうかを確認するビットがわからない))

GNOMEターミナルを使用している場合は、GNOMEターミナルをフラッシュすることもお勧めします。これは、コマンドが実行されたときにターミナルを点滅させるパッチであるため、Altキーを押しながらTabキーを押すと、完了したことを通知できます。


1

すべてにコマンドを追加する必要はありません。実際にスクリプトを使用できます。これは自動的に実行されます。undistract-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

どのプレーヤーでも使用できます。cvlc完全を期すために追加しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.