PC speaker (简体中文)
无论用户是否想要,电脑似乎经常会不时发出蜂鸣声或其他声音。它们的来源多种多样,同样你也许可以设置它们是否以及何时发生。对于没有声卡或扬声器可用,同时希望有简单音频通知的情况,见#Beep。
来自电脑的声音可以从机箱内置喇叭、扬声器或插入声卡的耳机(这种情况下噪音可能会出乎意料地大)听到。
禁用PC喇叭
当且仅当你能够识别出某个声音是由环境的哪一部分生成的,就有可能关掉特定的一类声音,而让其他声音继续动作。这样就可以自定义对声音的选择。欢迎将可能对其他用户有用的配置与设置加入此wiki页面。
全局设置
可以通过在内核模块中移除 pcspkr
模块来完全禁用PC喇叭:
# rmmod pcspkr
将 pcspkr
模块加入黑名单的方法可以阻止 udev 在启动时加载它。创建文件:
/etc/modprobe.d/nobeep.conf
blacklist pcspkr
还有一种方法是将其加入内核命令行黑名单。只需把modprobe.blacklist=pcspkr
加入引导加载器的内核行。
控制台
可将以下命令添加到 /etc/profile
或 /etc/profile.d/disable-beep.sh
之类的单独文件:
setterm -blength 0
另一种方法是在 ~/.inputrc
或 /etc/inputrc
中添加或取消注释以下命令:
set bell-style none
Less分页器
要想在 less 分页器中禁用PC喇叭,可以通过 less -q
(在到达行尾时静音PC喇叭)或 less -Q
(全部静音)启动它。对于手册页,运行 man -P "less -Q"
或设置 $MANPAGER
或 $PAGER
环境变量。
或者也可以将以下行加入你的 ~/.bashrc
:
alias less='less -Q' alias man='man -P "less -Q"'
Xorg
$ xset -b
将这条命令加入 ~/.xinitrc
或 /etc/xprofile
等启动文件即可固化设置。更多信息见xprofile (简体中文)。
ALSA
大部分声卡中PC喇叭都被列为一个ALSA通道,称为 PC Speaker、 PC Beep 或 Beep。使用 alsamixer
或 amixer
即可对喇叭静音,例如:
$ amixer set 'PC Speaker' 0% mute
要想取消静音,见Advanced Linux Sound Architecture (简体中文)#解除各声道的静音。
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
,以及 $XDG_CONFIG_HOME/gtk-3.0/settings.ini
的[Settings]部分:
gtk-error-bell = 0
这在Gnome开发者手册中有记载。
PulseAudio
使用PulseAudio以播放声音取代PC喇叭蜂鸣。
Beep
用户可以在登录到虚拟控制台时发出短促的声音。详见Wikipedia:bell character#usage。
Beep是一个高级PC喇叭蜂鸣程序。它可以用于没有声卡和/或扬声器可用,同时希望有简单音频通知的情况。
安装
作为非root用户运行
beep
使用 /dev/input/by-path/platform-pcspkr-event-spkr
来控制PC喇叭。要作为非root用户访问它,必须设置适当的权限。创建 /etc/udev/rules.d/70-pcspkr-beep.rules
并添加以下规则:
ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="PC Speaker", ENV{DEVNAME}!="", TAG+="uaccess"
这会允许任何登录到当前活动虚拟控制台会话的用户使用PC喇叭。
或者可以设置一个新的用户组(如 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