Libcanberra
2015年2月15日 (日) 16:20時点におけるKusakata (トーク | 投稿記録)による版 (ページの作成:「Category:開発 en:Libcanberra {{Related articles start}} {{Related|GTK+}} {{Related|デスクトップ通知}} {{Related articles end}} '''Libcanberra''' はイ...」)
Libcanberra はイベントサウンドを再生するためのシンプルな抽象インターフェイスです。GNOME などのフリーなデスクトップでイベントサウンドを流すための XDG Sound Theme and Naming Specifications を実装しています。詳しい説明は こちら。
インストール
Libcanberra は公式リポジトリの libcanberra パッケージでインストールできます。パッケージにはライブラリと GTK+ モジュールが含まれています。
サウンドを再生するためのバックエンドを選択してください:
- ALSA バックエンドは libcanberra パッケージに入っています。
- GStreamer バックエンドは公式リポジトリの libcanberra-gstreamer パッケージでインストールできます。
- PulseAudio バックエンドは公式リポジトリの libcanberra-pulse パッケージでインストールできます。
また、イベントサウンドを聞くためにはサウンドテーマをインストールする必要があります:
- デフォルトのサウンドテーマは 'freedesktop' で、公式リポジトリの sound-theme-freedesktop パッケージでインストールできます。
- もしくは、Arch User Repository から ubuntu-soundsAUR をインストールすることも可能です。
設定
デフォルトでは、GTK+ アプリケーションが起動した時に GTK+ モジュールが自動的にロードされます。ユーザーの Gtk 設定ファイルでデフォルトの設定を上書きすることができます:
$HOME/.gtkrc-2.0 and $XDG_CONFIG_HOME/gtk-3.0/settings.ini
gtk-enable-event-sounds=true gtk-enable-input-feedback-sounds=true gtk-sound-theme-name=freedesktop
GNOME では、以上の設定は gnome-settings-daemon によって管理されており、GSettings の org.gnome.desktop.sound スキーマで設定を変更できます。
Systemd
canberra を使って起動・シャットダウン・再起動サウンドを有効にするには、次を実行:
# systemctl enable canberra-system-bootup.service
Tips and tricks
canberra アプリの書き方
libcanberra のサウンドイベントは様々なプログラミング言語で簡単に書くことができます。
Bash
- 依存パッケージ: libcanberra
hello_world.sh
#!/bin/bash canberra-gtk-play -i phone-incoming-call -d "hello world"
C
- 依存パッケージ: libcanberra
- ビルド:
gcc hello_world.c -o hello_world `pkg-config --cflags --libs glib-2.0 libcanberra`
hello_world.c
#include <glib.h> #include <canberra.h> void main () { ca_context * hello; ca_context_create (&hello); ca_context_play (hello, 0, CA_PROP_EVENT_ID, "phone-incoming-call", CA_PROP_EVENT_DESCRIPTION, "hello world", NULL); g_usleep (2000000); }
Genie
- 依存パッケージ: libcanberra
- ビルド依存パッケージ: vala
- ビルド:
valac --pkg libcanberra hello_world.gs
hello_world.gs
uses Canberra init hello: Context Context.create(out hello) hello.play (0, PROP_EVENT_ID, "phone-incoming-call", PROP_EVENT_DESCRIPTION, "hello world") Thread.usleep (2000000)
Vala
- 依存パッケージ: libcanberra
- ビルド依存パッケージ: vala
- ビルド:
valac --pkg libcanberra hello_world.vala
hello_world.vala
using Canberra; public class HelloWorld { static void main () { Context hello; Context.create(out hello); hello.play (0, PROP_EVENT_ID, "phone-incoming-call", PROP_EVENT_DESCRIPTION, "hello world"); Thread.usleep (2000000); } }