PC speaker (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи PC speaker. Дата последней синхронизации: 18 ноября 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Начиная с первых IBM PC, большинство компьютеров имеют встроенный динамик (PC speaker, «пищалка»), который может издавать звуковые сигналы. Этот динамик не способен обеспечить высокое качество звука и лишь используется для обратной связи в виде звуковых сигналов. Некоторые программы, например, веб-браузеры, редакторы и терминалы, могут издавать звуковые сигналы, которые могут как нравиться, так и не нравиться пользователю. Поэтому данная статья описывает, как настроить или даже отключить такие звуковые сигналы.

Для случаев, когда нет звуковой карты или динамиков, и требуется простое аудио оповещение, смотрите раздел #Beep.

Механизм

Динамик ПК обычно представляет собой физическое устройство, подключаемое к разъёму для передней панели на материнской плате. Некоторые производители плат вообще не комплектуют их динамиком, а у некоторых динамик может быть припаян прямо на плате. На ноутбуках обычно нет такого динамика, а звуковой сигнал выводится на обычные внутренние динамики ноутбука. В некоторых случаях звуковой сигнал подаётся на обычный выход (колонки, наушники) звуковой карты и может оказаться неожиданно громким.

Обычно BIOS при загрузке издаёт один короткий звуковой сигнал во время POST. В более современных моделях материнских плат звуковой сигнал POST отсутствует ради более быстрой загрузки в ОС. BIOS обычно позволяет включить или выключить звуковые сигналы POST, но не позволяет полностью отключить встроенный динамик.

После загрузки Linux и модуля ядра pcspkr встроенный динамик может использоваться окружением, вызываться пользователем вручную и в некоторой степени настраиваться. Поскольку он управляется напрямую процессором, а также в силу того, что он предназначен только для воспроизведения звуковых сигналов, его нельзя использовать для воспроизведения аудиофайлов. Но если очень хочется, то можно вместо модуля pcspkr попробовать snd-pcsp-dkmsAUR, который реализует примитивный аудиовывод.

Отключение PC Speaker

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

Физически

После удаления встроенного динамика система не сможет издавать звуковые сигналы. На некоторых платах можно физически отсоединить динамик от неё. Некоторые производители устанавливают джампер для его отключения.

Важно: Убирать встроенный динамик обычно не рекомендуется, поскольку он полезен при диагностике проблем загрузки: он может выдать специальный звуковой сигнал, значение которого можно узнать в документации платы. Вместо этого лучше отключить звуковые сигналы POST в настройках BIOS и внести модуль ядра в чёрный список, как описано ниже. Если вы всё равно хотите убрать его физически, крайне рекомендуется держать его неподалёку на случай, если он понадобится.

Глобально

PC speaker может быть отключен выгрузкой модулей ядра pcspkr и snd_pcsp:

Примечание: Это отключает только PC speaker, а не весь звук в системе.
# rmmod pcspkr
# rmmod snd_pcsp

Помещение в чёрный список модулей pcspkr и snd_pcsp предотвратит их загрузку через udev при загрузке системы. Создайте такой файл:

/etc/modprobe.d/nobeep.conf
blacklist pcspkr
blacklist snd_pcsp

Размещение в чёрном списке в командной строке ядра — ещё один способ добиться похожего эффекта. Просто добавьте module_blacklist=pcspkr,snd_pcsp в параметры ядра в настройках вашего загрузчика.

Терминал

Вы можете добавить эту команду в /etc/profile или в отдельный файл вроде /etc/profile.d/disable-beep.sh:

setterm -blength 0

Другой способ - это раскомментировать или добавить строку в /etc/inputrc или ~/.inputrc:

set bell-style none

Less

Для отключения PC speaker при использовании утилиты less, вы можете запустить её с параметром less -q, чтобы заглушить PC speaker по достижении конца постраничного вывода, или less -Q чтобы отключить повсеместно. Для получения справки, выполните man -P "less -Q" или настройте переменные окружения $MANPAGER или $PAGER.

Также, вы можете добавить следующие строки в ваш .bashrc:

alias less='less -Q'
alias man='man -P "less -Q"'

Xorg

$ xset -b

Можно добавить эту команду в файл запуска, например /etc/xprofile, чтобы сделать её постоянной; смотрите статью xprofile (Русский).

ALSA

Для большинства звуковых карт PC speaker отображается как канал ALSA, и может называться как PC Speaker, PC Beep, или Beep. Чтобы заглушить динамик, воспользуйтесь alsamixer или amixer.

$ amixer set 'PC Speaker' 0% mute

Для включения звука обратитесь к странице руководства Advanced Linux Sound Architecture#Unmuting the channels.

Совет: Если вы используете PulseAudio и канал PC speaker не отображается в устройствах ALSA по умолчанию, попробуйте выбрать устройства соответствующей звуковой карты - прокси-контроль PulseAudio может не отображать PC speaker

GNOME

При использовании GSettings:

$ gsettings set org.gnome.desktop.wm.preferences audible-bell false

KDE Plasma

Настроить звуковые сигналы можно через Параметры системы > Специальные возможности > Сигнал.

Cinnamon

В Cinnamon, похоже, используется звук «падающей капли». Для его отключения измените в gsettings(1):

$ gsettings set org.cinnamon.desktop.wm.preferences audible-bell false

GTK

Добавьте следующую строку в ~/.gtkrc-2.0:

gtk-error-bell = 0

Добавьте такую же строку в секцию [Settings] файла $XDG_CONFIG_HOME/gtk-3.0/settings.ini:

[Settings]
gtk-error-bell = 0

Подробно это рассмотрено в Gnome Developer Handbook.

PulseAudio

В качестве реакции на X11 bell events можно воспроизводить звук через PulseAudio; смотрите PulseAudio (Русский)#Сигналы событий X11.

Beep

Пользователь может запустить короткий звуковой сигнал, когда он работает в виртуальной консоли; смотрите Wikipedia:Bell character#Usage.

Beep - это улучшенная программа для подачи звукового сигнала посредством PC speaker. Она может оказаться востребована в ситуациях, когда звуковая карта отсутствует или нет доступных динамиков, но требуется простое звуковое уведомление.

Установка

Установите пакет beep.

Возможно, вам потребуется включить звук канала PC speaker в ALSA.

Запуск от имени обычного пользователя

Для управления встроенным динамиком beep использует /dev/input/by-path/platform-pcspkr-event-spkr. Чтобы получить к нему доступ как обычный пользователь (не root), нужно задать соответствующие разрешения. Создайте файл /etc/udev/rules.d/70-pcspkr-beep.rules с таким правилом:

ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="PC Speaker", ENV{DEVNAME}!="", TAG+="uaccess"

Это позволит любому пользователю, работающему в активной в данный момент виртуальной консоли, использовать PC speaker.

Другой вариант — создать новую группу пользователей (например, beep) с соответствующим правилом для установки нужных разрешений на файл устройства:

ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="PC Speaker", ENV{DEVNAME}!="", GROUP="beep", MODE="0620"

Тогда любой пользователь, входящий в группу beep, сможет управлять динамиком.

Чтобы принудительно перезагрузить правила и применить новые права без перезагрузки, выполните:

# udevadm control --reload && rmmod pcspkr && modprobe pcspkr

Советы и рекомендации

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

# beep -f 5000 -l 50 -r 2

Смотрите также