Вопрос или проблема
Я выяснил, что звук “бип” производится только в терминале IntelliJ (более конкретно в RubyMine). Все tput bel
, echo ^G
и echo $'\a'
издают нормальный раздражающий звук. Кроме того, он воспроизводится нормально, если я использую клавишу Backspace, когда строка пуста, или, например, если я использую правую стрелку, когда достигаю конца текста.
Но когда я запускаю приложение Konsole (или Yakuake), оно совершенно тихо.
У меня установлена галочка в опции “Проигрывать звук” для события “Звонок в активной сессии” в меню Konsole > Настройки > Настроить уведомления (на картинке ниже).
Кнопка воспроизведения, видимая на экране ниже, тоже не издает никакого звука.
В приложении Системные настройки
KDE в разделе Доступность
отключите флажок: Использовать системный звонок
Метод Витаса не сработал в моей конфигурации (Kubuntu 20.04). После включения звукового файла в настройках уведомлений Konsole я щелкнул правой кнопкой мыши по значку звука в системном трее, выбрал Настроить громкость аудио
, Аудио
. На вкладке Приложения
ползунок уведомлений был на нуле. Я установил его на 100%; теперь звуки уведомлений слышны.
Также проблема для меня.
Я могу заставить Konsole и Yakuake показать tput bel
, также известный как echo -e '\a'
, также известный как printf '\007'
, также известный как U+0007 BELL, как настроено в “Редактировать текущий профиль”:
— но по какой-то странной причине, это работает только при отправке звонка с одного PTY (вкладка/окно терминала) в другое:
И ничего не происходит в одном PTY (при выводе звука на собственный stdout). Любая причина этому ускользает от меня.
Я пробовал stty imaxbel
& stty -imaxbel
на соответствующих узлах PTY-slave dev; безрезультатно.
.
Ответ или решение
Проблема, описанная в вопросе, относится к различной поведении терминалов в среде KDE, которые ведут себя по-разному при выполнении команды tput bel
или аналогичных команд, запускающих системный звонок. Такое поведение характерно для пользователей, работающих на разнотипных терминалах, таких как Konsole и терминал, встроенный в IntelliJ или RubyMine. Попробуем структурировано разобраться в данной ситуации.
Теория
В Linux системах, системный звонок (bell) реализуется с помощью управляющей последовательности, вызывающей ASCII BEL
(символ Unicode U+0007). Этот сигнал можно сгенерировать с помощью различных команд, таких как echo -e '\a'
, printf '\007'
или tput bel
. Задача состоит в том, чтобы этот звонок вызывал необходимые звуковые или визуальные уведомления в териминале.
На различных терминальных эмуляторах и в различных конфигурациях системы вывод управляющей последовательности BEL может либо сопровождаться звуком, либо не иметь никакой реакции. Это связано с настройками системы и соответствующих приложений. В среде KDE, которая используется автором вопроса, это поведение может изменяться в зависимости от настроек звуковых уведомлений и профилей в Konsole.
Пример
Возьмём ситуацию, описанную пользователем в вопросе. При использовании IntelliJ, вы слышите «beep», а вот Konsole этого не делает, хотя настройки вроде как состоят правильно: включена опция "Play sound" для "Bell in Focused Session". Даже в случае включения звука непосредственно через системные настройки, сигнал не производится. Пользователи также отмечали, что на других сессиях terminal bell работает, однако в текущей – нет.
Применение
В описанной ситуации можно предложить несколько рекомендаций для устранения проблемы:
-
Проверка профиля в Konsole:
- Убедитесь, что текущий профиль Konsole настроен правильно. Убедитесь, что выбрана правильная опция в "Edit current profile" – "Terminal bell mode". Перезапустите терминал после внесения изменений.
-
Настройка звука в системе:
- Проверьте настройки громкости и звуковых уведомлений. Часто проблема может заключаться в том, что для приложений или для системных звуков выставлен нулевой уровень громкости. Откройте "Configure Audio Volume" и во вкладке "Applications" убедитесь, что громкость системы уведомлений установлена на подходящий уровень.
-
Обновление конфигурации:
- Возможно, потребуется обновление или настройка конфигурации системы. Попробуйте перезагрузить сессию KDE или убедитесь, что у вас актуальная версия используемых приложений.
-
Системные настройки KDE:
- Проверьте опцию «Use system bell» в разделе "Accessibility" в системных настройках KDE и попробуйте изменить её состояние.
-
Диагностика межпроцессного взаимодействия:
- Как заметили некоторые пользователи, звук звонка срабатывает при отправке сигнала из одной PTY в другую. Это может указывать на специфическую проблему с обработкой сигналов в текущей сессии или терминале.
Это общее руководство должно помочь в настройке звуковых уведомлений в Konsole. Однако в случае специфичных проблем всегда полезно обращаться к документации и форумам поддержки для более детального и точного решения. Важно понимать, что даже в рамках одной среды проблемы могут иметь различный характер и потребовать индивидуального подхода.