Решения тех проблем, с которым мне приходилось сталкиваться.

пятница, 29 октября 2010 г.

Звук по завершении долгой консольной команды

Допустим, нужно выполнить в терминале команду, которая выполняется достаточно долго, чтобы ее дожидаться ничем больше не занимаясь. В тоже время, бывает такая потребность, что как только команда выполнится нужно сделать какое-то следующее действие. Ну и вообще, просто чтобы не забыть, что она вообще там выполняется.
Придумано такое решение. Можно в командной строке указать, что после требуемой команды выполнить еще одну, которая ... подаст звуковой сигнал!
В простейшем случае воспроизвести звук из терминала можно командой beep. Чтобы не спутать звук, с обычным сигналом bell из терминала, в параметрах beep можно указать длительность и частоту звука. Звук будет воспроизведен через встроенный динамик (pc speaker).
Пример:


do_time_consuming_task; beep -f 1000 -l 500 -r 3


upd В xterm обнаружилась интересная функция. Называется PopupOnBell, в простейшем случае активируется при запуске с ключом -pob. В таком режиме, если на терминал выводится символ ASCII BELL (код 0x07 или 8-ричный 007), то окно терминала уведомляет менеджер о наличии активности (точно не знаю как назвать), после чего Desktop Manager, например, Gnome отображает кнопку такого окна на панели задач мигающей (примерно так, как если свернутый Instant Messanger получает новое сообщение).
Соответственно, можно, например, чтобы каждый раз, как shell в терминале получает управление (выводит приглашение) терминал сообщал о активности.

PS1="\\007$PS1"
sleep 5

Если выполнить эти команды, а потом свернуть окно xterm, то через 5 секунд оно замигает в панели задач.

upd #2 Аналогичное решение для gnome-terminal.

Комментариев нет: