我曾经在 Ubuntu 系统上听到过(很响亮的) 终端响铃,但并没有在 Fedora 下听到过,无论是 GNOME 2(Metacity), Compiz, Fvwm 还是 Gnome Shell。今天由于想实验这里的程序, 我着实希望终端响铃可以工作。
无奈的是,最初 Google "linux terminal bell" 相关内容,大多是介绍关闭终端响铃 的文章。不过,后面终于看到了相关的帖子:列表讨论和 Bugzilla 讨论。
最终,我根据 Bugzilla 讨论中第 34 楼 Paul Egan 的描述,(部分)解决了问题。 (感谢他!)下面是简要描述:
在终端下执行
pactl upload-sample /usr/share/sounds/gnome/default/alerts/glass.ogg bell
pactl load-module module-x11-bell sample=bell
然后测试
echo -e "a"
正常的话,可以听到 glass.ogg
的玻璃声了。在终端 Tab 有不唯一的补全结果时, 在 Vim 中一行行尾处按 l 企图向右移动时,都有同样的报警声。注意这里的报警声 并非旧式的终端响铃(单音beep),而是用 glass.ogg
替代。
讨论内容很有意义,事实上最开始很难相信这是和 PulseAudio、窗口管理器/桌面环境有关的问题。具体是谁的 bug?呃,PulseAudio 开发者表示这应该是在客户端(桌面环境)做(类似 Metacity 的做法),Xfce 开发者则认为这不是他们的问题 ╮(╯_╰)╭
我用的是 Fvwm 窗口管理器,作为窗口管理器用户,解决问题最好的方式还是自己来了。Fvwm 用户可以在配置文件 (~/.fvwm/config
) 中的 InitFunction 中添加两行,以在初始时自动执行上面两条命令,基本解决没有响铃的问题。
DestroyFunc InitFunction
AddToFunc InitFunction
# others
+ I Exec exec pactl upload-sample /usr/share/sounds/gnome/default/alerts/glass.ogg bell
+ I Exec exec pactl load-module module-x11-bell sample=bell
# others
事实上,在之前我搜索中,看到有人提到在 Debian 上启用 pcspkr 模块 即可解决问题。然后在我的 Fedora 16 这里,着实没有效果。
另外,在控制台终端 (Ctrl+Alt+F2) 下同样的测试则听不到报警声音,不知为何。