Как запустить bootinfoscript из GParted liveCD?

TL; DR

Чтобы воспроизвести звук после завершения команды:

long-running-command; sn3

(где sn3 - номер звука 3) поместите это в .bashrc:

sound() {
  # plays sounds in sequence and waits for them to finish
  for s in $@; do
    paplay $s
  done
}
sn1() {
  sound /usr/share/sounds/ubuntu/stereo/dialog-information.ogg
}
sn2() {
  sound /usr/share/sounds/freedesktop/stereo/complete.oga
}
sn3() {
  sound /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}

Или читайте ниже для получения дополнительных опций:

Различные звуки при ошибке и успехе

Вот что я использую именно для того, что вы просите - с одной разницей : он не только воспроизводит звук, когда команда заканчивается, но и воспроизводит другой звук при успехе и ошибке. (Но вы можете изменить его, если вам это не нравится.)

У меня есть функция Bash под названием oks, которую я использую в конце длинных команд:

make && make test && make install; oks

Он воспроизводит звук и отображает OK или ERROR (с кодом ошибки), когда предыдущая команда заканчивается.

Исходный код

Вот эта функция с двумя помощниками:

sound() {
  # plays sounds in sequence and waits for them to finish
  for s in $@; do
    paplay $s
  done
}
soundbg() {
  # plays all sounds at the same time in the background
  for s in $@; do
    # you may need to change 0 to 1 or something else:
    pacmd play-file $s 0 >/dev/null
  done
}
oks() {
  # like ok but with sounds
  s=$?
  sound_ok=/usr/share/sounds/ubuntu/stereo/dialog-information.ogg
  sound_error=/usr/share/sounds/ubuntu/stereo/dialog-warning.ogg
  if [[ $s = 0 ]]; then
    echo OK
    soundbg $sound_ok
  else
    echo ERROR: $s
    soundbg $sound_error
  fi
}

Установка

Вы можете поместить его прямо в ~ / .bashrc или поместить в другой файл, а затем поместите эту строку в свой ~ / .bashrc:

Конфигурация

Измените sound_ok и sound_error на некоторые другие звуки.

Вы можете поэкспериментировать с sound vs. soundbg и сменить sound_ok и sound_error использовать последовательности из многих звуков, которые вам нравятся, чтобы получить нужный результат.

Хорошие звуки

Чтобы найти хорошие звуки в вашей системе, вы можете попробовать:

for i in /usr/share/sounds/*/stereo/*; do echo $i; paplay $i; sleep 1; done

Вот некоторые звуки, которые я часто использую, которые доступны на Ubuntu по умолчанию, которые хороши для уведомлений - sn1 громкий и приятный, sn2 очень громкий и все еще довольно приятный, sn3 - очень громкий и не очень приятный:

sn1() {
  sound /usr/share/sounds/ubuntu/stereo/dialog-information.ogg
}
sn2() {
  sound /usr/share/sounds/freedesktop/stereo/complete.oga
}
sn3() {
  sound /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}

Опять же, вы можете изменить sound на soundbg, если вы хотите воспроизвести его в фоновом режиме, не дожидаясь окончания звука (например,

Тихая версия

И на всякий случай - вот такая же функция, как oks, но без звуков: [ ! d21]

ok() {
  # prints OK or ERROR and exit status of previous command
  s=$?
  if [[ $s = 0 ]]; then
    echo OK
  else
    echo ERROR: $s
  fi
}

Использование

Вот как вы его используете:

Пример с успехом:

ls / && ls /bin && ls /usr; oks

пример с ошибкой: [ ! d25]

ls / && ls /bim && ls /usr; oks

Конечно, на практике команды больше похожи:

make && make test && make install; oks

, но я использовал ls, чтобы вы могли быстро увидеть, как это работает.

[d28 ] Вы можете использовать ok вместо oks для тихой версии.

Или вы можете использовать, например:

ls / && ls /bim && ls /usr; ok; sn1

для печати OK / ERROR, но всегда играть одинаково звук и т. д.

Обновить

Я поместил эти функции в GitHub, см.:

https://github.com/rsp/scripts/blob/master /ok-functions.md

Источник можно загрузить с:

https://github.com/rsp/scripts/blob/master/ok-functions. md

Обновление 2

Я добавил функцию soundloop в вышеупомянутое репо. Он воспроизводит звук и может быть прерван Ctrl + C (в отличие от простого while true; do paplay file.ogg; done, который можно было бы ожидать, но это не так), как задано в комментариях . Это реализовано как:

soundloop() {
  set +m
  a=`date +%s`
  { paplay $1 & } 2>/dev/null
  wait
  b=`date +%s`
  d=$(($b-$a))
  [ $d -eq 0 ] && d=1
  while :; do
    pacmd play-file $1 0 >/dev/null
    sleep $d
  done
}

Если вы считаете это сложным, пожалуйста, направьте свои жалобы разработчикам PulseAudio.

1
задан 10 September 2014 в 19:29

0 ответов

Другие вопросы по тегам:

Похожие вопросы: