Fedora 终端响铃问题

我曾经在 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) 下同样的测试则听不到报警声音,不知为何。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s