Index: gnome-settings-daemon-2.25.90/data/apps_gnome_settings_daemon_keybindings.schemas.in =================================================================== --- gnome-settings-daemon-2.25.90.orig/data/apps_gnome_settings_daemon_keybindings.schemas.in +++ gnome-settings-daemon-2.25.90/data/apps_gnome_settings_daemon_keybindings.schemas.in @@ -14,6 +14,17 @@ + /schemas/apps/gnome_settings_daemon/toggle_mute + /apps/gnome_settings_daemon/toggle_mute + bool + TRUE + + Toggle Mute + Toggle the sound mixer's mute status when then mute button is pressed. + + + + /schemas/apps/gnome_settings_daemon/keybindings/volume_mute /apps/gnome_settings_daemon/keybindings/volume_mute string Index: gnome-settings-daemon-2.25.90/plugins/media-keys/gsd-media-keys-manager.c =================================================================== --- gnome-settings-daemon-2.25.90.orig/plugins/media-keys/gsd-media-keys-manager.c +++ gnome-settings-daemon-2.25.90/plugins/media-keys/gsd-media-keys-manager.c @@ -656,8 +656,10 @@ do_sound_action (GsdMediaKeysManager *ma int type) { gboolean muted; + gboolean toggle_mute; guint vol, norm_vol_step; int vol_step; + GError *error; if (manager->priv->stream == NULL) return; @@ -680,8 +682,23 @@ do_sound_action (GsdMediaKeysManager *ma switch (type) { case MUTE_KEY: + error = NULL; + toggle_mute = gconf_client_get_bool (manager->priv->conf_client, + GCONF_MISC_DIR "/toggle_mute", + &error); + + if (error) { + toggle_mute = TRUE; + g_error_free (error); + } + manager->priv->num_expected_update_signals = 1; - gvc_mixer_stream_change_is_muted (manager->priv->stream, !muted); + if (toggle_mute) + gvc_mixer_stream_change_is_muted (manager->priv->stream, + !muted); + else + gvc_mixer_stream_change_is_muted (manager->priv->stream, + TRUE); break; case VOLUME_DOWN_KEY: if (!muted && (vol <= norm_vol_step)) {