diff --git calendar/gui/alarm-notify/Makefile.am calendar/gui/alarm-notify/Makefile.am
index 76c2783..ded9638 100644
--- calendar/gui/alarm-notify/Makefile.am
+++ calendar/gui/alarm-notify/Makefile.am
@@ -25,7 +25,8 @@ INCLUDES = 						\
 	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"		\
 	-DEVOLUTION_LOCALEDIR=\""$(localedir)"\"	\
 	-DEVOLUTION_LIBEXECDIR=\""$(privlibexecdir)"\"	\
-	$(EVOLUTION_CALENDAR_CFLAGS)
+	$(EVOLUTION_CALENDAR_CFLAGS)			\
+	$(CANBERRA_CFLAGS)
 
 glade_DATA =		\
 	alarm-notify.glade
@@ -51,7 +52,8 @@ evolution_alarm_notify_LDADD =						\
 	$(top_builddir)/widgets/misc/libemiscwidgets.la			\
 	$(top_builddir)/calendar/common/libevolution-calendarprivate.la	\
 	$(CAMEL_LIBS)							\
-	$(EVOLUTION_CALENDAR_LIBS)
+	$(EVOLUTION_CALENDAR_LIBS)					\
+	$(CANBERRA_LIBS)
 
 server_in_files = GNOME_Evolution_Calendar_AlarmNotify.server.in.in
 server_DATA = $(server_in_files:.server.in.in=.server)
diff --git calendar/gui/alarm-notify/alarm-queue.c calendar/gui/alarm-notify/alarm-queue.c
index e7be555..9c664e4 100644
--- calendar/gui/alarm-notify/alarm-queue.c
+++ calendar/gui/alarm-notify/alarm-queue.c
@@ -34,12 +34,11 @@
 #include <bonobo/bonobo-main.h>
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
-#include <libgnome/gnome-sound.h>
+#include <canberra-gtk.h>
 
 #include <libecal/e-cal-time-util.h>
 #include <libecal/e-cal-component.h>
 
-
 #ifdef HAVE_LIBNOTIFY
 #include <libnotify/notify.h>
 #endif
@@ -1659,7 +1658,9 @@ audio_notification (time_t trigger, CompQueuedAlarms *cqa,
 
 		if (url && *url && g_file_test (url, G_FILE_TEST_EXISTS)) {
 			flag = 1;
-			gnome_sound_play (url); /* this sucks */
+			ca_context_play(ca_gtk_context_get(), 0,
+					CA_PROP_MEDIA_FILENAME, url,
+					NULL); 
 		}
 	}
 
diff --git calendar/gui/alarm-notify/notify-main.c calendar/gui/alarm-notify/notify-main.c
index 3504b0d..a876127 100644
--- calendar/gui/alarm-notify/notify-main.c
+++ calendar/gui/alarm-notify/notify-main.c
@@ -31,7 +31,6 @@
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
 #include <libgnome/gnome-init.h>
-#include <libgnome/gnome-sound.h>
 #include <libgnomeui/gnome-client.h>
 #include <libgnomeui/gnome-ui-init.h>
 #include <glade/glade.h>
@@ -48,8 +47,6 @@
 #include "config-data.h"
 #include <camel/camel-object.h>
 
-
-
 static BonoboGenericFactory *factory;
 
 static AlarmNotify *alarm_notify_service = NULL;
@@ -142,8 +139,6 @@ main (int argc, char **argv)
 
 	glade_init ();
 
-	gnome_sound_init ("localhost");
-
 	e_icon_factory_init ();
 
 	init_alarm_service (NULL);
@@ -173,7 +168,6 @@ main (int argc, char **argv)
 	alarm_done ();
 
 	e_passwords_shutdown ();
-	gnome_sound_shutdown ();
 
 	return 0;
 }
diff --git configure.ac configure.ac
index 16b3f68..09ff470 100644
--- configure.ac
+++ configure.ac
@@ -1959,6 +1959,13 @@ AM_CONDITIONAL(HAVE_KDE_APPLNK, test x"$KDE_APPLNK_DIR" != x)
 AC_SUBST(KDE_APPLNK_DIR)
 
 dnl ******************************
+dnl Canberra / Canberra-GTK Sound
+dnl ******************************
+PKG_CHECK_MODULES([CANBERRA],[libcanberra-gtk])
+AC_SUBST(CANBERRA_CFLAGS)
+AC_SUBST(CANBERRA_LIBS)
+
+dnl ******************************
 dnl Makefiles
 dnl ******************************
 
