beep в терминале

Установка, обновление, настройка Linux

Модераторы: Olej, adminn

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

beep в терминале

Непрочитанное сообщение Olej » 26 янв 2017, 23:15

Очень полезная возможность: выдавать какой-то звуковой сигнал при возникновении какой-то ситуации в скрипте/программе ... например, завершение длительной программы в отдельном терминале.

Делаем так:

Код: Выделить всё

[olej@dell denyhosts]$ sudo modprobe pcspkr
[olej@dell denyhosts]$ lsmod | grep pcspkr
pcspkr                 16384  0
Устанавливаем:

Код: Выделить всё

[olej@dell home]$ sudo dnf install beep
[sudo] пароль для olej: 
Последняя проверка окончания срока действия метаданных: 1:41:24 назад, Thu Jan 26 20:06:05 2017.
Зависимости разрешены.
======================================================================================================================================
 Package                     Архитектура                   Версия                                Репозиторий                    Размер
======================================================================================================================================
Установка:
 beep                        x86_64                        1.3-16.fc23                           updates                         33 k

Результат операции
======================================================================================================================================
Установка  1 Пакет

Объем загрузки: 33 k
Объем изменений: 46 k
Продолжить? [д/Н]: y
Загрузка пакетов:
beep-1.3-16.fc23.x86_64.rpm                                                                            48 kB/s |  33 kB     00:00    
--------------------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                                           16 kB/s |  33 kB     00:02     
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Установка    : beep-1.3-16.fc23.x86_64                                                                                          1/1 
  Проверка     : beep-1.3-16.fc23.x86_64                                                                                          1/1 

Установлено:
  beep.x86_64 1.3-16.fc23                                                                                                             

Выполнено!
И наслаждайтесь :lol: :

Код: Выделить всё

[olej@dell denyhosts]$ echo -e "\a"
[olej@dell denyhosts]$ sudo beep -f 1000 -n -f 2000 -n -f 1500
Детали (как beep использовать без root, как частоту указывать нотной записью C, C#, D, ...):

Код: Выделить всё

[olej@dell denyhosts]$ man beep
...
Как легко можете видеть: любая программа (C, Perl, ...) пишущая ESC-последовательность в стандартный поток вывода SYSOUT, генерирует звуковой сигнал.

Код: Выделить всё

нажатие на клавиатуре ^G
или

Код: Выделить всё

printf( "\a" );

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: beep в терминале

Непрочитанное сообщение Olej » 27 янв 2017, 12:00

Olej писал(а): И наслаждайтесь :lol: :
Утверждается (проверьте?) что всё подобное так же замечательно работает в текстовой консоли (Ctrl+Alt+Fn), без всяког DE и вообще без запущенного X-сервера.
Т.е. это всё непосредственно с звуковой системой (ALSA, PulseAudio ...) не связано.

Я проверил только в текстовой консоли (Ctrl+Alt+F3) параллельно с графической консолью (Ctrl+Alt+F1).
Всё работает.
P.S. Что интересно, так это то, что высота тона звука радикально отличается в GUI терминале и в отдельной текстовой консоли ... при выполнении одной и той же команды:

Код: Выделить всё

[olej@dell Phone]$ echo -e "\a"е 

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: beep в терминале

Непрочитанное сообщение Olej » 13 фев 2017, 14:26

Olej писал(а): Утверждается (проверьте?) что всё подобное так же замечательно работает в текстовой консоли (Ctrl+Alt+Fn), без всяког DE и вообще без запущенного X-сервера.
Но!

Код: Выделить всё

[olej@dell ~]$ lsmod | grep pcspkr
pcspkr                 16384  0
Теперь проделываем в разных терминалах (установленных в одной системе):
- Терминал GNOME 3.18.3 - ОК
- Терминал среды MATE 1.14.1 - ОК
- xfce4-terminal 0.6.3 ... :-o ... звука нет!, т.е. байт-последовательность каким-то образом экранируется.

Но, опять же ... в xfce4-terminal 0.6.3:

Код: Выделить всё

[olej@dell Maxim]$ sudo beep -f 1000 -n -f 2000 -n -f 1500
...
Всё замечательно звучит!
(т.е. действительно байт '\a' каким-то образом терминалом экранируется)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: beep в терминале

Непрочитанное сообщение Olej » 13 фев 2017, 14:37

Olej писал(а): - xfce4-terminal 0.6.3 ... :-o ... звука нет!, т.е. байт-последовательность каким-то образом экранируется.
xf1.png
xf1.png (27.66 КБ) 2457 просмотров
xf2.png
Но!

Код: Выделить всё

[olej@dell Maxim]$ xterm -version
XTerm(318)

Код: Выделить всё

[olej@dell Maxim]$ echo -e '\a'
И всё в Xterm прекрасно звучит! :-o

Это всё может ввести в заблуждение при использовании терминала Xfce. :-o :oops:

Ответить

Вернуться в «Администрирование Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей