Difference between revisions of "Libcanberra"

From ArchWiki
Jump to: navigation, search
(New article about libcanberra with some example code)
 
(simplify summary)
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:Development (English)]]
+
[[Category:Development]]
 +
{{Article summary start|Summary}}
 +
{{Article summary text|This article discusses how to install and configure libcanberra.}}
 +
{{Article summary heading|Related}}
 +
{{Article summary wiki|GTK+}}
 +
{{Article summary wiki|Libnotify}}
 +
{{Article summary end}}
 +
 
 
'''Libcanberra''' is a simple abstract interface for playing event sounds. It implements the [http://freedesktop.org/wiki/Specifications/sound-theme-spec XDG Sound Theme and Naming Specifications] for generating event sounds on free desktops, such as GNOME. Further description [http://0pointer.de/lennart/projects/libcanberra/ here]
 
'''Libcanberra''' is a simple abstract interface for playing event sounds. It implements the [http://freedesktop.org/wiki/Specifications/sound-theme-spec XDG Sound Theme and Naming Specifications] for generating event sounds on free desktops, such as GNOME. Further description [http://0pointer.de/lennart/projects/libcanberra/ here]
  
 
==Installation==
 
==Installation==
  
The {{Pkg|libcanberra}} package is available from the Extra repository. Install libcanberra from a terminal with the following command:
+
Libcanberra can be installed with the package {{Pkg|libcanberra}}, available in the [[Official Repositories]]. It contains the library and a GTK+ module.
{{Cli|# pacman -S libcanberra}}
+
 
{{Note|Usually you don't have to install libcanberra explicitly, since all applications that requires libcanberra depends on it.}}
+
You have to choose a backend to play sounds:
 +
*[[ALSA]] backend is included in {{Pkg|libcanberra}} package
 +
*[[GStreamer]] backend can be installed with package {{Pkg|libcanberra-gstreamer}}, available in the [[Official Repositories]].
 +
*[[PulseAudio]] backend can be installed with package {{Pkg|libcanberra-pulse}}, available in the [[Official Repositories]].
 +
*[[OSS]] backend can be installed with the package {{AUR|libcanberra-oss}}, available in the [[Arch User Repository]].
  
[[ALSA]] backend is included in libcanberra package, [[GStreamer]] and [[PulseAudio]] backends can be installed optionally as separated packages:
+
Also, you have to install a sound theme in order to hear any event sound:
{{Cli|# pacman -S libcanberra-gstreamer libcanberra-pulse}}
+
*The default sound theme is 'freedesktop', which can be installed with the package {{Pkg|sound-theme-freedesktop}}, available in the [[Official Repositories]].
 +
*Alternatively, you can install {{AUR|ubuntu-sounds}}, available in the [[Arch User Repository]].
  
[[OSS]] backend is available in {{AUR|libcanberra-oss}} package from AUR.
+
==Configuration==
 +
By default, the GTK+ module is loaded automatically, when a GTK+ application launched. You can overwrite default settings in user's GtkSettings file:
 +
{{hc|$HOME/.gtkrc-2.0 and $XDG_CONFIG_HOME/gtk-3.0/settings.ini|<nowiki>gtk-enable-event-sounds=true
 +
gtk-enable-input-feedback-sounds=true
 +
gtk-sound-theme-name=freedestop</nowiki>}}
  
In order to hear any event sound, you have to install a sound theme. The default sound theme is {{Pkg|sound-theme-freedesktop}}, which can be installed by the following command:
+
In GNOME, these settings are managed by gnome-settings-daemon, and the configuration is available in GSettings under org.gnome.desktop.sound schema.
{{Cli|# pacman -S sound-theme-freedesktop}}
+
Alternatively you could install {{AUR|ubuntu-sounds}} from AUR, and modify your sound theme setting.
+
  
==Tips & Tricks==
+
==Tips and tricks==
  
 
===Write your own canberra app===
 
===Write your own canberra app===
Line 24: Line 38:
 
====Bash====
 
====Bash====
 
*Dependency: {{Pkg|libcanberra}}
 
*Dependency: {{Pkg|libcanberra}}
{{File|hallo_world.sh|<nowiki>#!/bin/bash
+
{{hc|hallo_world.sh|<nowiki>#!/bin/bash
 
canberra-gtk-play -i phone-incoming-call -d "Hallo world"</nowiki>}}
 
canberra-gtk-play -i phone-incoming-call -d "Hallo world"</nowiki>}}
  
 
====C====
 
====C====
 
*Dependency: {{Pkg|libcanberra}}
 
*Dependency: {{Pkg|libcanberra}}
*Build with: {{Codeline|gcc -o hallo_world `pkg-config --cflags --libs glib-2.0 libcanberra` hallo_world.c}}
+
*Build with: {{ic|gcc hallo_world.c -o hallo_world `pkg-config --cflags --libs glib-2.0 libcanberra`}}
{{File|hallo_world.c|<nowiki>#include <glib.h>
+
{{hc|hallo_world.c|<nowiki>#include <glib.h>
 
#include <canberra.h>
 
#include <canberra.h>
 
void main () {
 
void main () {
Line 45: Line 59:
 
*Dependency: {{Pkg|libcanberra}}
 
*Dependency: {{Pkg|libcanberra}}
 
*Makedependency: {{Pkg|vala}}
 
*Makedependency: {{Pkg|vala}}
*Build with: {{Codeline|valac --pkg libcanberra hallo_world.gs}}
+
*Build with: {{ic|valac --pkg libcanberra hallo_world.gs}}
{{File|hallo_world.gs|<nowiki>uses
+
{{hc|hallo_world.gs|<nowiki>uses
 
Canberra
 
Canberra
 
init
 
init
Line 59: Line 73:
 
*Dependency: {{Pkg|libcanberra}}
 
*Dependency: {{Pkg|libcanberra}}
 
*Makedependency: {{Pkg|vala}}
 
*Makedependency: {{Pkg|vala}}
*Build with: {{Codeline|valac --pkg libcanberra hallo_world.vala}}
+
*Build with: {{ic|valac --pkg libcanberra hallo_world.vala}}
{{File|hallo_world.vala|<nowiki>using Canberra;
+
{{hc|hallo_world.vala|<nowiki>using Canberra;
 
public class HalloWorld {
 
public class HalloWorld {
 
static void main () {
 
static void main () {
Line 72: Line 86:
 
}</nowiki>}}
 
}</nowiki>}}
  
==More Resources==
+
==See also==
*[http://developer.gnome.org/libcanberra/0.28/ Libcanberra Reference Manual]
+
*[http://0pointer.de/lennart/projects/libcanberra/gtkdoc/ Libcanberra Reference Manual]

Revision as of 13:25, 4 September 2012

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary end

Libcanberra is a simple abstract interface for playing event sounds. It implements the XDG Sound Theme and Naming Specifications for generating event sounds on free desktops, such as GNOME. Further description here

Installation

Libcanberra can be installed with the package libcanberra, available in the Official Repositories. It contains the library and a GTK+ module.

You have to choose a backend to play sounds:

Also, you have to install a sound theme in order to hear any event sound:

Configuration

By default, the GTK+ module is loaded automatically, when a GTK+ application launched. You can overwrite default settings in user's GtkSettings file:

$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=freedestop

In GNOME, these settings are managed by gnome-settings-daemon, and the configuration is available in GSettings under org.gnome.desktop.sound schema.

Tips and tricks

Write your own canberra app

You can write your own libcanberra sound events easily in some programming languages, or you can simply use bash.

Bash

hallo_world.sh
#!/bin/bash
canberra-gtk-play -i phone-incoming-call -d "Hallo world"

C

  • Dependency: libcanberra
  • Build with: gcc hallo_world.c -o hallo_world `pkg-config --cflags --libs glib-2.0 libcanberra`
hallo_world.c
#include <glib.h>
#include <canberra.h>
void main () {
	ca_context * Hallo;
	ca_context_create (&Hallo);
	ca_context_play (Hallo, 0,
		CA_PROP_EVENT_ID, "phone-incoming-call",
		CA_PROP_EVENT_DESCRIPTION, "Hallo world",
		NULL);
	g_usleep (2000000);
}

Genie

  • Dependency: libcanberra
  • Makedependency: vala
  • Build with: valac --pkg libcanberra hallo_world.gs
hallo_world.gs
uses
	Canberra
init
	Hallo: Context
	Context.create(out Hallo)
	Hallo.play (0,
		PROP_EVENT_ID, "phone-incoming-call",
		PROP_EVENT_DESCRIPTION, "Hallo world")
	Thread.usleep (2000000)

Vala

  • Dependency: libcanberra
  • Makedependency: vala
  • Build with: valac --pkg libcanberra hallo_world.vala
hallo_world.vala
using Canberra;
public class HalloWorld {
	static void main () {
	Context Hallo;
	Context.create(out Hallo);
	Hallo.play (0,
		PROP_EVENT_ID, "phone-incoming-call",
		PROP_EVENT_DESCRIPTION, "Hallo world");
	Thread.usleep (2000000);
	}
}

See also