Index: mutter-3.23.2/src/meta/prefs.h =================================================================== --- mutter-3.23.2.orig/src/meta/prefs.h +++ mutter-3.23.2/src/meta/prefs.h @@ -89,6 +89,7 @@ typedef enum META_PREF_WORKSPACE_NAMES, META_PREF_VISUAL_BELL, META_PREF_AUDIBLE_BELL, + META_PREF_AUDIBLE_BELL_FORCE_THROUGH_SERVER, META_PREF_VISUAL_BELL_TYPE, META_PREF_GNOME_ACCESSIBILITY, META_PREF_GNOME_ANIMATIONS, @@ -399,6 +400,7 @@ MetaKeyBindingAction meta_prefs_get_keyb gboolean meta_prefs_get_visual_bell (void); gboolean meta_prefs_bell_is_audible (void); +gboolean meta_prefs_bell_force_through_server (void); GDesktopVisualBellType meta_prefs_get_visual_bell_type (void); #endif Index: mutter-3.23.2/src/core/prefs.c =================================================================== --- mutter-3.23.2.orig/src/core/prefs.c +++ mutter-3.23.2/src/core/prefs.c @@ -93,6 +93,7 @@ static gboolean auto_raise_delay = 500; static gboolean focus_change_on_pointer_rest = FALSE; static gboolean bell_is_visible = FALSE; static gboolean bell_is_audible = TRUE; +static gboolean bell_force_through_server = FALSE; static gboolean gnome_accessibility = FALSE; static gboolean gnome_animations = TRUE; static char *cursor_theme = NULL; @@ -353,6 +354,13 @@ static MetaBoolPreference preferences_bo &bell_is_audible, /* FIXME: change the name: it's confusing */ }, { + { "audible-bell-force-through-server", + SCHEMA_MUTTER, + META_PREF_AUDIBLE_BELL_FORCE_THROUGH_SERVER, + }, + &bell_force_through_server, + }, + { { KEY_GNOME_ACCESSIBILITY, SCHEMA_INTERFACE, META_PREF_GNOME_ACCESSIBILITY, @@ -1813,6 +1821,9 @@ meta_preference_to_string (MetaPreferenc case META_PREF_AUDIBLE_BELL: return "AUDIBLE_BELL"; + case META_PREF_AUDIBLE_BELL_FORCE_THROUGH_SERVER: + return "AUDIBLE_BELL_FORCE_THROUGH_SERVER"; + case META_PREF_VISUAL_BELL_TYPE: return "VISUAL_BELL_TYPE"; @@ -2077,6 +2088,12 @@ meta_prefs_bell_is_audible (void) return bell_is_audible; } +gboolean +meta_prefs_bell_force_through_server (void) +{ + return bell_force_through_server; +} + GDesktopVisualBellType meta_prefs_get_visual_bell_type (void) { Index: mutter-3.23.2/src/core/bell.c =================================================================== --- mutter-3.23.2.orig/src/core/bell.c +++ mutter-3.23.2/src/core/bell.c @@ -220,6 +220,12 @@ meta_bell_notify (MetaDisplay *display, if (meta_prefs_get_visual_bell ()) bell_visual_notify (display, window); + if (meta_prefs_bell_force_through_server ()) + { + XkbForceBell (display->xdisplay, 100); + return TRUE; + } + if (meta_prefs_bell_is_audible ()) return bell_audible_notify (display, window); Index: mutter-3.23.2/data/org.gnome.mutter.gschema.xml.in =================================================================== --- mutter-3.23.2.orig/data/org.gnome.mutter.gschema.xml.in +++ mutter-3.23.2/data/org.gnome.mutter.gschema.xml.in @@ -102,6 +102,16 @@ + + false + Force the System Bell through the X server only. + + Force the System Bell through the X server only for systems that + do not want to go through the sound card - for example that don't + have speakers. + + +