it-swarm-id.com

Bagaimana saya bisa memainkan suara ketika eksekusi skrip siap?

Saya mengeksekusi setiap sekarang dan kemudian beberapa script python yang membutuhkan waktu cukup lama untuk dieksekusi.

Saya mengeksekusi mereka seperti ini: $ time python MyScript.py

Bagaimana saya bisa memainkan suara begitu eksekusi skrip dilakukan?

Saya menggunakan Ubuntu 10.10 (Gnome desktop).

47
Martin Thoma

Tambahkan perintah apa pun yang memainkan suara; ini bisa sesederhana

$ time mycommand; printf '\7'

atau serumit

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

(Perintah menganggap pulseaudio diinstal; ganti pemutar suara Anda, yang akan tergantung pada lingkungan desktop Anda.)

42
geekosaur

spd-say

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

Infinite loop dengan -w jika Anda membutuhkan motivasi tambahan:

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

Pra-instal pada 14,04 melalui paket speech-dispatcher: http://releases.ubuntu.com/trusty/ubuntu-14.04.4-desktop-AMD64.manifest untuk orang buta, saya kira?

Juga tambahkan sembulan

Kombo ini adalah penyelamat (b singkatan dari beep):

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

lalu:

super-slow-command;b

Jika saya berada di suatu tempat di dalam ruangan, saya akan mendengarnya dan tahu bahwa pekerjaan yang panjang telah selesai.

Kalau tidak, saya akan melihat popup ketika saya kembali ke komputer saya.

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

Pilih saja suara di hard drive Anda, dan letakkan perintah untuk memutarnya tepat setelah perintah yang Anda tunggu; mereka akan terjadi secara berurutan:

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

(Anda dapat menggunakan pemain mana saja, secara alami). Saya memiliki skrip bernama alertdone yang memainkan nada dan menampilkan peringatan libnotify saat dijalankan; Saya menggunakannya tepat untuk kesempatan ini:

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

Ini sangat sederhana, jadi jika Anda ingin membuatnya sendiri, Anda dapat mendasarkannya pada ini (milik saya memerlukan notify-more, mplayer, dan ~/tones/alert_1.wav meskipun):

#!/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

play adalah pemutar suara yang sangat mendasar (tanpa UI) dari paket soxInstal sox http://bit.ly/software-small . Anda dapat menggantinya dengan pemutar suara yang digerakkan oleh baris perintah lainnya.

Secara pribadi, saya menggunakan my-script && notify-send "done". Ini mengirimkan pemberitahuan desktop, yang pada Linux Mint (Cinnamon) terlihat seperti ini:

enter image description here

5
eeze

Anda juga dapat membuat ini terjadi secara otomatis.

Saya akan menunjukkan caranya pada zsh, lalu tambahkan info tentang bash.

Esensinya terlihat seperti ini:

preexec()
{
    starttime=$SECONDS
}

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

Anda juga dapat membuatnya hanya melakukannya jika programnya adalah Python, mis.

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
}

Di bash, cara terbaik adalah mengunduh preexec.bash.txt dan sumbernya (mis. . ~/preexec.bash.txt di bagian atas ~/.bashrc, maka yang di atas (atau sesuatu yang dekat dengannya) akan berfungsi. (Tidak yakin tentang $3 bit untuk memeriksa apakah perintahnya adalah Python.)

Jika Anda menggunakan Terminal GNOME, saya juga akan mengarahkan Anda ke Memutar Terminal GNOME . Ini adalah tambalan yang saya tulis yang membuat terminal berkedip ketika sebuah perintah selesai, sehingga Anda dapat Alt-Tab untuk sesuatu yang lain, maka itu memberi tahu Anda saat itu selesai.

3
Mikel

Anda tidak perlu menambahkan perintah ke semuanya, Anda sebenarnya bisa menggunakan skrip, yang melakukan ini secara otomatis untuk Anda. Ini disebut ndistract-me dan tersedia di Github.

contoh

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

sekarang mulai bash baru dan Anda siap. Suara dan peringatan dapat diubah dengan memodifikasi skrip.

1
Jakub Lucký