diff --git mail/Makefile.am mail/Makefile.am
index d66eb6f..03213ff 100644
--- mail/Makefile.am
+++ mail/Makefile.am
@@ -17,6 +17,7 @@ INCLUDES =						\
 	$(EVOLUTION_MAIL_CFLAGS)			\
 	$(CERT_UI_CFLAGS)				\
 	$(THREADS_CFLAGS)				\
+	$(CANBERRA_CFLAGS)				\
 	-DEVOLUTION_DATADIR=\""$(datadir)"\"		\
 	-DEVOLUTION_PRIVDATADIR=\""$(privdatadir)"\"	\
 	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"		\
@@ -67,7 +68,7 @@ mailinclude_HEADERS =				\
 	em-filter-editor.h			\
 	em-filter-folder-element.h		\
 	em-filter-rule.h			\
-	em-filter-source-element.h	        \		
+	em-filter-source-element.h	        \
 	em-folder-browser.h			\
 	em-folder-tree-model.h			\
 	em-folder-tree.h			\
@@ -150,7 +151,7 @@ endif
 
 
 libevolution_mail_la_LIBADD =					\
-	$(top_builddir)/mail/libevolution-mail-shared.la	\								
+	$(top_builddir)/mail/libevolution-mail-shared.la	\
 	$(top_builddir)/e-util/libeutil.la			\
 	$(top_builddir)/shell/libeshell.la			\
 	$(top_builddir)/widgets/table/libetable.la		\
@@ -167,7 +168,8 @@ libevolution_mail_la_LIBADD =					\
 	$(EVOLUTION_MAIL_LIBS)					\
 	$(GTKHTML_LIBS)						\
 	$(REGEX_LIBS)						\
-	$(THREADS_LIBS)
+	$(THREADS_LIBS)						\
+	$(CANBERRA_LIBS)
 
 libevolution_mail_la_LDFLAGS = 			\
 	-avoid-version -module $(NO_UNDEFINED)
@@ -182,7 +184,7 @@ libevolution_mail_shared_la_SOURCES =			\
 	em-event.c				\
 	em-config.c				\
 	em-composer-utils.c			\
-	em-composer-utils.h			\	
+	em-composer-utils.h			\
 	em-filter-context.c			\
 	em-filter-context.h			\
 	em-filter-editor.c			\
diff --git mail/mail-folder-cache.c mail/mail-folder-cache.c
index ed3d583..9aab09c 100644
--- mail/mail-folder-cache.c
+++ mail/mail-folder-cache.c
@@ -37,7 +37,6 @@
 #include <glib.h>
 #include <glib/gstdio.h>
 
-#include <libgnome/gnome-sound.h>
 #include <glib/gi18n.h>
 #include <bonobo/bonobo-exception.h>
 #include <camel/camel-store.h>
diff --git mail/mail-session.c mail/mail-session.c
index 03277b4..b582915 100644
--- mail/mail-session.c
+++ mail/mail-session.c
@@ -33,7 +33,7 @@
 
 #include <gconf/gconf-client.h>
 
-#include <libgnome/gnome-sound.h>
+#include <canberra-gtk.h>
 
 #include <libedataserverui/e-passwords.h>
 #include <libedataserver/e-flag.h>
