
Ubuntu日本語フォーラム

ログインしていません。
printf '\a'で鳴りました。
本当にありがとうございます。
もしよろしければでいいのですが、
ここまでどのような方法で行ったのか簡単に説明してもらえないでしょうか?
(このコマンドがここをこう設定している。というようにお願いできますか。)
オフライン
細かいところは私もきちんと理解しているわけではないので、個々のコマンドはマニュアル等を参照してください。ただ、おおまかでも全体像をつかんでおいた方が調べるときに分かりやすいかもしれませんので簡単にまとめておきます。
printf '\a' 実行されると端末エミュレータが設定に応じて画面をフラッシュしたり X window サーバーに XkbBell request を送ります。(古いプログラムだと Bell request を送ったりしますがここでは XkbBell だけを考えます。)
xkbbell コマンドは端末エミュレータの設定に関わらず X window サーバーに XkbBell request を送ります。
X window サーバーが XkbBell request を受けとると既に XkbBellNotify を受け取りたいと意思表示しているプログラムに宛てて kbBellNotify イベントを送ります。
module-x11-bell は
* X window サーバーに XkbBellNotify を受け取りたいことを通知し
* XkbBellNotify が X window サーバから送られてきたらモジュールをロードするときに指定されたサンプルを鳴らすよう pulseaudio の本体に依頼
という二つのことを担っています。
puleseaudio 本体に module-x11-bell を組み込んでおかないと XkbBellNotify を受け取ることができません。組み込むためのコマンドが load-module です。
pactl play-sample では module-x11-bell に関わらす、指定されたサンプルを pulseaudio に出力させます。
サンプルとは大雑把に言うと pulseaudio の内部で使われる音源の論理的名前で、この名前に音源ファイル名を対応させて読み込むのが load-sample や load-sample-lazy です。
paplay はサンプル名によらず指定されたファイル名のファイルに含まれる音を pulseaudio に鳴らさせるコマンドです。
この先は構成やマシンにより異なります。手元のマシンの設定では alsa に送られています。いずれにせよ paplay で音源が正しく再生されるのならこの先に問題が有る可能性は少ないと思われます。(可能性がないというわけではありません。たとえば module-x11-bell は、内容は私には分かりませんが、 alsa の情報を何か参照しているようです。)
本題とは外れますが、GTK ベースのプログラムはテーマとイベント名(ここのイベントは X window のイベントや pulseaudio のサンプル名とは無関係で音の論理的な名前、dialog-error とか dialog-warning とかです)から libcanberra などを使って自プロセスでファイル名に変換した上で pulseaudio に送り込んでいます。beep 音とは pulseaudio core から出ていくまでの経路が異なります。
オフライン