KDE каким-то образом отключает звук в Konsole, но терминал IntelliJ воспроизводит звук “бип” нормально.

Вопрос или проблема

Я выяснил, что звук “бип” производится только в терминале IntelliJ (более конкретно в RubyMine). Все tput bel, echo ^G и echo $'\a' издают нормальный раздражающий звук. Кроме того, он воспроизводится нормально, если я использую клавишу Backspace, когда строка пуста, или, например, если я использую правую стрелку, когда достигаю конца текста.
Но когда я запускаю приложение Konsole (или Yakuake), оно совершенно тихо.
У меня установлена галочка в опции “Проигрывать звук” для события “Звонок в активной сессии” в меню Konsole > Настройки > Настроить уведомления (на картинке ниже).
Кнопка воспроизведения, видимая на экране ниже, тоже не издает никакого звука.

Настройки уведомлений — Модуль настроек системы

Этот код воспроизводит звук:
tput bel, используемый в терминале IntelliJ
Этот — нет:
tput bel, используемый в Konsole

В приложении Системные настройки KDE в разделе Доступность отключите флажок: Использовать системный звонок

введите описание изображения здесь

Метод Витаса не сработал в моей конфигурации (Kubuntu 20.04). После включения звукового файла в настройках уведомлений Konsole я щелкнул правой кнопкой мыши по значку звука в системном трее, выбрал Настроить громкость аудио, Аудио. На вкладке Приложения ползунок уведомлений был на нуле. Я установил его на 100%; теперь звуки уведомлений слышны.

Окно настройки громкости аудио

Также проблема для меня.

Я могу заставить Konsole и Yakuake показать tput bel, также известный как echo -e '\a', также известный как printf '\007', также известный как U+0007 BELL, как настроено в “Редактировать текущий профиль”:

скриншот, подчеркивающий опцию "Режим звонка в терминале" в Konsole/Yakuake

— но по какой-то странной причине, это работает только при отправке звонка с одного PTY (вкладка/окно терминала) в другое:

два окна Konsole, показывающие работающие уведомления звонков

И ничего не происходит в одном 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 работает, однако в текущей – нет.

Применение

В описанной ситуации можно предложить несколько рекомендаций для устранения проблемы:

  1. Проверка профиля в Konsole:

    • Убедитесь, что текущий профиль Konsole настроен правильно. Убедитесь, что выбрана правильная опция в "Edit current profile" – "Terminal bell mode". Перезапустите терминал после внесения изменений.
  2. Настройка звука в системе:

    • Проверьте настройки громкости и звуковых уведомлений. Часто проблема может заключаться в том, что для приложений или для системных звуков выставлен нулевой уровень громкости. Откройте "Configure Audio Volume" и во вкладке "Applications" убедитесь, что громкость системы уведомлений установлена на подходящий уровень.
  3. Обновление конфигурации:

    • Возможно, потребуется обновление или настройка конфигурации системы. Попробуйте перезагрузить сессию KDE или убедитесь, что у вас актуальная версия используемых приложений.
  4. Системные настройки KDE:

    • Проверьте опцию «Use system bell» в разделе "Accessibility" в системных настройках KDE и попробуйте изменить её состояние.
  5. Диагностика межпроцессного взаимодействия:

    • Как заметили некоторые пользователи, звук звонка срабатывает при отправке сигнала из одной PTY в другую. Это может указывать на специфическую проблему с обработкой сигналов в текущей сессии или терминале.

Это общее руководство должно помочь в настройке звуковых уведомлений в Konsole. Однако в случае специфичных проблем всегда полезно обращаться к документации и форумам поддержки для более детального и точного решения. Важно понимать, что даже в рамках одной среды проблемы могут иметь различный характер и потребовать индивидуального подхода.

Оцените материал
Добавить комментарий

Капча загружается...