@@ -461,7 +461,9 @@ static void
 main_play_sound (CamelFilterDriver *driver, char *filename, gpointer user_data)
 {
 	if (filename && *filename)
-		gnome_sound_play (filename);
+		ca_context_play(ca_gtk_context_get(), 0,
+				CA_PROP_MEDIA_FILENAME, filename,
+				NULL);
 	else
 		gdk_beep ();
 
diff --git plugins/mail-notification/Makefile.am plugins/mail-notification/Makefile.am
index 4228a90..64ca876 100644
--- plugins/mail-notification/Makefile.am
+++ plugins/mail-notification/Makefile.am
@@ -8,7 +8,8 @@ endif
 INCLUDES =					\
 	-I$(top_srcdir)				\
 	$(EVOLUTION_MAIL_CFLAGS)		\
-	$(LIBNOTIFY_CFLAGS)			
+	$(LIBNOTIFY_CFLAGS)			\
+	$(CANBERRA_CFLAGS)	
 
 if ENABLE_DBUS
 INCLUDES += 	-DDBUS_API_SUBJECT_TO_CHANGE=1		\
@@ -26,6 +27,7 @@ liborg_gnome_mail_notification_la_LDFLAGS = 	\
 	-module -avoid-version $(NO_UNDEFINED)
 liborg_gnome_mail_notification_la_LIBADD = 	\
 	$(LIBNOTIFY_LIBS)			\
+	$(CANBERRA_LIBS)			\
 	$(NO_UNDEFINED_REQUIRED_LIBS)
 
 if ENABLE_DBUS
diff --git plugins/mail-notification/apps-evolution-mail-notification.schemas.in plugins/mail-notification/apps-evolution-mail-notification.schemas.in
index c0a0380..6234bc4 100644
--- plugins/mail-notification/apps-evolution-mail-notification.schemas.in
+++ plugins/mail-notification/apps-evolution-mail-notification.schemas.in
@@ -91,6 +91,17 @@
         <long>Sound file to be played when new messages arrive, if not in beep mode.</long>
       </locale>
     </schema>
+    <schema>
+      <key>/schemas/apps/evolution/eplugin/mail-notification/sound-syssound</key>
+      <applyto>/apps/evolution/eplugin/mail-notification/sound-syssound</applyto>
+      <owner>evolution-mail</owner>
+      <type>bool</type>
+      <default>false</default>	
+      <locale name="C">
+        <short>Play default system sound.</short>
+        <long>Play default system sound when new messages arrive, if not in beep mode.</long>
+      </locale>
+    </schema>	
   </schemalist>
 </gconfschemafile>
 
diff --git plugins/mail-notification/mail-notification.c plugins/mail-notification/mail-notification.c
index 5bb65ce..2108e72 100644
--- plugins/mail-notification/mail-notification.c
+++ plugins/mail-notification/mail-notification.c
@@ -29,7 +29,7 @@
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
 #include <gconf/gconf-client.h>
-#include <libgnome/gnome-sound.h>
+#include <canberra-gtk.h>
 
 #ifdef HAVE_DBUS
 #include <dbus/dbus-glib.h>
@@ -84,7 +84,7 @@ static GStaticMutex mlock = G_STATIC_MUTEX_INIT;
 static gboolean
 is_part_enabled (const gchar *gconf_key)
 {
-	/* the part is enabled by defaul */
+	/* the part is enabled by default */
 	gboolean res = TRUE;
 	GConfClient *client;
 	GConfValue  *is_key;
@@ -596,22 +596,32 @@ get_config_widget_status (void)
 
 #define GCONF_KEY_SOUND_BEEP		GCONF_KEY_ROOT "sound-beep"
 #define GCONF_KEY_SOUND_FILE		GCONF_KEY_ROOT "sound-file"
+#define GCONF_KEY_SOUND_SYSSOUND        GCONF_KEY_ROOT "sound-syssound"
+
+static ca_context *mailnotification = NULL;
 
 static void
-do_play_sound (gboolean beep, const gchar *file)
-{
-	if (beep)
-		gdk_beep ();
-	else if (!file || !*file)
-		g_warning ("No file to play!");
+do_play_sound (gboolean beep, gboolean syssound, const gchar *file)
+{
+	if (!beep) {
+		if ( (file || *file) && !syssound )
+			ca_context_play(mailnotification, 0,
+			CA_PROP_MEDIA_FILENAME, file,
+			NULL);
+		else
+			ca_context_play(mailnotification, 0,
+			CA_PROP_EVENT_ID,"message-new-email",
+			NULL);
+	}
 	else
-		gnome_sound_play (file);
+		gdk_beep();
 }
 
 struct _SoundConfigureWidgets
 {
 	GtkWidget *enable;
 	GtkWidget *beep;
+	GtkWidget *syssound;
 	GtkWidget *file;
 	GtkWidget *label;
 	GtkWidget *filechooser;
@@ -627,6 +637,7 @@ toggled_sound_cb (GtkWidget *widget, gpointer data)
 	g_return_if_fail (data != NULL);
 	g_return_if_fail (scw->enable != NULL);
 	g_return_if_fail (scw->beep != NULL);
+	g_return_if_fail (scw->syssound != NULL);
 	g_return_if_fail (scw->file != NULL);
 	g_return_if_fail (scw->label != NULL);
 	g_return_if_fail (scw->filechooser != NULL);
@@ -637,13 +648,21 @@ toggled_sound_cb (GtkWidget *widget, gpointer data)
 		set_part_enabled (GCONF_KEY_ENABLED_SOUND, enabl);
 
 	gtk_widget_set_sensitive (scw->beep, enabl);
+	gtk_widget_set_sensitive (scw->syssound, enabl);
 	gtk_widget_set_sensitive (scw->file, enabl);
 	gtk_widget_set_sensitive (scw->label, enabl);
-	gtk_widget_set_sensitive (scw->filechooser, enabl && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scw->file)));
+	gtk_widget_set_sensitive (scw->filechooser, enabl 
+				  && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scw->file))
+				  && !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scw->syssound)));
 	gtk_widget_set_sensitive (scw->play, enabl);
 
