PC 揚聲器

出自 Arch Linux 中文维基

無論用户是否想要,電腦似乎經常會不時發出蜂鳴聲或其他聲音。它們的來源多種多樣,同樣你也許可以設置它們是否以及何時發生。對於沒有聲卡或揚聲器可用,同時希望有簡單音頻通知的情況,見#Beep

來自電腦的聲音可以從機箱內置喇叭、揚聲器或插入聲卡的耳機(這種情況下噪音可能會出乎意料地大)聽到。

注意: 這些聲音是由BIOS、作業系統、桌面環境或各種軟件程序導致。BIOS是一個特別煩人的問題,因為它內置於主板上的一個EPROM晶片中,用户對其僅有的直接控制就是通過開關電源。除非BIOS配置有你可以調整的設置,或者你打算嘗試用適當的光源重新編程該晶片,你不太可能有辦法對它作出改變。此處對由BIOS生成的蜂鳴聲不作介紹,除了拔掉你電腦的機箱喇叭,這樣任何這類聲音就都聽不見了。(風險自擔)

禁用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 SpeakerPC BeepBeep。使用 alsamixeramixer 即可對喇叭靜音,例如:

$ amixer set 'PC Speaker' 0% mute

要想取消靜音,見Advanced Linux Sound Architecture#解除各聲道的靜音

提示:如果你在使用PulseAudio,而默認ALSA設備沒有列出PC喇叭,請嘗試選擇聲卡對應的設備——PulseAudio代理控制可能不會列出PC喇叭。

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喇叭蜂鳴程序。它可以用於沒有聲卡和/或揚聲器可用,同時希望有簡單音頻通知的情況。

安裝[編輯 | 編輯原始碼]

安裝 beep 軟件包。

可能也需要在ALSA解除對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

相關閱讀[編輯 | 編輯原始碼]