-	if (widget == scw->beep || widget == scw->file)
+	if (widget == scw->beep || widget == scw->file || widget == scw->syssound)
 		set_part_enabled (GCONF_KEY_SOUND_BEEP, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scw->beep)));
+	
+	if (widget == scw->syssound) {
+		set_part_enabled (GCONF_KEY_SOUND_SYSSOUND, gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON (scw->syssound)));
+		set_part_enabled (GCONF_KEY_SOUND_BEEP, FALSE);
+	}
 }
 
 static void
@@ -675,7 +694,9 @@ sound_play_cb (GtkWidget *widget, gpointer data)
 		return;
 
 	file = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (scw->filechooser));
-	do_play_sound (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scw->beep)), file);
+	do_play_sound (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (scw->beep)),
+		       gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (scw->syssound)), 
+		       file);
 	g_free (file);
 }
 
@@ -695,8 +716,10 @@ sound_notify_idle_cb (gpointer user_data)
 
 	client = gconf_client_get_default ();
 	file = gconf_client_get_string (client, GCONF_KEY_SOUND_FILE, NULL);
-
-	do_play_sound (is_part_enabled (GCONF_KEY_SOUND_BEEP), file);
+ 
+	do_play_sound (is_part_enabled (GCONF_KEY_SOUND_BEEP),
+		       is_part_enabled (GCONF_KEY_SOUND_SYSSOUND),
+		       file);
 
 	g_object_unref (client);
 	g_free (file);
@@ -732,10 +755,14 @@ read_notify_sound (EMEventTargetMessage *t)
 static void
 enable_sound (int enable)
 {
-	if (enable)
-		gnome_sound_init ("localhost");
+	if (enable){
+		ca_context_create(&mailnotification);
+		ca_context_change_props(mailnotification,
+	                        CA_PROP_APPLICATION_NAME, "mailnotification Plugin",
+			        NULL);
+	}
 	else
-		gnome_sound_shutdown ();
+		ca_context_destroy(mailnotification);
 }
 
 static GtkWidget *
@@ -756,14 +783,18 @@ get_config_widget_sound (void)
 
 	parent = gtk_vbox_new (FALSE, 0);
 	scw->beep = gtk_radio_button_new_with_mnemonic (NULL, _("_Beep"));
+	scw->syssound = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (scw->beep), _("Play default _system sound"));
 	scw->file = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (scw->beep), _("Play _sound file"));
 
 	if (is_part_enabled (GCONF_KEY_SOUND_BEEP))
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (scw->beep), TRUE);
+	else if (is_part_enabled (GCONF_KEY_SOUND_SYSSOUND))
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (scw->syssound), TRUE);
 	else
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (scw->file), TRUE);
 
 	g_signal_connect (G_OBJECT (scw->beep), "toggled", G_CALLBACK (toggled_sound_cb), scw);
+	g_signal_connect (G_OBJECT (scw->syssound), "toggled", G_CALLBACK (toggled_sound_cb), scw);
 	g_signal_connect (G_OBJECT (scw->file), "toggled", G_CALLBACK (toggled_sound_cb), scw);
 
 	hbox = gtk_hbox_new (FALSE, 0);
@@ -791,6 +822,7 @@ get_config_widget_sound (void)
 	gtk_box_pack_start (GTK_BOX (hbox), scw->play, FALSE, FALSE, 0);
 
 	gtk_box_pack_start (GTK_BOX (parent), scw->beep, FALSE, FALSE, 0);
+	gtk_box_pack_start (GTK_BOX (parent), scw->syssound, FALSE, FALSE, 0);
 	gtk_box_pack_start (GTK_BOX (parent), scw->file, FALSE, FALSE, 0);
 	gtk_box_pack_start (GTK_BOX (parent), hbox, FALSE, FALSE, 0);
 
diff --git shell/main.c shell/main.c
index 2abd30e..644d798 100644
--- shell/main.c
+++ shell/main.c
@@ -51,7 +51,6 @@
 #include <gconf/gconf-client.h>
 
 #include <glib/gi18n.h>
-#include <libgnome/gnome-sound.h>
 #include <libgnomeui/gnome-ui-init.h>
 #include <libgnomeui/gnome-client.h>
 
@@ -669,7 +668,6 @@ main (int argc, char **argv)
 	if (setup_only)
 		exit (0);
 
-	gnome_sound_init ("localhost");
 	gtk_accel_map_load (e_get_accels_filename ());
 
 	if (!disable_eplugin) {
@@ -707,7 +705,6 @@ main (int argc, char **argv)
 
 	e_icon_factory_shutdown ();
 	g_object_unref (program);
-	gnome_sound_shutdown ();
 	e_cursors_shutdown ();
 #ifdef G_OS_WIN32
 	link_shutdown ();
