diff options
Diffstat (limited to 'panels/sound')
70 files changed, 14272 insertions, 0 deletions
diff --git a/panels/sound/cc-alert-chooser.c b/panels/sound/cc-alert-chooser.c new file mode 100644 index 0000000..8e60659 --- /dev/null +++ b/panels/sound/cc-alert-chooser.c @@ -0,0 +1,278 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include <glib/gi18n.h> +#include <gsound.h> + +#include "config.h" +#include "cc-alert-chooser.h" +#include "cc-sound-button.h" +#include "cc-sound-resources.h" + +#define KEY_SOUNDS_SCHEMA "org.gnome.desktop.sound" + +struct _CcAlertChooser +{ + GtkBox parent_instance; + + CcSoundButton *bark_button; + CcSoundButton *drip_button; + CcSoundButton *glass_button; + CcSoundButton *sonar_button; + + GSoundContext *context; + GSettings *sound_settings; +}; + +static void clicked_cb (CcAlertChooser *self, + CcSoundButton *button); + +G_DEFINE_TYPE (CcAlertChooser, cc_alert_chooser, GTK_TYPE_BOX) + +#define CUSTOM_THEME_NAME "__custom" + +static gchar * +get_theme_dir (void) +{ + return g_build_filename (g_get_user_data_dir (), "sounds", CUSTOM_THEME_NAME, NULL); +} + +static gchar * +get_sound_path (const gchar *name) +{ + g_autofree gchar *filename = NULL; + + filename = g_strdup_printf ("%s.ogg", name); + return g_build_filename (SOUND_DATA_DIR, "gnome", "default", "alerts", filename, NULL); +} + +static gchar * +get_alert_name (void) +{ + g_autofree gchar *dir = NULL; + g_autofree gchar *path = NULL; + g_autoptr(GFile) file = NULL; + g_autoptr(GFileInfo) info = NULL; + const gchar *target; + g_autofree gchar *basename = NULL; + g_autoptr(GError) error = NULL; + + dir = get_theme_dir (); + path = g_build_filename (dir, "bell-terminal.ogg", NULL); + file = g_file_new_for_path (path); + + info = g_file_query_info (file, + G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET, + G_FILE_QUERY_INFO_NONE, + NULL, + &error); + if (info == NULL) + { + if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) + g_warning ("Failed to get sound theme symlink %s: %s", path, error->message); + return NULL; + } + target = g_file_info_get_attribute_byte_string (info, G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET); + if (target == NULL) + return NULL; + + basename = g_path_get_basename (target); + if (g_str_has_suffix (basename, ".ogg")) + basename[strlen (basename) - 4] = '\0'; + + return g_steal_pointer (&basename); +} + +static void +set_sound_symlink (const gchar *alert_name, + const gchar *name) +{ + g_autofree gchar *dir = NULL; + g_autofree gchar *source_filename = NULL; + g_autofree gchar *source_path = NULL; + g_autofree gchar *target_path = NULL; + g_autoptr(GFile) file = NULL; + g_autoptr(GError) error = NULL; + + dir = get_theme_dir (); + source_filename = g_strdup_printf ("%s.ogg", alert_name); + source_path = g_build_filename (dir, source_filename, NULL); + target_path = get_sound_path (name); + + file = g_file_new_for_path (source_path); + if (!g_file_delete (file, NULL, &error)) + { + if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) + g_warning ("Failed to remove existing sound symbolic link %s: %s", source_path, error->message); + } + if (!g_file_make_symbolic_link (file, target_path, NULL, &error)) + g_warning ("Failed to make sound theme symbolic link %s->%s: %s", source_path, target_path, error->message); +} + +static void +set_custom_theme (CcAlertChooser *self, + const gchar *name) +{ + g_autofree gchar *dir = NULL; + g_autofree gchar *theme_path = NULL; + g_autoptr(GKeyFile) theme_file = NULL; + g_autoptr(GVariant) default_theme = NULL; + g_autoptr(GError) load_error = NULL; + g_autoptr(GError) save_error = NULL; + + dir = get_theme_dir (); + g_mkdir_with_parents (dir, USER_DIR_MODE); + + theme_path = g_build_filename (dir, "index.theme", NULL); + + default_theme = g_settings_get_default_value (self->sound_settings, "theme-name"); + + theme_file = g_key_file_new (); + if (!g_key_file_load_from_file (theme_file, theme_path, G_KEY_FILE_KEEP_COMMENTS, &load_error)) + { + if (!g_error_matches (load_error, G_FILE_ERROR, G_FILE_ERROR_NOENT)) + g_printerr ("Failed to load theme file %s: %s", theme_path, load_error->message); + } + g_key_file_set_string (theme_file, "Sound Theme", "Name", _("Custom")); + if (default_theme != NULL) + g_key_file_set_string (theme_file, "Sound Theme", "Inherits", g_variant_get_string (default_theme, NULL)); + g_key_file_set_string (theme_file, "Sound Theme", "Directories", "."); + + if (!g_key_file_save_to_file (theme_file, theme_path, &save_error)) + { + g_warning ("Failed to save theme file %s: %s", theme_path, save_error->message); + } + + set_sound_symlink ("bell-terminal", name); + set_sound_symlink ("bell-window-system", name); + + g_settings_set_boolean (self->sound_settings, "event-sounds", TRUE); + g_settings_set_string (self->sound_settings, "theme-name", CUSTOM_THEME_NAME); +} + +static void +select_sound (CcAlertChooser *self, + const gchar *name) +{ + g_autofree gchar *path = NULL; + g_autoptr(GError) error = NULL; + + path = get_sound_path (name); + if (!gsound_context_play_simple (self->context, NULL, &error, + GSOUND_ATTR_MEDIA_FILENAME, path, + NULL)) + { + g_warning ("Failed to play alert sound %s: %s", path, error->message); + } + + set_custom_theme (self, name); +} + +static void +set_button (CcAlertChooser *self, + CcSoundButton *button, + gboolean active) +{ + g_signal_handlers_block_by_func (button, clicked_cb, self); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), active); + g_signal_handlers_unblock_by_func (button, clicked_cb, self); +} + +static void +clicked_cb (CcAlertChooser *self, + CcSoundButton *button) +{ + if (button == self->bark_button) + select_sound (self, "bark"); + else if (button == self->drip_button) + select_sound (self, "drip"); + else if (button == self->glass_button) + select_sound (self, "glass"); + else if (button == self->sonar_button) + select_sound (self, "sonar"); + + set_button (self, button, TRUE); + if (button != self->bark_button) + set_button (self, self->bark_button, FALSE); + if (button != self->drip_button) + set_button (self, self->drip_button, FALSE); + if (button != self->glass_button) + set_button (self, self->glass_button, FALSE); + if (button != self->sonar_button) + set_button (self, self->sonar_button, FALSE); +} + +static void +cc_alert_chooser_dispose (GObject *object) +{ + CcAlertChooser *self = CC_ALERT_CHOOSER (object); + + g_clear_object (&self->context); + g_clear_object (&self->sound_settings); + + G_OBJECT_CLASS (cc_alert_chooser_parent_class)->dispose (object); +} + +void +cc_alert_chooser_class_init (CcAlertChooserClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = cc_alert_chooser_dispose; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/sound/cc-alert-chooser.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcAlertChooser, bark_button); + gtk_widget_class_bind_template_child (widget_class, CcAlertChooser, drip_button); + gtk_widget_class_bind_template_child (widget_class, CcAlertChooser, glass_button); + gtk_widget_class_bind_template_child (widget_class, CcAlertChooser, sonar_button); + + gtk_widget_class_bind_template_callback (widget_class, clicked_cb); + + g_type_ensure (CC_TYPE_SOUND_BUTTON); +} + +void +cc_alert_chooser_init (CcAlertChooser *self) +{ + g_autofree gchar *alert_name = NULL; + g_autoptr(GError) error = NULL; + + g_resources_register (cc_sound_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); + + self->context = gsound_context_new (NULL, &error); + if (self->context == NULL) + g_error ("Failed to make sound context: %s", error->message); + + self->sound_settings = g_settings_new (KEY_SOUNDS_SCHEMA); + + alert_name = get_alert_name (); + if (g_strcmp0 (alert_name, "bark") == 0) + set_button (self, self->bark_button, TRUE); + else if (g_strcmp0 (alert_name, "drip") == 0) + set_button (self, self->drip_button, TRUE); + else if (g_strcmp0 (alert_name, "glass") == 0) + set_button (self, self->glass_button, TRUE); + else if (g_strcmp0 (alert_name, "sonar") == 0) + set_button (self, self->sonar_button, TRUE); + else if (alert_name != NULL) + g_warning ("Current alert sound has unknown name %s", alert_name); +} diff --git a/panels/sound/cc-alert-chooser.h b/panels/sound/cc-alert-chooser.h new file mode 100644 index 0000000..c6f4b87 --- /dev/null +++ b/panels/sound/cc-alert-chooser.h @@ -0,0 +1,28 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gtk/gtk.h> + +G_BEGIN_DECLS + +#define CC_TYPE_ALERT_CHOOSER (cc_alert_chooser_get_type ()) +G_DECLARE_FINAL_TYPE (CcAlertChooser, cc_alert_chooser, CC, ALERT_CHOOSER, GtkBox) + +G_END_DECLS diff --git a/panels/sound/cc-alert-chooser.ui b/panels/sound/cc-alert-chooser.ui new file mode 100644 index 0000000..c673711 --- /dev/null +++ b/panels/sound/cc-alert-chooser.ui @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <template class="CcAlertChooser" parent="GtkBox"> + <property name="homogeneous">True</property> + <style> + <class name="linked"/> + </style> + <child> + <object class="CcSoundButton" id="bark_button"> + <property name="visible">True</property> + <property name="label" translatable="yes">Bark</property> + <signal name="clicked" handler="clicked_cb" object="CcAlertChooser" swapped="yes"/> + </object> + </child> + <child> + <object class="CcSoundButton" id="drip_button"> + <property name="visible">True</property> + <property name="label" translatable="yes">Drip</property> + <signal name="clicked" handler="clicked_cb" object="CcAlertChooser" swapped="yes"/> + </object> + </child> + <child> + <object class="CcSoundButton" id="glass_button"> + <property name="visible">True</property> + <property name="label" translatable="yes">Glass</property> + <signal name="clicked" handler="clicked_cb" object="CcAlertChooser" swapped="yes"/> + </object> + </child> + <child> + <object class="CcSoundButton" id="sonar_button"> + <property name="visible">True</property> + <property name="label" translatable="yes">Sonar</property> + <signal name="clicked" handler="clicked_cb" object="CcAlertChooser" swapped="yes"/> + </object> + </child> + </template> +</interface> diff --git a/panels/sound/cc-balance-slider.c b/panels/sound/cc-balance-slider.c new file mode 100644 index 0000000..7cb8a04 --- /dev/null +++ b/panels/sound/cc-balance-slider.c @@ -0,0 +1,119 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include "cc-sound-resources.h" +#include "cc-balance-slider.h" +#include "gvc-channel-map-private.h" + +struct _CcBalanceSlider +{ + GtkBox parent_instance; + + GtkAdjustment *adjustment; + + GvcChannelMap *channel_map; + guint volume_changed_handler_id; +}; + +G_DEFINE_TYPE (CcBalanceSlider, cc_balance_slider, GTK_TYPE_BOX) + +static void +changed_cb (CcBalanceSlider *self) +{ + gdouble value; + const pa_channel_map *pa_map; + pa_cvolume pa_volume; + + if (self->channel_map == NULL) + return; + + value = gtk_adjustment_get_value (self->adjustment); + pa_map = gvc_channel_map_get_pa_channel_map (self->channel_map); + pa_volume = *gvc_channel_map_get_cvolume (self->channel_map); + pa_cvolume_set_balance (&pa_volume, pa_map, value); + gvc_channel_map_volume_changed (self->channel_map, &pa_volume, TRUE); +} + +static void +volume_changed_cb (CcBalanceSlider *self) +{ + const gdouble *volumes; + + volumes = gvc_channel_map_get_volume (self->channel_map); + g_signal_handlers_block_by_func (self->adjustment, volume_changed_cb, self); + gtk_adjustment_set_value (self->adjustment, volumes[BALANCE]); + g_signal_handlers_unblock_by_func (self->adjustment, volume_changed_cb, self); +} + +static void +cc_balance_slider_dispose (GObject *object) +{ + CcBalanceSlider *self = CC_BALANCE_SLIDER (object); + + g_clear_object (&self->channel_map); + + G_OBJECT_CLASS (cc_balance_slider_parent_class)->dispose (object); +} + +void +cc_balance_slider_class_init (CcBalanceSliderClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = cc_balance_slider_dispose; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/sound/cc-balance-slider.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcBalanceSlider, adjustment); + + gtk_widget_class_bind_template_callback (widget_class, changed_cb); +} + +void +cc_balance_slider_init (CcBalanceSlider *self) +{ + g_resources_register (cc_sound_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); +} + +void +cc_balance_slider_set_channel_map (CcBalanceSlider *self, + GvcChannelMap *channel_map) +{ + g_return_if_fail (CC_IS_BALANCE_SLIDER (self)); + + if (self->channel_map != NULL) + { + g_signal_handler_disconnect (self->channel_map, self->volume_changed_handler_id); + self->volume_changed_handler_id = 0; + } + g_clear_object (&self->channel_map); + + if (channel_map != NULL) + { + self->channel_map = g_object_ref (channel_map); + + self->volume_changed_handler_id = g_signal_connect_object (channel_map, + "volume-changed", + G_CALLBACK (volume_changed_cb), + self, G_CONNECT_SWAPPED); + volume_changed_cb (self); + } +} diff --git a/panels/sound/cc-balance-slider.h b/panels/sound/cc-balance-slider.h new file mode 100644 index 0000000..6a968a7 --- /dev/null +++ b/panels/sound/cc-balance-slider.h @@ -0,0 +1,33 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gtk/gtk.h> +#include <pulse/pulseaudio.h> +#include <gvc-channel-map.h> + +G_BEGIN_DECLS + +#define CC_TYPE_BALANCE_SLIDER (cc_balance_slider_get_type ()) +G_DECLARE_FINAL_TYPE (CcBalanceSlider, cc_balance_slider, CC, BALANCE_SLIDER, GtkBox) + +void cc_balance_slider_set_channel_map (CcBalanceSlider *slider, + GvcChannelMap *channel_map); + +G_END_DECLS diff --git a/panels/sound/cc-balance-slider.ui b/panels/sound/cc-balance-slider.ui new file mode 100644 index 0000000..5e70da0 --- /dev/null +++ b/panels/sound/cc-balance-slider.ui @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <template class="CcBalanceSlider" parent="GtkBox"> + <child> + <object class="GtkScale"> + <property name="visible">True</property> + <property name="hexpand">True</property> + <property name="draw_value">False</property> + <property name="has_origin">False</property> + <property name="adjustment">adjustment</property> + <marks> + <mark value="-1" translatable="yes">Left</mark> + <mark value="0"/> + <mark value="1" translatable="yes">Right</mark> + </marks> + </object> + </child> + </template> + <object class="GtkAdjustment" id="adjustment"> + <property name="lower">-1.0</property> + <property name="upper">1.0</property> + <property name="step_increment">0.5</property> + <property name="page_increment">0.5</property> + <signal name="value_changed" handler="changed_cb" object="CcBalanceSlider" swapped="yes"/> + </object> +</interface> diff --git a/panels/sound/cc-device-combo-box.c b/panels/sound/cc-device-combo-box.c new file mode 100644 index 0000000..85537ef --- /dev/null +++ b/panels/sound/cc-device-combo-box.c @@ -0,0 +1,213 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include "cc-device-combo-box.h" +#include "cc-sound-resources.h" + +struct _CcDeviceComboBox +{ + GtkComboBox parent_instance; + + GtkListStore *device_model; + + GvcMixerControl *mixer_control; + guint added_handler_id; + guint removed_handler_id; + guint active_update_handler_id; + gboolean is_output; +}; + +G_DEFINE_TYPE (CcDeviceComboBox, cc_device_combo_box, GTK_TYPE_COMBO_BOX) + +static void +device_added_cb (CcDeviceComboBox *self, + guint id) +{ + GvcMixerUIDevice *device = NULL; + g_autofree gchar *label = NULL; + g_autofree gchar *icon_name = NULL; + const gchar *origin; + GtkTreeIter iter; + + if (self->is_output) + device = gvc_mixer_control_lookup_output_id (self->mixer_control, id); + else + device = gvc_mixer_control_lookup_input_id (self->mixer_control, id); + if (device == NULL) + return; + + origin = gvc_mixer_ui_device_get_origin (device); + if (origin && origin[0] != '\0') + { + label = g_strdup_printf ("%s - %s", + gvc_mixer_ui_device_get_description (device), + origin); + } + else + { + label = g_strdup (gvc_mixer_ui_device_get_description (device)); + } + + if (gvc_mixer_ui_device_get_icon_name (device) != NULL) + icon_name = g_strdup_printf ("%s-symbolic", gvc_mixer_ui_device_get_icon_name (device)); + + gtk_list_store_append (self->device_model, &iter); + gtk_list_store_set (self->device_model, &iter, + 0, label, + 1, icon_name, + 2, id, + -1); +} + +static gboolean +get_iter (CcDeviceComboBox *self, + guint id, + GtkTreeIter *iter) +{ + if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (self->device_model), iter)) + return FALSE; + + do + { + guint i; + + gtk_tree_model_get (GTK_TREE_MODEL (self->device_model), iter, 2, &i, -1); + if (i == id) + return TRUE; + } while (gtk_tree_model_iter_next (GTK_TREE_MODEL (self->device_model), iter)); + + return FALSE; +} + +static void +device_removed_cb (CcDeviceComboBox *self, + guint id) +{ + GtkTreeIter iter; + + if (get_iter (self, id, &iter)) + gtk_list_store_remove (self->device_model, &iter); +} + +static void +active_device_update_cb (CcDeviceComboBox *self, + guint id) +{ + GtkTreeIter iter; + + if (get_iter (self, id, &iter)) + gtk_combo_box_set_active_iter (GTK_COMBO_BOX (self), &iter); +} + +static void +cc_device_combo_box_dispose (GObject *object) +{ + CcDeviceComboBox *self = CC_DEVICE_COMBO_BOX (object); + + g_clear_object (&self->mixer_control); + + G_OBJECT_CLASS (cc_device_combo_box_parent_class)->dispose (object); +} + +void +cc_device_combo_box_class_init (CcDeviceComboBoxClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = cc_device_combo_box_dispose; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/sound/cc-device-combo-box.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcDeviceComboBox, device_model); +} + +void +cc_device_combo_box_init (CcDeviceComboBox *self) +{ + g_resources_register (cc_sound_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); +} + +void +cc_device_combo_box_set_mixer_control (CcDeviceComboBox *self, + GvcMixerControl *mixer_control, + gboolean is_output) +{ + const gchar *added_signal, *removed_signal, *active_update_signal; + g_return_if_fail (CC_IS_DEVICE_COMBO_BOX (self)); + + if (self->mixer_control != NULL) + { + g_signal_handler_disconnect (self->mixer_control, self->added_handler_id); + self->added_handler_id = 0; + g_signal_handler_disconnect (self->mixer_control, self->removed_handler_id); + self->removed_handler_id = 0; + g_signal_handler_disconnect (self->mixer_control, self->active_update_handler_id); + self->active_update_handler_id = 0; + } + g_clear_object (&self->mixer_control); + + self->mixer_control = g_object_ref (mixer_control); + self->is_output = is_output; + if (is_output) + { + added_signal = "output-added"; + removed_signal = "output-removed"; + active_update_signal = "active-output-update"; + } + else + { + added_signal = "input-added"; + removed_signal = "input-removed"; + active_update_signal = "active-input-update"; + } + + self->added_handler_id = g_signal_connect_object (self->mixer_control, + added_signal, + G_CALLBACK (device_added_cb), + self, G_CONNECT_SWAPPED); + self->removed_handler_id = g_signal_connect_object (self->mixer_control, + removed_signal, + G_CALLBACK (device_removed_cb), + self, G_CONNECT_SWAPPED); + self->active_update_handler_id = g_signal_connect_object (self->mixer_control, + active_update_signal, + G_CALLBACK (active_device_update_cb), + self, G_CONNECT_SWAPPED); +} + +GvcMixerUIDevice * +cc_device_combo_box_get_device (CcDeviceComboBox *self) +{ + GtkTreeIter iter; + guint id; + + g_return_val_if_fail (CC_IS_DEVICE_COMBO_BOX (self), NULL); + + if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX (self), &iter)) + return NULL; + + gtk_tree_model_get (GTK_TREE_MODEL (self->device_model), &iter, 2, &id, -1); + + if (self->is_output) + return gvc_mixer_control_lookup_output_id (self->mixer_control, id); + else + return gvc_mixer_control_lookup_input_id (self->mixer_control, id); +} diff --git a/panels/sound/cc-device-combo-box.h b/panels/sound/cc-device-combo-box.h new file mode 100644 index 0000000..119de59 --- /dev/null +++ b/panels/sound/cc-device-combo-box.h @@ -0,0 +1,36 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gtk/gtk.h> +#include <pulse/pulseaudio.h> +#include <gvc-mixer-control.h> + +G_BEGIN_DECLS + +#define CC_TYPE_DEVICE_COMBO_BOX (cc_device_combo_box_get_type ()) +G_DECLARE_FINAL_TYPE (CcDeviceComboBox, cc_device_combo_box, CC, DEVICE_COMBO_BOX, GtkComboBox) + +void cc_device_combo_box_set_mixer_control (CcDeviceComboBox *combo_box, + GvcMixerControl *mixer_control, + gboolean is_output); + +GvcMixerUIDevice *cc_device_combo_box_get_device (CcDeviceComboBox *combo_box); + +G_END_DECLS diff --git a/panels/sound/cc-device-combo-box.ui b/panels/sound/cc-device-combo-box.ui new file mode 100644 index 0000000..e54f292 --- /dev/null +++ b/panels/sound/cc-device-combo-box.ui @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <template class="CcDeviceComboBox" parent="GtkComboBox"> + <property name="model">device_model</property> + <child> + <object class="GtkCellRendererPixbuf"> + <property name="xpad">6</property> + </object> + <attributes> + <attribute name="icon-name">1</attribute> + </attributes> + </child> + <child> + <object class="GtkCellRendererText"> + <property name="ellipsize">end</property> + </object> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> + </template> + <object class="GtkListStore" id="device_model"> + <columns> + <!-- column-name title --> + <column type="gchararray"/> + <!-- column-name icon --> + <column type="gchararray"/> + <!-- column-name id --> + <column type="guint"/> + </columns> + </object> +</interface> diff --git a/panels/sound/cc-fade-slider.c b/panels/sound/cc-fade-slider.c new file mode 100644 index 0000000..888f214 --- /dev/null +++ b/panels/sound/cc-fade-slider.c @@ -0,0 +1,119 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include "cc-sound-resources.h" +#include "cc-fade-slider.h" +#include "gvc-channel-map-private.h" + +struct _CcFadeSlider +{ + GtkBox parent_instance; + + GtkAdjustment *adjustment; + + GvcChannelMap *channel_map; + guint volume_changed_handler_id; +}; + +G_DEFINE_TYPE (CcFadeSlider, cc_fade_slider, GTK_TYPE_BOX) + +static void +changed_cb (CcFadeSlider *self) +{ + gdouble value; + const pa_channel_map *pa_map; + pa_cvolume pa_volume; + + if (self->channel_map == NULL) + return; + + value = gtk_adjustment_get_value (self->adjustment); + pa_map = gvc_channel_map_get_pa_channel_map (self->channel_map); + pa_volume = *gvc_channel_map_get_cvolume (self->channel_map); + pa_cvolume_set_fade (&pa_volume, pa_map, value); + gvc_channel_map_volume_changed (self->channel_map, &pa_volume, TRUE); +} + +static void +volume_changed_cb (CcFadeSlider *self) +{ + const gdouble *volumes; + + volumes = gvc_channel_map_get_volume (self->channel_map); + g_signal_handlers_block_by_func (self->adjustment, volume_changed_cb, self); + gtk_adjustment_set_value (self->adjustment, volumes[FADE]); + g_signal_handlers_unblock_by_func (self->adjustment, volume_changed_cb, self); +} + +static void +cc_fade_slider_dispose (GObject *object) +{ + CcFadeSlider *self = CC_FADE_SLIDER (object); + + g_clear_object (&self->channel_map); + + G_OBJECT_CLASS (cc_fade_slider_parent_class)->dispose (object); +} + +void +cc_fade_slider_class_init (CcFadeSliderClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = cc_fade_slider_dispose; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/sound/cc-fade-slider.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcFadeSlider, adjustment); + + gtk_widget_class_bind_template_callback (widget_class, changed_cb); +} + +void +cc_fade_slider_init (CcFadeSlider *self) +{ + g_resources_register (cc_sound_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); +} + +void +cc_fade_slider_set_channel_map (CcFadeSlider *self, + GvcChannelMap *channel_map) +{ + g_return_if_fail (CC_IS_FADE_SLIDER (self)); + + if (self->channel_map != NULL) + { + g_signal_handler_disconnect (self->channel_map, self->volume_changed_handler_id); + self->volume_changed_handler_id = 0; + } + g_clear_object (&self->channel_map); + + if (channel_map != NULL) + { + self->channel_map = g_object_ref (channel_map); + + self->volume_changed_handler_id = g_signal_connect_object (channel_map, + "volume-changed", + G_CALLBACK (volume_changed_cb), + self, G_CONNECT_SWAPPED); + volume_changed_cb (self); + } +} diff --git a/panels/sound/cc-fade-slider.h b/panels/sound/cc-fade-slider.h new file mode 100644 index 0000000..92b8041 --- /dev/null +++ b/panels/sound/cc-fade-slider.h @@ -0,0 +1,33 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gtk/gtk.h> +#include <pulse/pulseaudio.h> +#include <gvc-channel-map.h> + +G_BEGIN_DECLS + +#define CC_TYPE_FADE_SLIDER (cc_fade_slider_get_type ()) +G_DECLARE_FINAL_TYPE (CcFadeSlider, cc_fade_slider, CC, FADE_SLIDER, GtkBox) + +void cc_fade_slider_set_channel_map (CcFadeSlider *slider, + GvcChannelMap *channel_map); + +G_END_DECLS diff --git a/panels/sound/cc-fade-slider.ui b/panels/sound/cc-fade-slider.ui new file mode 100644 index 0000000..1d01c31 --- /dev/null +++ b/panels/sound/cc-fade-slider.ui @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <template class="CcFadeSlider" parent="GtkBox"> + <child> + <object class="GtkScale"> + <property name="visible">True</property> + <property name="hexpand">True</property> + <property name="draw_value">False</property> + <property name="has_origin">False</property> + <property name="adjustment">adjustment</property> + <marks> + <mark value="-1" translatable="yes">Rear</mark> + <mark value="0"/> + <mark value="1" translatable="yes">Front</mark> + </marks> + </object> + </child> + </template> + <object class="GtkAdjustment" id="adjustment"> + <property name="lower">-1.0</property> + <property name="upper">1.0</property> + <property name="step_increment">0.5</property> + <property name="page_increment">0.5</property> + <signal name="value_changed" handler="changed_cb" object="CcFadeSlider" swapped="yes"/> + </object> +</interface> diff --git a/panels/sound/cc-level-bar.c b/panels/sound/cc-level-bar.c new file mode 100644 index 0000000..8d8b2c9 --- /dev/null +++ b/panels/sound/cc-level-bar.c @@ -0,0 +1,279 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include "cc-level-bar.h" +#include "cc-sound-enums.h" +#include "gvc-mixer-stream-private.h" + +struct _CcLevelBar +{ + GtkWidget parent_instance; + + CcStreamType type; + pa_stream *level_stream; + gdouble last_input_peak; + + gdouble value; +}; + +G_DEFINE_TYPE (CcLevelBar, cc_level_bar, GTK_TYPE_WIDGET) + +#define LED_WIDTH 12 +#define LED_HEIGHT 3 +#define LED_SPACING 4 + +#define DECAY_STEP .15 + +static void +set_peak (CcLevelBar *self, + gdouble value) +{ + if (value < 0) + value = 0; + if (value > 1) + value = 1; + + if (self->last_input_peak >= DECAY_STEP && + value < self->last_input_peak - DECAY_STEP) + value = self->last_input_peak - DECAY_STEP; + self->last_input_peak = value; + + self->value = value; + gtk_widget_queue_draw (GTK_WIDGET (self)); +} + +static void +read_cb (pa_stream *stream, + size_t length, + void *userdata) +{ + CcLevelBar *self = userdata; + const void *data; + gdouble value; + + if (pa_stream_peek (stream, &data, &length) < 0) + { + g_warning ("Failed to read data from stream"); + return; + } + + if (!data) + { + pa_stream_drop (stream); + return; + } + + assert (length > 0); + assert (length % sizeof (float) == 0); + + value = ((const float *) data)[length / sizeof (float) -1]; + + pa_stream_drop (stream); + + set_peak (self, value); +} + +static void +suspended_cb (pa_stream *stream, + void *userdata) +{ + CcLevelBar *self = userdata; + + if (pa_stream_is_suspended (stream)) + { + g_debug ("Stream suspended"); + self->value = 0.0; + gtk_widget_queue_draw (GTK_WIDGET (self)); + } +} + +static void +cc_level_bar_get_preferred_height (GtkWidget *widget, + gint *minimum, + gint *natural) +{ + *minimum = *natural = LED_HEIGHT; +} + +static void +set_source_blend (cairo_t *cr, GdkRGBA *a, GdkRGBA *b, gdouble f) +{ + cairo_set_source_rgb (cr, + (1.0 - f) * a->red + f * b->red, + (1.0 - f) * a->green + f * b->green, + (1.0 - f) * a->blue + f * b->blue); +} + +static gboolean +cc_level_bar_draw (GtkWidget *widget, + cairo_t *cr) +{ + CcLevelBar *self = CC_LEVEL_BAR (widget); + GtkAllocation allocation; + GdkRGBA inactive_color, active_color; + int i, n_leds; + double level; + double spacing, x_offset = 0.0; + + gtk_widget_get_allocation (widget, &allocation); + + n_leds = allocation.width / (LED_WIDTH + LED_SPACING); + spacing = (double) (allocation.width - (n_leds * LED_WIDTH)) / (n_leds - 1); + level = self->value * n_leds; + + gdk_rgba_parse (&inactive_color, "#C0C0C0"); + switch (self->type) + { + default: + case CC_STREAM_TYPE_OUTPUT: + gdk_rgba_parse (&active_color, "#4a90d9"); + break; + case CC_STREAM_TYPE_INPUT: + gdk_rgba_parse (&active_color, "#ff0000"); + break; + } + + for (i = 0; i < n_leds; i++) + { + double led_level; + + led_level = level - i; + if (led_level < 0.0) + led_level = 0.0; + else if (led_level > 1.0) + led_level = 1.0; + + cairo_rectangle (cr, + x_offset, 0, + LED_WIDTH, allocation.height); + set_source_blend (cr, &inactive_color, &active_color, led_level); + cairo_fill (cr); + x_offset += LED_WIDTH + spacing; + } + + return FALSE; +} + +static void +close_stream (pa_stream *stream) +{ + if (stream == NULL) + return; + + /* Stop receiving data */ + pa_stream_set_read_callback (stream, NULL, NULL); + pa_stream_set_suspended_callback (stream, NULL, NULL); + + /* Disconnect from the stream */ + pa_stream_disconnect (stream); +} + +static void +cc_level_bar_dispose (GObject *object) +{ + CcLevelBar *self = CC_LEVEL_BAR (object); + + close_stream (self->level_stream); + g_clear_pointer (&self->level_stream, pa_stream_unref); + + G_OBJECT_CLASS (cc_level_bar_parent_class)->dispose (object); +} + +void +cc_level_bar_class_init (CcLevelBarClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = cc_level_bar_dispose; + + widget_class->get_preferred_height = cc_level_bar_get_preferred_height; + widget_class->draw = cc_level_bar_draw; +} + +void +cc_level_bar_init (CcLevelBar *self) +{ + gtk_widget_set_has_window (GTK_WIDGET (self), FALSE); +} + +void +cc_level_bar_set_stream (CcLevelBar *self, + GvcMixerStream *stream, + CcStreamType type) +{ + pa_context *context; + pa_sample_spec sample_spec; + pa_proplist *proplist; + pa_buffer_attr attr; + g_autofree gchar *device = NULL; + + g_return_if_fail (CC_IS_LEVEL_BAR (self)); + + close_stream (self->level_stream); + g_clear_pointer (&self->level_stream, pa_stream_unref); + + self->type = type; + + if (stream == NULL) + { + gtk_widget_queue_draw (GTK_WIDGET (self)); + return; + } + + context = gvc_mixer_stream_get_pa_context (stream); + + if (pa_context_get_server_protocol_version (context) < 13) + { + g_warning ("Unsupported version of PulseAudio"); + return; + } + + sample_spec.channels = 1; + sample_spec.format = PA_SAMPLE_FLOAT32; + sample_spec.rate = 25; + + proplist = pa_proplist_new (); + pa_proplist_sets (proplist, PA_PROP_APPLICATION_ID, "org.gnome.VolumeControl"); + self->level_stream = pa_stream_new_with_proplist (context, "Peak detect", &sample_spec, NULL, proplist); + pa_proplist_free (proplist); + if (self->level_stream == NULL) + { + g_warning ("Failed to create monitoring stream"); + return; + } + + pa_stream_set_read_callback (self->level_stream, read_cb, self); + pa_stream_set_suspended_callback (self->level_stream, suspended_cb, self); + + memset (&attr, 0, sizeof (attr)); + attr.fragsize = sizeof (float); + attr.maxlength = (uint32_t) -1; + device = g_strdup_printf ("%u", gvc_mixer_stream_get_index (stream)); + if (pa_stream_connect_record (self->level_stream, + device, + &attr, + (pa_stream_flags_t) (PA_STREAM_DONT_MOVE | + PA_STREAM_PEAK_DETECT | + PA_STREAM_ADJUST_LATENCY)) < 0) + { + g_warning ("Failed to connect monitoring stream"); + } + + gtk_widget_queue_draw (GTK_WIDGET (self)); +} diff --git a/panels/sound/cc-level-bar.h b/panels/sound/cc-level-bar.h new file mode 100644 index 0000000..34ef1ea --- /dev/null +++ b/panels/sound/cc-level-bar.h @@ -0,0 +1,36 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gtk/gtk.h> +#include <pulse/pulseaudio.h> +#include <gvc-mixer-stream.h> + +#include "cc-sound-enums.h" + +G_BEGIN_DECLS + +#define CC_TYPE_LEVEL_BAR (cc_level_bar_get_type ()) +G_DECLARE_FINAL_TYPE (CcLevelBar, cc_level_bar, CC, LEVEL_BAR, GtkWidget) + +void cc_level_bar_set_stream (CcLevelBar *bar, + GvcMixerStream *stream, + CcStreamType type); + +G_END_DECLS diff --git a/panels/sound/cc-output-test-dialog.c b/panels/sound/cc-output-test-dialog.c new file mode 100644 index 0000000..67c0a27 --- /dev/null +++ b/panels/sound/cc-output-test-dialog.c @@ -0,0 +1,160 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include <gsound.h> +#include <glib/gi18n.h> + +#include "cc-output-test-dialog.h" +#include "cc-sound-resources.h" +#include "cc-speaker-test-button.h" + +struct _CcOutputTestDialog +{ + GtkDialog parent_instance; + + CcSpeakerTestButton *front_center_speaker_button; + CcSpeakerTestButton *front_left_speaker_button; + CcSpeakerTestButton *front_left_of_center_speaker_button; + CcSpeakerTestButton *front_right_of_center_speaker_button; + CcSpeakerTestButton *front_right_speaker_button; + CcSpeakerTestButton *lfe_speaker_button; + CcSpeakerTestButton *rear_center_speaker_button; + CcSpeakerTestButton *rear_left_speaker_button; + CcSpeakerTestButton *rear_right_speaker_button; + CcSpeakerTestButton *side_left_speaker_button; + CcSpeakerTestButton *side_right_speaker_button; + + GvcMixerUIDevice *device; + GSoundContext *context; +}; + +G_DEFINE_TYPE (CcOutputTestDialog, cc_output_test_dialog, GTK_TYPE_DIALOG) + +static void +cc_output_test_dialog_dispose (GObject *object) +{ + CcOutputTestDialog *self = CC_OUTPUT_TEST_DIALOG (object); + + g_clear_object (&self->device); + g_clear_object (&self->context); + + G_OBJECT_CLASS (cc_output_test_dialog_parent_class)->dispose (object); +} + +void +cc_output_test_dialog_class_init (CcOutputTestDialogClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = cc_output_test_dialog_dispose; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/sound/cc-output-test-dialog.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcOutputTestDialog, front_center_speaker_button); + gtk_widget_class_bind_template_child (widget_class, CcOutputTestDialog, front_left_speaker_button); + gtk_widget_class_bind_template_child (widget_class, CcOutputTestDialog, front_left_of_center_speaker_button); + gtk_widget_class_bind_template_child (widget_class, CcOutputTestDialog, front_right_of_center_speaker_button); + gtk_widget_class_bind_template_child (widget_class, CcOutputTestDialog, front_right_speaker_button); + gtk_widget_class_bind_template_child (widget_class, CcOutputTestDialog, lfe_speaker_button); + gtk_widget_class_bind_template_child (widget_class, CcOutputTestDialog, rear_center_speaker_button); + gtk_widget_class_bind_template_child (widget_class, CcOutputTestDialog, rear_left_speaker_button); + gtk_widget_class_bind_template_child (widget_class, CcOutputTestDialog, rear_right_speaker_button); + gtk_widget_class_bind_template_child (widget_class, CcOutputTestDialog, side_left_speaker_button); + gtk_widget_class_bind_template_child (widget_class, CcOutputTestDialog, side_right_speaker_button); + + g_type_ensure (CC_TYPE_SPEAKER_TEST_BUTTON); +} + +void +cc_output_test_dialog_init (CcOutputTestDialog *self) +{ + GtkSettings *settings; + g_autofree gchar *theme_name = NULL; + + g_resources_register (cc_sound_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); + + self->context = gsound_context_new (NULL, NULL); + gsound_context_set_driver (self->context, "pulse", NULL); + gsound_context_set_attributes (self->context, NULL, + GSOUND_ATTR_APPLICATION_ID, "org.gnome.VolumeControl", + NULL); + settings = gtk_settings_get_for_screen (gdk_screen_get_default ()); + g_object_get (G_OBJECT (settings), + "gtk-sound-theme-name", &theme_name, + NULL); + if (theme_name != NULL) + gsound_context_set_attributes (self->context, NULL, + GSOUND_ATTR_CANBERRA_XDG_THEME_NAME, theme_name, + NULL); + + cc_speaker_test_button_set_channel_position (self->front_left_speaker_button, self->context, PA_CHANNEL_POSITION_FRONT_LEFT); + cc_speaker_test_button_set_channel_position (self->front_left_of_center_speaker_button, self->context, PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER); + cc_speaker_test_button_set_channel_position (self->front_center_speaker_button, self->context, PA_CHANNEL_POSITION_FRONT_CENTER); + cc_speaker_test_button_set_channel_position (self->front_right_of_center_speaker_button, self->context, PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER); + cc_speaker_test_button_set_channel_position (self->front_right_speaker_button, self->context, PA_CHANNEL_POSITION_FRONT_RIGHT); + cc_speaker_test_button_set_channel_position (self->side_left_speaker_button, self->context, PA_CHANNEL_POSITION_SIDE_LEFT); + cc_speaker_test_button_set_channel_position (self->side_right_speaker_button, self->context, PA_CHANNEL_POSITION_SIDE_RIGHT); + cc_speaker_test_button_set_channel_position (self->lfe_speaker_button, self->context, PA_CHANNEL_POSITION_LFE); + cc_speaker_test_button_set_channel_position (self->rear_left_speaker_button, self->context, PA_CHANNEL_POSITION_REAR_LEFT); + cc_speaker_test_button_set_channel_position (self->rear_center_speaker_button, self->context, PA_CHANNEL_POSITION_REAR_CENTER); + cc_speaker_test_button_set_channel_position (self->rear_right_speaker_button, self->context, PA_CHANNEL_POSITION_REAR_RIGHT); +} + +CcOutputTestDialog * +cc_output_test_dialog_new (GvcMixerUIDevice *device, + GvcMixerStream *stream) +{ + CcOutputTestDialog *self; + const GvcChannelMap *map = NULL; + g_autofree gchar *title = NULL; + + self = g_object_new (CC_TYPE_OUTPUT_TEST_DIALOG, + "use-header-bar", 1, + NULL); + self->device = g_object_ref (device); + + title = g_strdup_printf (_("Testing %s"), gvc_mixer_ui_device_get_description (device)); + gtk_header_bar_set_title (GTK_HEADER_BAR (gtk_dialog_get_header_bar (GTK_DIALOG (self))), title); + + map = gvc_mixer_stream_get_channel_map (stream); + gtk_widget_set_visible (GTK_WIDGET (self->front_left_speaker_button), gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_FRONT_LEFT)); + gtk_widget_set_visible (GTK_WIDGET (self->front_left_of_center_speaker_button), gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER)); + gtk_widget_set_visible (GTK_WIDGET (self->front_center_speaker_button), gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_FRONT_CENTER)); + gtk_widget_set_visible (GTK_WIDGET (self->front_right_of_center_speaker_button), gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER)); + gtk_widget_set_visible (GTK_WIDGET (self->front_right_speaker_button), gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_FRONT_RIGHT)); + gtk_widget_set_visible (GTK_WIDGET (self->side_left_speaker_button), gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_SIDE_LEFT)); + gtk_widget_set_visible (GTK_WIDGET (self->side_right_speaker_button), gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_SIDE_RIGHT)); + gtk_widget_set_visible (GTK_WIDGET (self->lfe_speaker_button), gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_LFE)); + gtk_widget_set_visible (GTK_WIDGET (self->rear_left_speaker_button), gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_REAR_LEFT)); + gtk_widget_set_visible (GTK_WIDGET (self->rear_center_speaker_button), gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_REAR_CENTER)); + gtk_widget_set_visible (GTK_WIDGET (self->rear_right_speaker_button), gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_REAR_RIGHT)); + + /* Replace the center channel with a mono channel */ + if (gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_MONO)) + { + if (gvc_channel_map_has_position (map, PA_CHANNEL_POSITION_FRONT_CENTER)) + g_warning ("Testing output with both front center and mono channels - front center is hidden"); + cc_speaker_test_button_set_channel_position (self->front_center_speaker_button, self->context, PA_CHANNEL_POSITION_MONO); + gtk_widget_set_visible (GTK_WIDGET (self->front_center_speaker_button), TRUE); + } + + return self; +} diff --git a/panels/sound/cc-output-test-dialog.h b/panels/sound/cc-output-test-dialog.h new file mode 100644 index 0000000..ece6f82 --- /dev/null +++ b/panels/sound/cc-output-test-dialog.h @@ -0,0 +1,34 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gtk/gtk.h> +#include <gvc-mixer-ui-device.h> +#include <pulse/pulseaudio.h> +#include <gvc-mixer-stream.h> + +G_BEGIN_DECLS + +#define CC_TYPE_OUTPUT_TEST_DIALOG (cc_output_test_dialog_get_type ()) +G_DECLARE_FINAL_TYPE (CcOutputTestDialog, cc_output_test_dialog, CC, OUTPUT_TEST_DIALOG, GtkDialog) + +CcOutputTestDialog *cc_output_test_dialog_new (GvcMixerUIDevice *device, + GvcMixerStream *stream); + +G_END_DECLS diff --git a/panels/sound/cc-output-test-dialog.ui b/panels/sound/cc-output-test-dialog.ui new file mode 100644 index 0000000..8d84e27 --- /dev/null +++ b/panels/sound/cc-output-test-dialog.ui @@ -0,0 +1,159 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <template class="CcOutputTestDialog" parent="GtkDialog"> + <property name="resizable">False</property> + <child internal-child="vbox"> + <object class="GtkBox"> + <child> + <object class="GtkGrid"> + <property name="visible">True</property> + <property name="row_spacing">30</property> + <property name="column_spacing">30</property> + <property name="margin">30</property> + <child> + <object class="CcSpeakerTestButton" id="front_left_speaker_button"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="CcSpeakerTestButton" id="front_left_of_center_speaker_button"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="CcSpeakerTestButton" id="front_center_speaker_button"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="CcSpeakerTestButton" id="front_right_of_center_speaker_button"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">3</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="CcSpeakerTestButton" id="front_right_speaker_button"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">4</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="CcSpeakerTestButton" id="side_left_speaker_button"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkImage"> + <property name="visible">True</property> + <property name="icon_name">avatar-default-symbolic</property> + <property name="pixel_size">64</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="CcSpeakerTestButton" id="side_right_speaker_button"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">4</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="CcSpeakerTestButton" id="rear_left_speaker_button"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="CcSpeakerTestButton" id="rear_center_speaker_button"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="CcSpeakerTestButton" id="lfe_speaker_button"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">3</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="CcSpeakerTestButton" id="rear_right_speaker_button"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">4</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="label" translatable="yes">Click a speaker to test</property> + <style> + <class name="dim-label"/> + </style> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">3</property> + <property name="width">5</property> + </packing> + </child> + </object> + </child> + </object> + </child> + </template> + <object class="GtkSizeGroup"> + <property name="mode">both</property> + <widgets> + <widget name="front_left_speaker_button"/> + <widget name="front_left_of_center_speaker_button"/> + <widget name="front_center_speaker_button"/> + <widget name="front_right_of_center_speaker_button"/> + <widget name="front_right_speaker_button"/> + <widget name="side_left_speaker_button"/> + <widget name="side_right_speaker_button"/> + <widget name="rear_left_speaker_button"/> + <widget name="rear_center_speaker_button"/> + <widget name="lfe_speaker_button"/> + <widget name="rear_right_speaker_button"/> + </widgets> + </object> +</interface> diff --git a/panels/sound/cc-profile-combo-box.c b/panels/sound/cc-profile-combo-box.c new file mode 100644 index 0000000..a328b98 --- /dev/null +++ b/panels/sound/cc-profile-combo-box.c @@ -0,0 +1,135 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include "cc-profile-combo-box.h" +#include "cc-sound-resources.h" + +struct _CcProfileComboBox +{ + GtkComboBox parent_instance; + + GtkListStore *profile_model; + + GvcMixerControl *mixer_control; + GvcMixerUIDevice *device; +}; + +G_DEFINE_TYPE (CcProfileComboBox, cc_profile_combo_box, GTK_TYPE_COMBO_BOX) + +static void +profile_changed_cb (CcProfileComboBox *self) +{ + GtkTreeIter iter; + g_autofree gchar *profile = NULL; + + if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX (self), &iter)) + return; + + gtk_tree_model_get (GTK_TREE_MODEL (self->profile_model), &iter, + 1, &profile, + -1); + + if (!gvc_mixer_control_change_profile_on_selected_device (self->mixer_control, + self->device, + profile)) + { + g_warning ("Failed to change profile on %s", gvc_mixer_ui_device_get_description (self->device)); + } +} + +static void +cc_profile_combo_box_dispose (GObject *object) +{ + CcProfileComboBox *self = CC_PROFILE_COMBO_BOX (object); + + g_clear_object (&self->device); + + G_OBJECT_CLASS (cc_profile_combo_box_parent_class)->dispose (object); +} + +void +cc_profile_combo_box_class_init (CcProfileComboBoxClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = cc_profile_combo_box_dispose; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/sound/cc-profile-combo-box.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcProfileComboBox, profile_model); + + gtk_widget_class_bind_template_callback (widget_class, profile_changed_cb); +} + +void +cc_profile_combo_box_init (CcProfileComboBox *self) +{ + g_resources_register (cc_sound_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); +} + +void +cc_profile_combo_box_set_device (CcProfileComboBox *self, + GvcMixerControl *mixer_control, + GvcMixerUIDevice *device) +{ + GList *profiles, *link; + + g_return_if_fail (CC_IS_PROFILE_COMBO_BOX (self)); + + if (device == self->device) + return; + + g_clear_object (&self->mixer_control); + self->mixer_control = g_object_ref (mixer_control); + g_clear_object (&self->device); + gtk_list_store_clear (self->profile_model); + + if (device == NULL) + return; + + self->device = g_object_ref (device); + profiles = gvc_mixer_ui_device_get_profiles (device); + for (link = profiles; link; link = link->next) + { + GvcMixerCardProfile *profile = link->data; + GtkTreeIter iter; + + gtk_list_store_append (self->profile_model, &iter); + gtk_list_store_set (self->profile_model, &iter, + 0, profile->human_profile, + 1, profile->profile, + -1); + + if (g_strcmp0 (gvc_mixer_ui_device_get_active_profile (device), profile->profile) == 0) + { + g_signal_handlers_block_by_func(self, profile_changed_cb, self); + gtk_combo_box_set_active_iter (GTK_COMBO_BOX (self), &iter); + g_signal_handlers_unblock_by_func(self, profile_changed_cb, self); + } + } +} + +gint +cc_profile_combo_box_get_profile_count (CcProfileComboBox *self) +{ + g_return_val_if_fail (CC_IS_PROFILE_COMBO_BOX (self), 0); + return gtk_tree_model_iter_n_children (GTK_TREE_MODEL (self->profile_model), NULL); +} diff --git a/panels/sound/cc-profile-combo-box.h b/panels/sound/cc-profile-combo-box.h new file mode 100644 index 0000000..d76becb --- /dev/null +++ b/panels/sound/cc-profile-combo-box.h @@ -0,0 +1,37 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gtk/gtk.h> +#include <pulse/pulseaudio.h> +#include <gvc-mixer-control.h> +#include <gvc-mixer-ui-device.h> + +G_BEGIN_DECLS + +#define CC_TYPE_PROFILE_COMBO_BOX (cc_profile_combo_box_get_type ()) +G_DECLARE_FINAL_TYPE (CcProfileComboBox, cc_profile_combo_box, CC, PROFILE_COMBO_BOX, GtkComboBox) + +void cc_profile_combo_box_set_device (CcProfileComboBox *combo_box, + GvcMixerControl *mixer_control, + GvcMixerUIDevice *device); + +gint cc_profile_combo_box_get_profile_count (CcProfileComboBox *combo_box); + +G_END_DECLS diff --git a/panels/sound/cc-profile-combo-box.ui b/panels/sound/cc-profile-combo-box.ui new file mode 100644 index 0000000..58f2d9b --- /dev/null +++ b/panels/sound/cc-profile-combo-box.ui @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <template class="CcProfileComboBox" parent="GtkComboBox"> + <property name="model">profile_model</property> + <signal name="changed" handler="profile_changed_cb" object="CcProfileComboBox" swapped="yes"/> + <child> + <object class="GtkCellRendererText"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> + </template> + <object class="GtkListStore" id="profile_model"> + <columns> + <!-- column-name title --> + <column type="gchararray"/> + <!-- column-name profile --> + <column type="gchararray"/> + </columns> + </object> +</interface> diff --git a/panels/sound/cc-sound-button.c b/panels/sound/cc-sound-button.c new file mode 100644 index 0000000..f8e8d09 --- /dev/null +++ b/panels/sound/cc-sound-button.c @@ -0,0 +1,100 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include "cc-sound-button.h" +#include "cc-sound-resources.h" + +struct _CcSoundButton +{ + GtkToggleButton parent_instance; + + GtkImage *image; + GtkLabel *label; +}; + +G_DEFINE_TYPE (CcSoundButton, cc_sound_button, GTK_TYPE_TOGGLE_BUTTON) + +enum +{ + PROP_0, + PROP_LABEL +}; + +static void +cc_sound_button_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + CcSoundButton *self = CC_SOUND_BUTTON (object); + + switch (property_id) { + case PROP_LABEL: + gtk_label_set_label (self->label, g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +cc_sound_button_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + CcSoundButton *self = CC_SOUND_BUTTON (object); + + switch (property_id) { + case PROP_LABEL: + g_value_set_string (value, gtk_label_get_label (self->label)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +void +cc_sound_button_class_init (CcSoundButtonClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->set_property = cc_sound_button_set_property; + object_class->get_property = cc_sound_button_get_property; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/sound/cc-sound-button.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcSoundButton, image); + gtk_widget_class_bind_template_child (widget_class, CcSoundButton, label); + + g_object_class_install_property (object_class, PROP_LABEL, + g_param_spec_string ("label", + NULL, + NULL, + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); +} + +void +cc_sound_button_init (CcSoundButton *self) +{ + g_resources_register (cc_sound_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); +} diff --git a/panels/sound/cc-sound-button.h b/panels/sound/cc-sound-button.h new file mode 100644 index 0000000..9a2ff0b --- /dev/null +++ b/panels/sound/cc-sound-button.h @@ -0,0 +1,28 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gtk/gtk.h> + +G_BEGIN_DECLS + +#define CC_TYPE_SOUND_BUTTON (cc_sound_button_get_type ()) +G_DECLARE_FINAL_TYPE (CcSoundButton, cc_sound_button, CC, SOUND_BUTTON, GtkToggleButton) + +G_END_DECLS diff --git a/panels/sound/cc-sound-button.ui b/panels/sound/cc-sound-button.ui new file mode 100644 index 0000000..c7eddd9 --- /dev/null +++ b/panels/sound/cc-sound-button.ui @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <template class="CcSoundButton" parent="GtkToggleButton"> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <property name="valign">center</property> + <child> + <object class="GtkImage" id="image"> + <property name="icon_name">audio-speakers-symbolic</property> + <property name="pixel_size">32</property> + </object> + </child> + <child> + <object class="GtkLabel" id="label"> + <property name="visible">True</property> + <property name="wrap">True</property> + <property name="wrap_mode">word-char</property> + </object> + </child> + </object> + </child> + </template> +</interface> diff --git a/panels/sound/cc-sound-enums.h b/panels/sound/cc-sound-enums.h new file mode 100644 index 0000000..bf29d27 --- /dev/null +++ b/panels/sound/cc-sound-enums.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2019 Jordan Petridis <jpetridis@gnome.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <glib.h> + +G_BEGIN_DECLS + +typedef enum +{ + CC_STREAM_TYPE_OUTPUT, + CC_STREAM_TYPE_INPUT, +} CcStreamType; + +G_END_DECLS diff --git a/panels/sound/cc-sound-panel.c b/panels/sound/cc-sound-panel.c new file mode 100644 index 0000000..200df43 --- /dev/null +++ b/panels/sound/cc-sound-panel.c @@ -0,0 +1,298 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <libintl.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <errno.h> + +#include <glib/gi18n-lib.h> +#include <glib.h> +#include <gtk/gtk.h> +#include <pulse/pulseaudio.h> +#include <gvc-mixer-control.h> + +#include "list-box-helper.h" +#include "cc-alert-chooser.h" +#include "cc-balance-slider.h" +#include "cc-device-combo-box.h" +#include "cc-fade-slider.h" +#include "cc-level-bar.h" +#include "cc-output-test-dialog.h" +#include "cc-profile-combo-box.h" +#include "cc-sound-panel.h" +#include "cc-sound-resources.h" +#include "cc-stream-list-box.h" +#include "cc-subwoofer-slider.h" +#include "cc-volume-slider.h" + +struct _CcSoundPanel +{ + CcPanel parent_instance; + + CcBalanceSlider *balance_slider; + GtkListBoxRow *fade_row; + CcFadeSlider *fade_slider; + CcDeviceComboBox *input_device_combo_box; + CcLevelBar *input_level_bar; + GtkListBox *input_list_box; + CcProfileComboBox *input_profile_combo_box; + GtkListBoxRow *input_profile_row; + CcVolumeSlider *input_volume_slider; + GtkSizeGroup *label_size_group; + CcDeviceComboBox *output_device_combo_box; + GtkListStore *output_device_model; + CcLevelBar *output_level_bar; + GtkListBox *output_list_box; + CcProfileComboBox *output_profile_combo_box; + GtkListBoxRow *output_profile_row; + CcVolumeSlider *output_volume_slider; + CcStreamListBox *stream_list_box; + GtkListBoxRow *subwoofer_row; + CcSubwooferSlider *subwoofer_slider; + + GvcMixerControl *mixer_control; + GSettings *sound_settings; +}; + +CC_PANEL_REGISTER (CcSoundPanel, cc_sound_panel) + +enum +{ + PROP_0, + PROP_PARAMETERS +}; + +#define KEY_SOUNDS_SCHEMA "org.gnome.desktop.sound" + +static void +allow_amplified_changed_cb (CcSoundPanel *self) +{ + cc_volume_slider_set_is_amplified (self->output_volume_slider, + g_settings_get_boolean (self->sound_settings, "allow-volume-above-100-percent")); +} + +static void +output_device_changed_cb (CcSoundPanel *self) +{ + GvcMixerUIDevice *device; + GvcMixerStream *stream = NULL; + GvcChannelMap *map = NULL; + gboolean can_fade = FALSE, has_lfe = FALSE; + + device = cc_device_combo_box_get_device (self->output_device_combo_box); + + if (device != NULL) + stream = gvc_mixer_control_get_stream_from_device (self->mixer_control, device); + + cc_volume_slider_set_stream (self->output_volume_slider, stream, CC_STREAM_TYPE_OUTPUT); + cc_level_bar_set_stream (self->output_level_bar, stream, CC_STREAM_TYPE_OUTPUT); + + if (stream != NULL) + { + map = (GvcChannelMap *) gvc_mixer_stream_get_channel_map (stream); + can_fade = gvc_channel_map_can_fade (map); + has_lfe = gvc_channel_map_has_lfe (map); + } + cc_fade_slider_set_channel_map (self->fade_slider, map); + cc_balance_slider_set_channel_map (self->balance_slider, map); + cc_subwoofer_slider_set_channel_map (self->subwoofer_slider, map); + + gtk_widget_set_visible (GTK_WIDGET (self->fade_row), can_fade); + gtk_widget_set_visible (GTK_WIDGET (self->subwoofer_row), has_lfe); + + if (device != NULL) + gvc_mixer_control_change_output (self->mixer_control, device); +} + +static void +input_device_changed_cb (CcSoundPanel *self) +{ + GvcMixerUIDevice *device; + GvcMixerStream *stream = NULL; + + device = cc_device_combo_box_get_device (self->input_device_combo_box); + + if (device != NULL) + stream = gvc_mixer_control_get_stream_from_device (self->mixer_control, device); + + cc_volume_slider_set_stream (self->input_volume_slider, stream, CC_STREAM_TYPE_INPUT); + cc_level_bar_set_stream (self->input_level_bar, stream, CC_STREAM_TYPE_INPUT); + + if (device != NULL) + gvc_mixer_control_change_input (self->mixer_control, device); +} + +static void +output_device_update_cb (CcSoundPanel *self, + guint id) +{ + GvcMixerUIDevice *device; + gboolean has_multi_profiles; + + device = cc_device_combo_box_get_device (self->output_device_combo_box); + cc_profile_combo_box_set_device (self->output_profile_combo_box, self->mixer_control, device); + has_multi_profiles = (cc_profile_combo_box_get_profile_count (self->output_profile_combo_box) > 1); + gtk_widget_set_visible (GTK_WIDGET (self->output_profile_row), + has_multi_profiles); +} + +static void +input_device_update_cb (CcSoundPanel *self, + guint id) +{ + GvcMixerUIDevice *device; + gboolean has_multi_profiles; + + device = cc_device_combo_box_get_device (self->input_device_combo_box); + cc_profile_combo_box_set_device (self->input_profile_combo_box, self->mixer_control, device); + has_multi_profiles = (cc_profile_combo_box_get_profile_count (self->input_profile_combo_box) > 1); + gtk_widget_set_visible (GTK_WIDGET (self->input_profile_row), + has_multi_profiles); +} + +static void +test_output_configuration_button_clicked_cb (CcSoundPanel *self) +{ + GvcMixerUIDevice *device; + GvcMixerStream *stream = NULL; + CcOutputTestDialog *dialog; + + device = cc_device_combo_box_get_device (self->output_device_combo_box); + if (device != NULL) + stream = gvc_mixer_control_get_stream_from_device (self->mixer_control, device); + + dialog = cc_output_test_dialog_new (device, stream); + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self)))); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (GTK_WIDGET (dialog)); +} + +static const char * +cc_sound_panel_get_help_uri (CcPanel *panel) +{ + return "help:gnome-help/media#sound"; +} + +static void +cc_sound_panel_finalize (GObject *object) +{ + CcSoundPanel *panel = CC_SOUND_PANEL (object); + + g_clear_object (&panel->mixer_control); + g_clear_object (&panel->sound_settings); + + G_OBJECT_CLASS (cc_sound_panel_parent_class)->finalize (object); +} + +static void +cc_sound_panel_class_init (CcSoundPanelClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + CcPanelClass *panel_class = CC_PANEL_CLASS (klass); + + panel_class->get_help_uri = cc_sound_panel_get_help_uri; + + object_class->finalize = cc_sound_panel_finalize; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/sound/cc-sound-panel.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, balance_slider); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, fade_row); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, fade_slider); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, input_device_combo_box); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, input_level_bar); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, input_list_box); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, input_profile_combo_box); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, input_profile_row); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, input_volume_slider); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, label_size_group); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, output_device_combo_box); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, output_level_bar); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, output_list_box); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, output_profile_combo_box); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, output_profile_row); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, output_volume_slider); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, stream_list_box); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, subwoofer_row); + gtk_widget_class_bind_template_child (widget_class, CcSoundPanel, subwoofer_slider); + + gtk_widget_class_bind_template_callback (widget_class, input_device_changed_cb); + gtk_widget_class_bind_template_callback (widget_class, output_device_changed_cb); + gtk_widget_class_bind_template_callback (widget_class, test_output_configuration_button_clicked_cb); + + g_type_ensure (CC_TYPE_ALERT_CHOOSER); + g_type_ensure (CC_TYPE_BALANCE_SLIDER); + g_type_ensure (CC_TYPE_DEVICE_COMBO_BOX); + g_type_ensure (CC_TYPE_FADE_SLIDER); + g_type_ensure (CC_TYPE_LEVEL_BAR); + g_type_ensure (CC_TYPE_PROFILE_COMBO_BOX); + g_type_ensure (CC_TYPE_STREAM_LIST_BOX); + g_type_ensure (CC_TYPE_SUBWOOFER_SLIDER); + g_type_ensure (CC_TYPE_VOLUME_SLIDER); +} + +static void +cc_sound_panel_init (CcSoundPanel *self) +{ + g_resources_register (cc_sound_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); + + gtk_list_box_set_header_func (self->input_list_box, + cc_list_box_update_header_func, + NULL, NULL); + gtk_list_box_set_header_func (self->output_list_box, + cc_list_box_update_header_func, + NULL, NULL); + gtk_list_box_set_header_func (GTK_LIST_BOX (self->stream_list_box), + cc_list_box_update_header_func, + NULL, NULL); + + self->sound_settings = g_settings_new (KEY_SOUNDS_SCHEMA); + g_signal_connect_object (self->sound_settings, + "changed::allow-volume-above-100-percent", + G_CALLBACK (allow_amplified_changed_cb), + self, + G_CONNECT_SWAPPED); + allow_amplified_changed_cb (self); + + self->mixer_control = gvc_mixer_control_new ("GNOME Settings"); + gvc_mixer_control_open (self->mixer_control); + + cc_stream_list_box_set_mixer_control (self->stream_list_box, self->mixer_control); + cc_volume_slider_set_mixer_control (self->input_volume_slider, self->mixer_control); + cc_volume_slider_set_mixer_control (self->output_volume_slider, self->mixer_control); + cc_subwoofer_slider_set_mixer_control (self->subwoofer_slider, self->mixer_control); + cc_device_combo_box_set_mixer_control (self->input_device_combo_box, self->mixer_control, FALSE); + cc_device_combo_box_set_mixer_control (self->output_device_combo_box, self->mixer_control, TRUE); + g_signal_connect_object (self->mixer_control, + "active-output-update", + G_CALLBACK (output_device_update_cb), + self, + G_CONNECT_SWAPPED); + g_signal_connect_object (self->mixer_control, + "active-input-update", + G_CALLBACK (input_device_update_cb), + self, + G_CONNECT_SWAPPED); +} diff --git a/panels/sound/cc-sound-panel.h b/panels/sound/cc-sound-panel.h new file mode 100644 index 0000000..468f2c4 --- /dev/null +++ b/panels/sound/cc-sound-panel.h @@ -0,0 +1,28 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <shell/cc-panel.h> + +G_BEGIN_DECLS + +#define CC_TYPE_SOUND_PANEL (cc_sound_panel_get_type ()) +G_DECLARE_FINAL_TYPE (CcSoundPanel, cc_sound_panel, CC, SOUND_PANEL, CcPanel) + +G_END_DECLS diff --git a/panels/sound/cc-sound-panel.ui b/panels/sound/cc-sound-panel.ui new file mode 100644 index 0000000..140feaa --- /dev/null +++ b/panels/sound/cc-sound-panel.ui @@ -0,0 +1,410 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <template class="CcSoundPanel" parent="CcPanel"> + <property name="visible">True</property> + <child> + <object class="GtkScrolledWindow"> + <property name="visible">True</property> + <property name="hscrollbar_policy">never</property> + <child> + <object class="HdyClamp"> + <property name="visible">True</property> + <property name="margin_top">32</property> + <property name="margin_bottom">32</property> + <property name="margin_start">12</property> + <property name="margin_end">12</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <property name="hexpand">True</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">System Volume</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + <child> + <object class="CcVolumeSlider" id="output_volume_slider"> + <property name="visible">True</property> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="margin-top">18</property> + <property name="label" translatable="yes">Volume Levels</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + <child> + <object class="GtkFrame"> + <property name="visible">True</property> + <child> + <object class="CcStreamListBox" id="stream_list_box"> + <property name="visible">True</property> + <property name="label-size-group">label_size_group</property> + </object> + </child> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="margin-top">18</property> + <property name="label" translatable="yes">Output</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + <child> + <object class="GtkFrame"> + <property name="visible">True</property> + <child> + <object class="GtkListBox" id="output_list_box"> + <property name="visible">True</property> + <property name="selection_mode">none</property> + <child> + <object class="GtkListBoxRow"> + <property name="visible">True</property> + <property name="activatable">False</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="margin">12</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="output_device_label"> + <property name="visible">True</property> + <property name="ellipsize">end</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Output Device</property> + </object> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="hexpand">True</property> + <property name="spacing">9</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="CcDeviceComboBox" id="output_device_combo_box"> + <property name="visible">True</property> + <property name="hexpand">True</property> + <signal name="changed" handler="output_device_changed_cb" object="CcSoundPanel" swapped="yes"/> + </object> + </child> + <child> + <object class="GtkButton"> + <property name="visible">True</property> + <property name="label" translatable="yes">Test</property> + <signal name="clicked" handler="test_output_configuration_button_clicked_cb" object="CcSoundPanel" swapped="yes"/> + </object> + </child> + </object> + </child> + <child> + <object class="CcLevelBar" id="output_level_bar"> + <property name="visible">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkListBoxRow" id="output_profile_row"> + <property name="visible">True</property> + <property name="activatable">False</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="margin">12</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="output_configuration_label"> + <property name="visible">True</property> + <property name="ellipsize">end</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Configuration</property> + </object> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="CcProfileComboBox" id="output_profile_combo_box"> + <property name="visible">True</property> + <property name="hexpand">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkListBoxRow"> + <property name="visible">True</property> + <property name="activatable">False</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="margin">12</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="output_balance_label"> + <property name="visible">True</property> + <property name="ellipsize">end</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Balance</property> + </object> + </child> + <child> + <object class="CcBalanceSlider" id="balance_slider"> + <property name="visible">True</property> + <property name="hexpand">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkListBoxRow" id="fade_row"> + <property name="visible">True</property> + <property name="activatable">False</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="margin">12</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="output_fade_label"> + <property name="visible">True</property> + <property name="ellipsize">end</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Fade</property> + </object> + </child> + <child> + <object class="CcFadeSlider" id="fade_slider"> + <property name="visible">True</property> + <property name="hexpand">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkListBoxRow" id="subwoofer_row"> + <property name="visible">True</property> + <property name="activatable">False</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="margin">12</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="output_subwoofer_label"> + <property name="visible">True</property> + <property name="ellipsize">end</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Subwoofer</property> + </object> + </child> + <child> + <object class="CcSubwooferSlider" id="subwoofer_slider"> + <property name="visible">True</property> + <property name="hexpand">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="margin-top">18</property> + <property name="label" translatable="yes">Input</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + <child> + <object class="GtkFrame"> + <property name="visible">True</property> + <child> + <object class="GtkListBox" id="input_list_box"> + <property name="visible">True</property> + <property name="selection_mode">none</property> + <child> + <object class="GtkListBoxRow"> + <property name="visible">True</property> + <property name="activatable">False</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="margin">12</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="input_device_label"> + <property name="visible">True</property> + <property name="ellipsize">end</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Input Device</property> + </object> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="hexpand">True</property> + <property name="spacing">9</property> + <child> + <object class="CcDeviceComboBox" id="input_device_combo_box"> + <property name="visible">True</property> + <property name="hexpand">True</property> + <signal name="changed" handler="input_device_changed_cb" object="CcSoundPanel" swapped="yes"/> + </object> + </child> + <child> + <object class="CcLevelBar" id="input_level_bar"> + <property name="visible">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkListBoxRow" id="input_profile_row"> + <property name="visible">True</property> + <property name="activatable">False</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="margin">12</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="input_configuration_label"> + <property name="visible">True</property> + <property name="ellipsize">end</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Configuration</property> + </object> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="CcProfileComboBox" id="input_profile_combo_box"> + <property name="visible">True</property> + <property name="hexpand">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkListBoxRow"> + <property name="visible">True</property> + <property name="activatable">False</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="margin">12</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="input_volume_label"> + <property name="visible">True</property> + <property name="ellipsize">end</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Volume</property> + </object> + </child> + <child> + <object class="CcVolumeSlider" id="input_volume_slider"> + <property name="visible">True</property> + <property name="hexpand">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="margin-top">18</property> + <property name="label" translatable="yes">Alert Sound</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + <child> + <object class="CcAlertChooser"> + <property name="visible">True</property> + <property name="hexpand">True</property> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + </child> + </template> + <object class="GtkSizeGroup" id="label_size_group"> + <property name="mode">horizontal</property> + <widgets> + <widget name="output_device_label"/> + <widget name="output_configuration_label"/> + <widget name="output_balance_label"/> + <widget name="output_fade_label"/> + <widget name="output_subwoofer_label"/> + <widget name="input_configuration_label"/> + <widget name="input_device_label"/> + <widget name="input_volume_label"/> + </widgets> + </object> +</interface> diff --git a/panels/sound/cc-speaker-test-button.c b/panels/sound/cc-speaker-test-button.c new file mode 100644 index 0000000..833b399 --- /dev/null +++ b/panels/sound/cc-speaker-test-button.c @@ -0,0 +1,243 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include <gsound.h> +#include <pulse/pulseaudio.h> + +#include "cc-sound-resources.h" +#include "cc-speaker-test-button.h" + +struct _CcSpeakerTestButton +{ + GtkDialog parent_instance; + + GtkImage *image; + GtkLabel *label; + + GCancellable *cancellable; + GSoundContext *context; + pa_channel_position_t position; + gboolean playing; + gint event_index; +}; + +G_DEFINE_TYPE (CcSpeakerTestButton, cc_speaker_test_button, GTK_TYPE_BUTTON) + +#define TEST_SOUND_ID 1 + +static gboolean +play_sound (CcSpeakerTestButton *self); + +static const gchar * +get_icon_name (CcSpeakerTestButton *self) +{ + switch (self->position) + { + case PA_CHANNEL_POSITION_FRONT_LEFT: + return self->playing ? "audio-speaker-left-testing" : "audio-speaker-left"; + case PA_CHANNEL_POSITION_FRONT_RIGHT: + return self->playing ? "audio-speaker-right-testing" : "audio-speaker-right"; + case PA_CHANNEL_POSITION_FRONT_CENTER: + return self->playing ? "audio-speaker-center-testing" : "audio-speaker-center"; + case PA_CHANNEL_POSITION_REAR_LEFT: + return self->playing ? "audio-speaker-left-back-testing" : "audio-speaker-left-back"; + case PA_CHANNEL_POSITION_REAR_RIGHT: + return self->playing ? "audio-speaker-right-back-testing" : "audio-speaker-right-back"; + case PA_CHANNEL_POSITION_REAR_CENTER: + return self->playing ? "audio-speaker-center-back-testing" : "audio-speaker-center-back"; + case PA_CHANNEL_POSITION_LFE: + return self->playing ? "audio-subwoofer-testing" : "audio-subwoofer"; + case PA_CHANNEL_POSITION_SIDE_LEFT: + return self->playing ? "audio-speaker-left-side-testing" : "audio-speaker-left-side"; + case PA_CHANNEL_POSITION_SIDE_RIGHT: + return self->playing ? "audio-speaker-right-side-testing" : "audio-speaker-right-side"; + case PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER: + return self->playing ? "audio-speaker-front-left-of-center-testing" : "audio-speaker-front-left-of-center"; + case PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER: + return self->playing ? "audio-speaker-front-right-of-center-testing" : "audio-speaker-front-right-of-center"; + case PA_CHANNEL_POSITION_MONO: + return self->playing ? "audio-speaker-mono-testing" : "audio-speaker-mono"; + default: + return "audio-speakers"; + } +} + +static void +update_icon (CcSpeakerTestButton *self) +{ + gtk_image_set_from_icon_name (self->image, + get_icon_name (self), + GTK_ICON_SIZE_DIALOG); +} + +static GStrv +get_sound_events (CcSpeakerTestButton *self) +{ + switch (self->position) + { + case PA_CHANNEL_POSITION_FRONT_LEFT: + return g_strsplit ("audio-channel-front-left;audio-test-signal;bell", ";", -1); + case PA_CHANNEL_POSITION_FRONT_RIGHT: + return g_strsplit ("audio-channel-front-right;audio-test-signal;bell", ";", -1); + case PA_CHANNEL_POSITION_FRONT_CENTER: + return g_strsplit ("audio-channel-front-center;audio-test-signal;bell", ";", -1); + case PA_CHANNEL_POSITION_REAR_LEFT: + return g_strsplit ("audio-channel-rear-left;audio-test-signal;bell", ";", -1); + case PA_CHANNEL_POSITION_REAR_RIGHT: + return g_strsplit ("audio-channel-rear-right;audio-test-signal;bell", ";", -1); + case PA_CHANNEL_POSITION_REAR_CENTER: + return g_strsplit ("audio-channel-rear-center;audio-test-signal;bell", ";", -1); + case PA_CHANNEL_POSITION_LFE: + return g_strsplit ("audio-channel-lfe;audio-test-signal;bell", ";", -1); + case PA_CHANNEL_POSITION_SIDE_LEFT: + return g_strsplit ("audio-channel-side-left;audio-test-signal;bell", ";", -1); + case PA_CHANNEL_POSITION_SIDE_RIGHT: + return g_strsplit ("audio-channel-side-right;audio-test-signal;bell", ";", -1); + case PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER: + return g_strsplit ("audio-channel-front-left-of-center;audio-test-signal;bell", ";", -1); + case PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER: + return g_strsplit ("audio-channel-front-right-of-center;audio-test-signal;bell", ";", -1); + case PA_CHANNEL_POSITION_MONO: + return g_strsplit ("audio-channel-mono;audio-test-signal;bell", ";", -1); + default: + return g_strsplit ("audio-test-signal;bell", ";", -1); + } +} + +static void +finish_cb (GObject *object, + GAsyncResult *result, + gpointer userdata) +{ + CcSpeakerTestButton *self = userdata; + g_autoptr(GError) error = NULL; + + if (!gsound_context_play_full_finish (GSOUND_CONTEXT (object), result, &error)) + { + if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) + return; + + if (play_sound (self)) + return; + + g_warning ("Failed to play sound: %s", error->message); + } + + self->playing = FALSE; + update_icon (self); +} + +static gboolean +play_sound (CcSpeakerTestButton *self) +{ + g_auto(GStrv) events = NULL; + + /* Stop existing sound */ + g_cancellable_cancel (self->cancellable); + g_clear_object (&self->cancellable); + self->cancellable = g_cancellable_new (); + + events = get_sound_events (self); + if (events[self->event_index] == NULL) + return FALSE; + + gsound_context_play_full (self->context, self->cancellable, finish_cb, self, + GSOUND_ATTR_MEDIA_ROLE, "test", + GSOUND_ATTR_MEDIA_NAME, pa_channel_position_to_pretty_string (self->position), + GSOUND_ATTR_CANBERRA_FORCE_CHANNEL, pa_channel_position_to_string (self->position), + GSOUND_ATTR_CANBERRA_ENABLE, "1", + GSOUND_ATTR_EVENT_ID, events[self->event_index], + NULL); + self->event_index++; + + return TRUE; +} + +static void +clicked_cb (CcSpeakerTestButton *self) +{ + if (self->context == NULL) + return; + + self->playing = TRUE; + update_icon (self); + + /* Play the per-channel sound name or a generic sound */ + self->event_index = 0; + play_sound (self); +} + +static void +cc_speaker_test_button_dispose (GObject *object) +{ + CcSpeakerTestButton *self = CC_SPEAKER_TEST_BUTTON (object); + + g_cancellable_cancel (self->cancellable); + g_clear_object (&self->cancellable); + g_clear_object (&self->context); + + G_OBJECT_CLASS (cc_speaker_test_button_parent_class)->dispose (object); +} + +void +cc_speaker_test_button_class_init (CcSpeakerTestButtonClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = cc_speaker_test_button_dispose; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/sound/cc-speaker-test-button.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcSpeakerTestButton, image); + gtk_widget_class_bind_template_child (widget_class, CcSpeakerTestButton, label); + + gtk_widget_class_bind_template_callback (widget_class, clicked_cb); +} + +void +cc_speaker_test_button_init (CcSpeakerTestButton *self) +{ + g_resources_register (cc_sound_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); + + self->cancellable = g_cancellable_new (); + + update_icon (self); +} + +CcSpeakerTestButton * +cc_speaker_test_button_new (void) +{ + return g_object_new (CC_TYPE_SPEAKER_TEST_BUTTON, NULL); +} + +void +cc_speaker_test_button_set_channel_position (CcSpeakerTestButton *self, + GSoundContext *context, + pa_channel_position_t position) +{ + g_return_if_fail (CC_IS_SPEAKER_TEST_BUTTON (self)); + + g_clear_object (&self->context); + self->context = g_object_ref (context); + self->position = position; + gtk_label_set_label (self->label, pa_channel_position_to_pretty_string (position)); + update_icon (self); +} diff --git a/panels/sound/cc-speaker-test-button.h b/panels/sound/cc-speaker-test-button.h new file mode 100644 index 0000000..32c4c31 --- /dev/null +++ b/panels/sound/cc-speaker-test-button.h @@ -0,0 +1,36 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gsound.h> +#include <gtk/gtk.h> +#include <pulse/pulseaudio.h> + +G_BEGIN_DECLS + +#define CC_TYPE_SPEAKER_TEST_BUTTON (cc_speaker_test_button_get_type ()) +G_DECLARE_FINAL_TYPE (CcSpeakerTestButton, cc_speaker_test_button, CC, SPEAKER_TEST_BUTTON, GtkButton) + +CcSpeakerTestButton *cc_speaker_test_button_new (void); + +void cc_speaker_test_button_set_channel_position (CcSpeakerTestButton *button, + GSoundContext *context, + pa_channel_position_t position); + +G_END_DECLS diff --git a/panels/sound/cc-speaker-test-button.ui b/panels/sound/cc-speaker-test-button.ui new file mode 100644 index 0000000..7e37034 --- /dev/null +++ b/panels/sound/cc-speaker-test-button.ui @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <template class="CcSpeakerTestButton" parent="GtkButton"> + <signal name="clicked" handler="clicked_cb" object="CcSpeakerTestButton" swapped="yes"/> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <property name="margin">12</property> + <child> + <object class="GtkImage" id="image"> + <property name="visible">True</property> + </object> + </child> + <child> + <object class="GtkLabel" id="label"> + <property name="visible">True</property> + <property name="wrap">True</property> + </object> + </child> + </object> + </child> + </template> +</interface> diff --git a/panels/sound/cc-stream-list-box.c b/panels/sound/cc-stream-list-box.c new file mode 100644 index 0000000..ca914ef --- /dev/null +++ b/panels/sound/cc-stream-list-box.c @@ -0,0 +1,242 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include <pulse/pulseaudio.h> +#include <gvc-mixer-sink.h> +#include <gvc-mixer-source.h> + +#include "cc-stream-list-box.h" +#include "cc-stream-row.h" +#include "cc-sound-enums.h" + +struct _CcStreamListBox +{ + GtkListBox parent_instance; + + GtkSizeGroup *label_size_group; + GvcMixerControl *mixer_control; + CcStreamType stream_type; + guint stream_added_handler_id; + guint stream_removed_handler_id; +}; + +G_DEFINE_TYPE (CcStreamListBox, cc_stream_list_box, GTK_TYPE_LIST_BOX) + +enum +{ + PROP_0, + PROP_LABEL_SIZE_GROUP +}; + +static gint +sort_cb (GtkListBoxRow *row1, + GtkListBoxRow *row2, + gpointer user_data) +{ + CcStreamListBox *self = user_data; + GvcMixerStream *stream1, *stream2, *event_sink; + g_autofree gchar *name1 = NULL; + g_autofree gchar *name2 = NULL; + + stream1 = cc_stream_row_get_stream (CC_STREAM_ROW (row1)); + stream2 = cc_stream_row_get_stream (CC_STREAM_ROW (row2)); + + /* Put the system sound events control at the top */ + event_sink = gvc_mixer_control_get_event_sink_input (self->mixer_control); + if (stream1 == event_sink) + return -1; + else if (stream2 == event_sink) + return 1; + + name1 = g_utf8_casefold (gvc_mixer_stream_get_name (stream1), -1); + name2 = g_utf8_casefold (gvc_mixer_stream_get_name (stream2), -1); + + return g_strcmp0 (name1, name2); +} + +static void +stream_added_cb (CcStreamListBox *self, + guint id) +{ + GvcMixerStream *stream; + const gchar *app_id; + CcStreamRow *row; + + stream = gvc_mixer_control_lookup_stream_id (self->mixer_control, id); + if (stream == NULL) + return; + + app_id = gvc_mixer_stream_get_application_id (stream); + + /* Skip master volume controls */ + if (g_strcmp0 (app_id, "org.gnome.VolumeControl") == 0 || + g_strcmp0 (app_id, "org.PulseAudio.pavucontrol") == 0) + { + return; + } + + /* Skip streams that aren't volume controls */ + if (GVC_IS_MIXER_SOURCE (stream) || + GVC_IS_MIXER_SINK (stream) || + gvc_mixer_stream_is_virtual (stream) || + gvc_mixer_stream_is_event_stream (stream)) + { + return; + } + + row = cc_stream_row_new (self->label_size_group, stream, id, self->stream_type, self->mixer_control); + gtk_widget_show (GTK_WIDGET (row)); + gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE); + gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (row)); +} + +static CcStreamRow * +find_row (CcStreamListBox *self, + guint id) +{ + g_autoptr(GList) children = NULL; + GList *link; + + children = gtk_container_get_children (GTK_CONTAINER (self)); + for (link = children; link; link = link->next) + { + CcStreamRow *row = link->data; + + if (!CC_IS_STREAM_ROW (row)) + continue; + + if (id == cc_stream_row_get_id (row)) + return row; + } + + return NULL; +} + +static void +stream_removed_cb (CcStreamListBox *self, + guint id) +{ + CcStreamRow *row; + + row = find_row (self, id); + if (row != NULL) + gtk_container_remove (GTK_CONTAINER (self), GTK_WIDGET (row)); +} + +static void +cc_stream_list_box_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + CcStreamListBox *self = CC_STREAM_LIST_BOX (object); + + switch (property_id) { + case PROP_LABEL_SIZE_GROUP: + self->label_size_group = g_value_dup_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +cc_stream_list_box_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + CcStreamListBox *self = CC_STREAM_LIST_BOX (object); + + switch (property_id) { + case PROP_LABEL_SIZE_GROUP: + g_value_set_object (value, self->label_size_group); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +cc_stream_list_box_dispose (GObject *object) +{ + CcStreamListBox *self = CC_STREAM_LIST_BOX (object); + + g_clear_object (&self->mixer_control); + + G_OBJECT_CLASS (cc_stream_list_box_parent_class)->dispose (object); +} + +void +cc_stream_list_box_class_init (CcStreamListBoxClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->set_property = cc_stream_list_box_set_property; + object_class->get_property = cc_stream_list_box_get_property; + object_class->dispose = cc_stream_list_box_dispose; + + g_object_class_install_property (object_class, PROP_LABEL_SIZE_GROUP, + g_param_spec_object ("label-size-group", + NULL, + NULL, + GTK_TYPE_SIZE_GROUP, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); +} + +void +cc_stream_list_box_init (CcStreamListBox *self) +{ + gtk_list_box_set_selection_mode (GTK_LIST_BOX (self), GTK_SELECTION_NONE); + gtk_list_box_set_sort_func (GTK_LIST_BOX (self), sort_cb, self, NULL); +} + +void +cc_stream_list_box_set_mixer_control (CcStreamListBox *self, + GvcMixerControl *mixer_control) +{ + g_return_if_fail (CC_IS_STREAM_LIST_BOX (self)); + + if (self->mixer_control != NULL) + { + g_signal_handler_disconnect (self->mixer_control, self->stream_added_handler_id); + self->stream_added_handler_id = 0; + g_signal_handler_disconnect (self->mixer_control, self->stream_removed_handler_id); + self->stream_removed_handler_id = 0; + } + g_clear_object (&self->mixer_control); + + self->mixer_control = g_object_ref (mixer_control); + + self->stream_added_handler_id = g_signal_connect_object (self->mixer_control, + "stream-added", + G_CALLBACK (stream_added_cb), + self, G_CONNECT_SWAPPED); + self->stream_removed_handler_id = g_signal_connect_object (self->mixer_control, + "stream-removed", + G_CALLBACK (stream_removed_cb), + self, G_CONNECT_SWAPPED); +} + +void cc_stream_list_box_set_stream_type (CcStreamListBox *self, + CcStreamType stream_type) +{ + g_return_if_fail (CC_IS_STREAM_LIST_BOX (self)); + + self->stream_type = stream_type; +} diff --git a/panels/sound/cc-stream-list-box.h b/panels/sound/cc-stream-list-box.h new file mode 100644 index 0000000..8a46fd7 --- /dev/null +++ b/panels/sound/cc-stream-list-box.h @@ -0,0 +1,38 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gtk/gtk.h> +#include <pulse/pulseaudio.h> +#include <gvc-mixer-control.h> + +#include "cc-sound-enums.h" + +G_BEGIN_DECLS + +#define CC_TYPE_STREAM_LIST_BOX (cc_stream_list_box_get_type ()) +G_DECLARE_FINAL_TYPE (CcStreamListBox, cc_stream_list_box, CC, STREAM_LIST_BOX, GtkListBox) + +void cc_stream_list_box_set_mixer_control (CcStreamListBox *combo_box, + GvcMixerControl *mixer_control); + +void cc_stream_list_box_set_stream_type (CcStreamListBox *combo_box, + CcStreamType type); + +G_END_DECLS diff --git a/panels/sound/cc-stream-row.c b/panels/sound/cc-stream-row.c new file mode 100644 index 0000000..f0277d1 --- /dev/null +++ b/panels/sound/cc-stream-row.c @@ -0,0 +1,139 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include "cc-sound-resources.h" +#include "cc-stream-row.h" +#include "cc-volume-slider.h" +#include "cc-sound-enums.h" + +#define SPEECH_DISPATCHER_PREFIX "speech-dispatcher-" + +struct _CcStreamRow +{ + GtkListBoxRow parent_instance; + + GtkBox *label_box; + GtkLabel *name_label; + GtkImage *icon_image; + CcVolumeSlider *volume_slider; + + GvcMixerStream *stream; + guint id; +}; + +G_DEFINE_TYPE (CcStreamRow, cc_stream_row, GTK_TYPE_LIST_BOX_ROW) + +static void +cc_stream_row_dispose (GObject *object) +{ + CcStreamRow *self = CC_STREAM_ROW (object); + + g_clear_object (&self->stream); + + G_OBJECT_CLASS (cc_stream_row_parent_class)->dispose (object); +} + +void +cc_stream_row_class_init (CcStreamRowClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = cc_stream_row_dispose; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/sound/cc-stream-row.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcStreamRow, label_box); + gtk_widget_class_bind_template_child (widget_class, CcStreamRow, icon_image); + gtk_widget_class_bind_template_child (widget_class, CcStreamRow, name_label); + gtk_widget_class_bind_template_child (widget_class, CcStreamRow, volume_slider); +} + +void +cc_stream_row_init (CcStreamRow *self) +{ + g_resources_register (cc_sound_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); +} + +CcStreamRow * +cc_stream_row_new (GtkSizeGroup *size_group, + GvcMixerStream *stream, + guint id, + CcStreamType stream_type, + GvcMixerControl *mixer_control) +{ + CcStreamRow *self; + g_autoptr(GtkIconInfo) icon_info = NULL; + g_autoptr(GIcon) gicon = NULL; + const gchar *stream_name; + const gchar *icon_name; + g_autofree gchar *symbolic_icon_name = NULL; + + self = g_object_new (CC_TYPE_STREAM_ROW, NULL); + self->stream = g_object_ref (stream); + self->id = id; + + icon_name = gvc_mixer_stream_get_icon_name (stream); + stream_name = gvc_mixer_stream_get_name (stream); + + if (g_str_has_suffix (icon_name, "-symbolic")) + symbolic_icon_name = strdup (icon_name); + else + symbolic_icon_name = g_strconcat (icon_name, "-symbolic", NULL); + + /* Explicitly lookup for the icon, since some streams may give us an + * icon name (e.g. "audio") that doesn't really exist in the theme. + */ + icon_info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default (), + icon_name, + 24, + GTK_ICON_LOOKUP_GENERIC_FALLBACK); + + if (icon_info) + gicon = g_themed_icon_new_with_default_fallbacks (symbolic_icon_name); + else if (g_str_has_prefix (stream_name, SPEECH_DISPATCHER_PREFIX)) + gicon = g_themed_icon_new_with_default_fallbacks ("preferences-desktop-accessibility-symbolic"); + else + gicon = g_themed_icon_new_with_default_fallbacks ("application-x-executable-symbolic"); + + gtk_image_set_from_gicon (self->icon_image, gicon, GTK_ICON_SIZE_LARGE_TOOLBAR); + + gtk_label_set_label (self->name_label, gvc_mixer_stream_get_name (stream)); + cc_volume_slider_set_stream (self->volume_slider, stream, stream_type); + cc_volume_slider_set_mixer_control (self->volume_slider, mixer_control); + + gtk_size_group_add_widget (size_group, GTK_WIDGET (self->label_box)); + + return self; +} + +GvcMixerStream * +cc_stream_row_get_stream (CcStreamRow *self) +{ + g_return_val_if_fail (CC_IS_STREAM_ROW (self), NULL); + return self->stream; +} + +guint +cc_stream_row_get_id (CcStreamRow *self) +{ + g_return_val_if_fail (CC_IS_STREAM_ROW (self), 0); + return self->id; +} diff --git a/panels/sound/cc-stream-row.h b/panels/sound/cc-stream-row.h new file mode 100644 index 0000000..9e4de9b --- /dev/null +++ b/panels/sound/cc-stream-row.h @@ -0,0 +1,43 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gtk/gtk.h> +#include <pulse/pulseaudio.h> +#include <gvc-mixer-control.h> +#include <gvc-mixer-stream.h> + +#include "cc-sound-enums.h" + +G_BEGIN_DECLS + +#define CC_TYPE_STREAM_ROW (cc_stream_row_get_type ()) +G_DECLARE_FINAL_TYPE (CcStreamRow, cc_stream_row, CC, STREAM_ROW, GtkListBoxRow) + +CcStreamRow *cc_stream_row_new (GtkSizeGroup *size_group, + GvcMixerStream *stream, + guint id, + CcStreamType stream_type, + GvcMixerControl *mixer_control); + +GvcMixerStream *cc_stream_row_get_stream (CcStreamRow *row); + +guint cc_stream_row_get_id (CcStreamRow *row); + +G_END_DECLS diff --git a/panels/sound/cc-stream-row.ui b/panels/sound/cc-stream-row.ui new file mode 100644 index 0000000..782956a --- /dev/null +++ b/panels/sound/cc-stream-row.ui @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <template class="CcStreamRow" parent="GtkListBoxRow"> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="margin">12</property> + <property name="spacing">12</property> + <child> + <object class="GtkBox" id="label_box"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkImage" id="icon_image"> + <property name="visible">True</property> + <style> + <class name="lowres-icon"/> + </style> + </object> + </child> + <child> + <object class="GtkLabel" id="name_label"> + <property name="visible">True</property> + <property name="ellipsize">end</property> + <property name="xalign">0</property> + </object> + </child> + </object> + </child> + <child> + <object class="CcVolumeSlider" id="volume_slider"> + <property name="visible">True</property> + <property name="hexpand">True</property> + </object> + </child> + </object> + </child> + </template> +</interface> diff --git a/panels/sound/cc-subwoofer-slider.c b/panels/sound/cc-subwoofer-slider.c new file mode 100644 index 0000000..f209ec2 --- /dev/null +++ b/panels/sound/cc-subwoofer-slider.c @@ -0,0 +1,135 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include <pulse/pulseaudio.h> +#include <gvc-mixer-control.h> + +#include "cc-sound-resources.h" +#include "cc-subwoofer-slider.h" +#include "gvc-channel-map-private.h" + +struct _CcSubwooferSlider +{ + GtkBox parent_instance; + + GtkAdjustment *adjustment; + + GvcChannelMap *channel_map; + guint volume_changed_handler_id; +}; + +G_DEFINE_TYPE (CcSubwooferSlider, cc_subwoofer_slider, GTK_TYPE_BOX) + +static void +changed_cb (CcSubwooferSlider *self) +{ + gdouble value; + const pa_channel_map *pa_map; + pa_cvolume pa_volume; + + if (self->channel_map == NULL) + return; + + value = gtk_adjustment_get_value (self->adjustment); + pa_map = gvc_channel_map_get_pa_channel_map (self->channel_map); + pa_volume = *gvc_channel_map_get_cvolume (self->channel_map); + pa_cvolume_set_position (&pa_volume, pa_map, PA_CHANNEL_POSITION_LFE, value); + gvc_channel_map_volume_changed (self->channel_map, &pa_volume, TRUE); +} + +static void +volume_changed_cb (CcSubwooferSlider *self) +{ + const gdouble *volumes; + + volumes = gvc_channel_map_get_volume (self->channel_map); + g_signal_handlers_block_by_func (self->adjustment, volume_changed_cb, self); + gtk_adjustment_set_value (self->adjustment, volumes[LFE]); + g_signal_handlers_unblock_by_func (self->adjustment, volume_changed_cb, self); +} + +static void +cc_subwoofer_slider_dispose (GObject *object) +{ + CcSubwooferSlider *self = CC_SUBWOOFER_SLIDER (object); + + g_clear_object (&self->channel_map); + + G_OBJECT_CLASS (cc_subwoofer_slider_parent_class)->dispose (object); +} + +void +cc_subwoofer_slider_class_init (CcSubwooferSliderClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = cc_subwoofer_slider_dispose; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/sound/cc-subwoofer-slider.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcSubwooferSlider, adjustment); + + gtk_widget_class_bind_template_callback (widget_class, changed_cb); +} + +void +cc_subwoofer_slider_init (CcSubwooferSlider *self) +{ + g_resources_register (cc_sound_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); +} + +void +cc_subwoofer_slider_set_mixer_control (CcSubwooferSlider *self, + GvcMixerControl *mixer_control) +{ + gdouble vol_max_norm; + + g_return_if_fail (CC_IS_SUBWOOFER_SLIDER (self)); + + vol_max_norm = gvc_mixer_control_get_vol_max_norm (mixer_control); + gtk_adjustment_set_upper (self->adjustment, vol_max_norm); + gtk_adjustment_set_page_increment (self->adjustment, vol_max_norm / 100.0); +} + +void +cc_subwoofer_slider_set_channel_map (CcSubwooferSlider *self, + GvcChannelMap *channel_map) +{ + g_return_if_fail (CC_IS_SUBWOOFER_SLIDER (self)); + + if (self->channel_map != NULL) + { + g_signal_handler_disconnect (self->channel_map, self->volume_changed_handler_id); + self->volume_changed_handler_id = 0; + } + g_clear_object (&self->channel_map); + + if (channel_map != NULL) + { + self->channel_map = g_object_ref (channel_map); + + self->volume_changed_handler_id = g_signal_connect_object (channel_map, + "volume-changed", + G_CALLBACK (volume_changed_cb), + self, G_CONNECT_SWAPPED); + volume_changed_cb (self); + } +} diff --git a/panels/sound/cc-subwoofer-slider.h b/panels/sound/cc-subwoofer-slider.h new file mode 100644 index 0000000..8b462dc --- /dev/null +++ b/panels/sound/cc-subwoofer-slider.h @@ -0,0 +1,37 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gtk/gtk.h> +#include <pulse/pulseaudio.h> +#include <gvc-channel-map.h> +#include <gvc-mixer-control.h> + +G_BEGIN_DECLS + +#define CC_TYPE_SUBWOOFER_SLIDER (cc_subwoofer_slider_get_type ()) +G_DECLARE_FINAL_TYPE (CcSubwooferSlider, cc_subwoofer_slider, CC, SUBWOOFER_SLIDER, GtkBox) + +void cc_subwoofer_slider_set_mixer_control (CcSubwooferSlider *slider, + GvcMixerControl *mixer_control); + +void cc_subwoofer_slider_set_channel_map (CcSubwooferSlider *slider, + GvcChannelMap *channel_map); + +G_END_DECLS diff --git a/panels/sound/cc-subwoofer-slider.ui b/panels/sound/cc-subwoofer-slider.ui new file mode 100644 index 0000000..5a744fc --- /dev/null +++ b/panels/sound/cc-subwoofer-slider.ui @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <template class="CcSubwooferSlider" parent="GtkBox"> + <child> + <object class="GtkScale"> + <property name="visible">True</property> + <property name="hexpand">True</property> + <property name="draw_value">False</property> + <property name="has_origin">False</property> + <property name="adjustment">adjustment</property> + </object> + </child> + </template> + <object class="GtkAdjustment" id="adjustment"> + <signal name="value_changed" handler="changed_cb" object="CcSubwooferSlider" swapped="yes"/> + </object> +</interface> diff --git a/panels/sound/cc-volume-slider.c b/panels/sound/cc-volume-slider.c new file mode 100644 index 0000000..49b5b82 --- /dev/null +++ b/panels/sound/cc-volume-slider.c @@ -0,0 +1,258 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#include <glib/gi18n.h> +#include <math.h> +#include <pulse/pulseaudio.h> +#include <gvc-mixer-control.h> + +#include "cc-sound-resources.h" +#include "cc-volume-slider.h" + +struct _CcVolumeSlider +{ + GtkBox parent_instance; + + GtkToggleButton *mute_button; + GtkImage *stream_type_icon; + GtkAdjustment *volume_adjustment; + GtkScale *volume_scale; + + gboolean is_amplified; + GvcMixerControl *mixer_control; + GvcMixerStream *stream; + guint notify_volume_handler_id; + guint notify_is_muted_handler_id; +}; + +G_DEFINE_TYPE (CcVolumeSlider, cc_volume_slider, GTK_TYPE_BOX) + +static void +update_volume_icon (CcVolumeSlider *self) +{ + const gchar *icon_name = NULL; + gdouble volume, fraction; + + volume = gtk_adjustment_get_value (self->volume_adjustment); + fraction = (100.0 * volume) / gtk_adjustment_get_upper (self->volume_adjustment); + + if (gtk_toggle_button_get_active (self->mute_button)) + icon_name = "audio-volume-muted-symbolic"; + else if (fraction > 0.0 && fraction < 30.0) + icon_name = "audio-volume-low-symbolic"; + else if (fraction > 30.0 && fraction < 70.0) + icon_name = "audio-volume-medium-symbolic"; + else + icon_name = "audio-volume-high-symbolic"; + + gtk_image_set_from_icon_name (self->stream_type_icon, icon_name, GTK_ICON_SIZE_BUTTON); +} + +static void +volume_changed_cb (CcVolumeSlider *self) +{ + gdouble volume, rounded; + + if (self->stream == NULL) + return; + + volume = gtk_adjustment_get_value (self->volume_adjustment); + rounded = round (volume); + + gtk_toggle_button_set_active (self->mute_button, volume == 0.0); + + if (gvc_mixer_stream_set_volume (self->stream, (pa_volume_t) rounded)) + gvc_mixer_stream_push_volume (self->stream); + + update_volume_icon (self); +} + +static void +notify_volume_cb (CcVolumeSlider *self) +{ + g_signal_handlers_block_by_func (self->volume_adjustment, volume_changed_cb, self); + + if (gtk_toggle_button_get_active (self->mute_button)) + gtk_adjustment_set_value (self->volume_adjustment, 0.0); + else + gtk_adjustment_set_value (self->volume_adjustment, gvc_mixer_stream_get_volume (self->stream)); + + g_signal_handlers_unblock_by_func (self->volume_adjustment, volume_changed_cb, self); +} + +static void +update_ranges (CcVolumeSlider *self) +{ + gdouble vol_max_norm; + + if (self->mixer_control == NULL) + return; + + vol_max_norm = gvc_mixer_control_get_vol_max_norm (self->mixer_control); + + gtk_scale_clear_marks (self->volume_scale); + if (self->is_amplified) + { + gtk_adjustment_set_upper (self->volume_adjustment, gvc_mixer_control_get_vol_max_amplified (self->mixer_control)); + gtk_scale_add_mark (self->volume_scale, + vol_max_norm, + GTK_POS_BOTTOM, + C_("volume", "100%")); + } + else + { + gtk_adjustment_set_upper (self->volume_adjustment, vol_max_norm); + } + gtk_adjustment_set_page_increment (self->volume_adjustment, vol_max_norm / 100.0); + + if (self->stream) + notify_volume_cb (self); +} + +static void +mute_button_toggled_cb (CcVolumeSlider *self) +{ + if (self->stream == NULL) + return; + + gvc_mixer_stream_change_is_muted (self->stream, gtk_toggle_button_get_active (self->mute_button)); + + update_volume_icon (self); +} + +static void +notify_is_muted_cb (CcVolumeSlider *self) +{ + g_signal_handlers_block_by_func (self->mute_button, mute_button_toggled_cb, self); + gtk_toggle_button_set_active (self->mute_button, gvc_mixer_stream_get_is_muted (self->stream)); + g_signal_handlers_unblock_by_func (self->mute_button, mute_button_toggled_cb, self); + notify_volume_cb (self); +} + +static void +cc_volume_slider_dispose (GObject *object) +{ + CcVolumeSlider *self = CC_VOLUME_SLIDER (object); + + g_clear_object (&self->mixer_control); + g_clear_object (&self->stream); + + G_OBJECT_CLASS (cc_volume_slider_parent_class)->dispose (object); +} + +void +cc_volume_slider_class_init (CcVolumeSliderClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = cc_volume_slider_dispose; + + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/sound/cc-volume-slider.ui"); + + gtk_widget_class_bind_template_child (widget_class, CcVolumeSlider, mute_button); + gtk_widget_class_bind_template_child (widget_class, CcVolumeSlider, stream_type_icon); + gtk_widget_class_bind_template_child (widget_class, CcVolumeSlider, volume_adjustment); + gtk_widget_class_bind_template_child (widget_class, CcVolumeSlider, volume_scale); + + gtk_widget_class_bind_template_callback (widget_class, mute_button_toggled_cb); + gtk_widget_class_bind_template_callback (widget_class, volume_changed_cb); +} + +void +cc_volume_slider_init (CcVolumeSlider *self) +{ + g_resources_register (cc_sound_get_resource ()); + + gtk_widget_init_template (GTK_WIDGET (self)); +} + +void +cc_volume_slider_set_mixer_control (CcVolumeSlider *self, + GvcMixerControl *mixer_control) +{ + g_return_if_fail (CC_IS_VOLUME_SLIDER (self)); + + g_set_object (&self->mixer_control, mixer_control); + + update_ranges (self); +} + +void +cc_volume_slider_set_stream (CcVolumeSlider *self, + GvcMixerStream *stream, + CcStreamType type) +{ + g_return_if_fail (CC_IS_VOLUME_SLIDER (self)); + + if (self->stream != NULL) + { + g_signal_handler_disconnect (self->stream, self->notify_volume_handler_id); + self->notify_volume_handler_id = 0; + g_signal_handler_disconnect (self->stream, self->notify_is_muted_handler_id); + self->notify_is_muted_handler_id = 0; + } + g_clear_object (&self->stream); + + switch (type) + { + case CC_STREAM_TYPE_INPUT: + gtk_image_set_from_icon_name (self->stream_type_icon, + "microphone-sensitivity-muted-symbolic", + GTK_ICON_SIZE_BUTTON); + break; + + case CC_STREAM_TYPE_OUTPUT: + gtk_image_set_from_icon_name (self->stream_type_icon, + "audio-volume-muted-symbolic", + GTK_ICON_SIZE_BUTTON); + break; + + default: + g_assert_not_reached (); + break; + } + + if (stream != NULL) + { + self->stream = g_object_ref (stream); + + self->notify_volume_handler_id = g_signal_connect_object (stream, + "notify::volume", + G_CALLBACK (notify_volume_cb), + self, G_CONNECT_SWAPPED); + self->notify_is_muted_handler_id = g_signal_connect_object (stream, + "notify::is-muted", + G_CALLBACK (notify_is_muted_cb), + self, G_CONNECT_SWAPPED); + notify_volume_cb (self); + notify_is_muted_cb (self); + update_volume_icon (self); + } +} + +void +cc_volume_slider_set_is_amplified (CcVolumeSlider *self, + gboolean is_amplified) +{ + g_return_if_fail (CC_IS_VOLUME_SLIDER (self)); + + self->is_amplified = is_amplified; + + update_ranges (self); +} diff --git a/panels/sound/cc-volume-slider.h b/panels/sound/cc-volume-slider.h new file mode 100644 index 0000000..d0c6270 --- /dev/null +++ b/panels/sound/cc-volume-slider.h @@ -0,0 +1,43 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <gtk/gtk.h> +#include <pulse/pulseaudio.h> +#include <gvc-mixer-control.h> +#include <gvc-mixer-stream.h> + +#include "cc-sound-enums.h" + +G_BEGIN_DECLS + +#define CC_TYPE_VOLUME_SLIDER (cc_volume_slider_get_type ()) +G_DECLARE_FINAL_TYPE (CcVolumeSlider, cc_volume_slider, CC, VOLUME_SLIDER, GtkBox) + +void cc_volume_slider_set_mixer_control (CcVolumeSlider *slider, + GvcMixerControl *mixer_control); + +void cc_volume_slider_set_stream (CcVolumeSlider *slider, + GvcMixerStream *stream, + CcStreamType type); + +void cc_volume_slider_set_is_amplified (CcVolumeSlider *slider, + gboolean is_amplified); + +G_END_DECLS diff --git a/panels/sound/cc-volume-slider.ui b/panels/sound/cc-volume-slider.ui new file mode 100644 index 0000000..4fb0540 --- /dev/null +++ b/panels/sound/cc-volume-slider.ui @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <template class="CcVolumeSlider" parent="GtkBox"> + <property name="spacing">6</property> + <child> + <object class="GtkScale" id="volume_scale"> + <property name="visible">True</property> + <property name="adjustment">volume_adjustment</property> + <property name="draw_value">False</property> + <property name="hexpand">True</property> + </object> + </child> + <child> + <object class="GtkToggleButton" id="mute_button"> + <property name="visible">True</property> + <property name="relief">none</property> + <signal name="toggled" handler="mute_button_toggled_cb" object="CcVolumeSlider" swapped="yes"/> + <child> + <object class="GtkImage" id="stream_type_icon"> + <property name="visible">True</property> + <property name="icon_name">audio-volume-muted-symbolic</property> + </object> + </child> + </object> + </child> + </template> + <object class="GtkAdjustment" id="volume_adjustment"> + <signal name="value_changed" handler="volume_changed_cb" object="CcVolumeSlider" swapped="yes"/> + </object> +</interface> diff --git a/panels/sound/gnome-sound-panel.desktop.in.in b/panels/sound/gnome-sound-panel.desktop.in.in new file mode 100644 index 0000000..6869377 --- /dev/null +++ b/panels/sound/gnome-sound-panel.desktop.in.in @@ -0,0 +1,19 @@ +[Desktop Entry] +Name=Sound +Comment=Change sound levels, inputs, outputs, and alert sounds +Exec=gnome-control-center sound +# Translators: Do NOT translate or transliterate this text (this is an icon file name)! +Icon=multimedia-volume-control +Terminal=false +Type=Application +NoDisplay=true +StartupNotify=true +Categories=GNOME;GTK;Settings;X-GNOME-Settings-Panel;X-GNOME-DevicesSettings; +OnlyShowIn=GNOME;Unity; +X-GNOME-Bugzilla-Bugzilla=GNOME +X-GNOME-Bugzilla-Product=gnome-control-center +X-GNOME-Bugzilla-Component=sound +X-GNOME-Bugzilla-Version=@VERSION@ +X-GNOME-Settings-Panel=sound +# Translators: Search terms to find the Sound panel. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +Keywords=Card;Microphone;Volume;Fade;Balance;Bluetooth;Headset;Audio;Output;Input; diff --git a/panels/sound/gvc-mixer-stream-private.h b/panels/sound/gvc-mixer-stream-private.h new file mode 100644 index 0000000..e9b1552 --- /dev/null +++ b/panels/sound/gvc-mixer-stream-private.h @@ -0,0 +1,30 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + * + */ + +#pragma once + +#include <glib-object.h> + +#include "gvc-channel-map.h" + +G_BEGIN_DECLS + +pa_context * gvc_mixer_stream_get_pa_context (GvcMixerStream *stream); + +G_END_DECLS diff --git a/panels/sound/icons/audio-speaker-center-back-testing.svg b/panels/sound/icons/audio-speaker-center-back-testing.svg new file mode 100644 index 0000000..9fc8640 --- /dev/null +++ b/panels/sound/icons/audio-speaker-center-back-testing.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-center-back-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="11.313708" + inkscape:cx="31.254917" + inkscape:cy="25.749564" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="3440" + inkscape:window-height="1376" + inkscape:window-x="0" + inkscape:window-y="27" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(1.2838284e-7,-2,-2,-1.2838284e-7,434.06251,122.00041)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.50000005;marker:none;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;stroke:none;stroke-width:0.50000005;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-center-back.svg b/panels/sound/icons/audio-speaker-center-back.svg new file mode 100644 index 0000000..d2f3e38 --- /dev/null +++ b/panels/sound/icons/audio-speaker-center-back.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-center-back.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="11.313708" + inkscape:cx="31.254917" + inkscape:cy="25.749564" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2560" + inkscape:window-height="1403" + inkscape:window-x="3440" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(1.2838284e-7,-2,-2,-1.2838284e-7,434.06251,122.00041)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.16391027;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.16391027;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:1.16391027;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-center-testing.svg b/panels/sound/icons/audio-speaker-center-testing.svg new file mode 100644 index 0000000..06f7d70 --- /dev/null +++ b/panels/sound/icons/audio-speaker-center-testing.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-center-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="8" + inkscape:cx="1.6296281" + inkscape:cy="-11.453638" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="3440" + inkscape:window-height="1376" + inkscape:window-x="0" + inkscape:window-y="27" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(2.9261167e-8,2.0000002,-2.0000002,2.9261167e-8,434.06252,-74.000396)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-center.svg b/panels/sound/icons/audio-speaker-center.svg new file mode 100644 index 0000000..2cb83e0 --- /dev/null +++ b/panels/sound/icons/audio-speaker-center.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-center.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="8" + inkscape:cx="1.6296281" + inkscape:cy="-11.453638" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2560" + inkscape:window-height="1403" + inkscape:window-x="3440" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-center</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(2.9261167e-8,2.0000002,-2.0000002,2.9261167e-8,434.06252,-74.000396)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.16391015;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.16391015;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:1.16391015;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-left-back-testing.svg b/panels/sound/icons/audio-speaker-left-back-testing.svg new file mode 100644 index 0000000..eed2aa8 --- /dev/null +++ b/panels/sound/icons/audio-speaker-left-back-testing.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-left-back-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="8" + inkscape:cx="-2.4548513" + inkscape:cy="5.9299209" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="3440" + inkscape:window-height="1376" + inkscape:window-x="0" + inkscape:window-y="27" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(1.4142135,-1.4142137,1.4142137,1.4142135,-335.14805,-196.61703)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000004;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000004;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;stroke:none;stroke-width:0.50000004;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-left-back.svg b/panels/sound/icons/audio-speaker-left-back.svg new file mode 100644 index 0000000..b9da42d --- /dev/null +++ b/panels/sound/icons/audio-speaker-left-back.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-left-back.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="8" + inkscape:cx="-2.4548513" + inkscape:cy="5.9299209" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2560" + inkscape:window-height="1403" + inkscape:window-x="3440" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title /> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(1.4142135,-1.4142137,1.4142137,1.4142135,-335.14805,-196.61703)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.16391024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.16391024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:1.16391024;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-left-side-testing.svg b/panels/sound/icons/audio-speaker-left-side-testing.svg new file mode 100644 index 0000000..a699398 --- /dev/null +++ b/panels/sound/icons/audio-speaker-left-side-testing.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-left-side-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="11.313708" + inkscape:cx="9.5816545" + inkscape:cy="14.163095" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="3440" + inkscape:window-height="1376" + inkscape:window-x="0" + inkscape:window-y="27" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(2.0000001,-8.6649932e-8,8.6649932e-8,2.0000001,-73.937919,-386.00002)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;stroke:none;stroke-width:0.50000002;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-left-side.svg b/panels/sound/icons/audio-speaker-left-side.svg new file mode 100644 index 0000000..65ce1e2 --- /dev/null +++ b/panels/sound/icons/audio-speaker-left-side.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-left-side.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="11.313708" + inkscape:cx="20.01148" + inkscape:cy="-16.419273" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2560" + inkscape:window-height="1403" + inkscape:window-x="3440" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title /> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(2.0000001,-8.6649932e-8,8.6649932e-8,2.0000001,-73.937919,-386.00002)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.16391021;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.16391021;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:1.16391021;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-left-testing.svg b/panels/sound/icons/audio-speaker-left-testing.svg new file mode 100644 index 0000000..87a83af --- /dev/null +++ b/panels/sound/icons/audio-speaker-left-testing.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-left-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="11.313708" + inkscape:cx="80.640376" + inkscape:cy="35.349603" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="3440" + inkscape:window-height="1376" + inkscape:window-x="0" + inkscape:window-y="27" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(1.4142137,1.4142136,-1.4142136,1.4142137,244.67953,-335.21055)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;stroke:none;stroke-width:0.50000002;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-left.svg b/panels/sound/icons/audio-speaker-left.svg new file mode 100644 index 0000000..84e794f --- /dev/null +++ b/panels/sound/icons/audio-speaker-left.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-left.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6568542" + inkscape:cx="125.621" + inkscape:cy="44.778157" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2560" + inkscape:window-height="1403" + inkscape:window-x="3440" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title /> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(1.4142137,1.4142136,-1.4142136,1.4142137,244.67953,-335.21055)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.1639102;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.1639102;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:1.1639102;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-mono-testing.svg b/panels/sound/icons/audio-speaker-mono-testing.svg new file mode 100644 index 0000000..9f15634 --- /dev/null +++ b/panels/sound/icons/audio-speaker-mono-testing.svg @@ -0,0 +1,482 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-mono-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="33.690885" + inkscape:cy="21.493021" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2560" + inkscape:window-height="1403" + inkscape:window-x="3440" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" + d="m 48.002713,24 c -10e-7,5.628441 -2.000001,10.343459 -5.171142,14 H 40.00271 l 10e-7,-2.96144 C 42.532031,32 44.002713,28.59984 44.002713,24 c 0,-4.59984 -1.55906,-8 -3.999999,-11.03856 V 10 h 2.76256 c 2.931499,3.28088 5.237439,8.37156 5.237439,14 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" + d="m 42.002714,23.999999 c -2e-6,4.333281 -1.477563,8.039641 -4.000003,10 l -2,10e-7 2e-6,-4 c 1.213041,-1.577559 1.999999,-3.517739 1.999999,-5.999999 10e-7,-2.482261 -0.78696,-4.43876 -1.999999,-6.000001 l 10e-7,-4 h 1.999999 c 2.445801,1.989561 4,5.7468 4.000001,9.999999 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#729fcf;fill-opacity:0.52697096;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" + mask="none" + clip-path="none" + d="m 36.002712,24.000001 c 0,2.51466 -0.6233,4.43142 -1.999999,6 L 32.002711,30 l 1e-6,-6.000002 v -0.749999 l 2e-6,-5.249999 1.999999,-1e-6 c 1.344119,1.673801 1.999999,3.485341 1.999999,6.000002 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + <path + sodipodi:nodetypes="scccscccs" + inkscape:connector-curvature="0" + id="path21788" + d="m 0.065211,24 c 1e-6,5.628441 2.000001,10.343459 5.171142,14 h 2.828861 l -10e-7,-2.96144 C 5.535893,32 4.065211,28.59984 4.065211,24 c 0,-4.59984 1.55906,-8 3.999999,-11.03856 V 10 H 5.30265 C 2.371151,13.28088 0.065211,18.37156 0.065211,24 Z" + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" /> + <path + sodipodi:nodetypes="scccscccs" + inkscape:connector-curvature="0" + id="path21790" + d="m 6.06521,23.999999 c 2e-6,4.333281 1.477563,8.039641 4.000003,10 l 2,10e-7 -2e-6,-4 C 10.85217,28.422441 10.065212,26.482261 10.065212,24.000001 10.065211,21.51774 10.852172,19.561241 12.065211,18 l -10e-7,-4 h -1.999999 c -2.445801,1.989561 -4,5.7468 -4.000001,9.999999 z" + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" /> + <path + sodipodi:nodetypes="zccccccz" + inkscape:connector-curvature="0" + id="path21792" + d="m 12.065212,24.000001 c 0,2.51466 0.6233,4.43142 1.999999,6 l 2.000002,-1e-6 -1e-6,-6.000002 V 23.249999 L 16.06521,18 l -1.999999,-1e-6 c -1.344119,1.673801 -1.999999,3.485341 -1.999999,6.000002 z" + clip-path="none" + mask="none" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#729fcf;fill-opacity:0.52697096;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" /> + <circle + style="opacity:1;vector-effect:none;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;paint-order:normal" + id="path21794" + cx="24.019533" + cy="24.076326" + r="6.0216699" /> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-mono.svg b/panels/sound/icons/audio-speaker-mono.svg new file mode 100644 index 0000000..951fc76 --- /dev/null +++ b/panels/sound/icons/audio-speaker-mono.svg @@ -0,0 +1,482 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-mono.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="-2.75781" + inkscape:cy="0.79730978" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2560" + inkscape:window-height="1403" + inkscape:window-x="3440" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" + d="m 48.002713,24 c -10e-7,5.628441 -2.000001,10.343459 -5.171142,14 H 40.00271 l 10e-7,-2.96144 C 42.532031,32 44.002713,28.59984 44.002713,24 c 0,-4.59984 -1.55906,-8 -3.999999,-11.03856 V 10 h 2.76256 c 2.931499,3.28088 5.237439,8.37156 5.237439,14 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" + d="m 42.002714,23.999999 c -2e-6,4.333281 -1.477563,8.039641 -4.000003,10 l -2,10e-7 2e-6,-4 c 1.213041,-1.577559 1.999999,-3.517739 1.999999,-5.999999 10e-7,-2.482261 -0.78696,-4.43876 -1.999999,-6.000001 l 10e-7,-4 h 1.999999 c 2.445801,1.989561 4,5.7468 4.000001,9.999999 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" + mask="none" + clip-path="none" + d="m 36.002712,24.000001 c 0,2.51466 -0.6233,4.43142 -1.999999,6 L 32.002711,30 l 1e-6,-6.000002 v -0.749999 l 2e-6,-5.249999 1.999999,-1e-6 c 1.344119,1.673801 1.999999,3.485341 1.999999,6.000002 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + <path + sodipodi:nodetypes="scccscccs" + inkscape:connector-curvature="0" + id="path21788" + d="m 0.065211,24 c 1e-6,5.628441 2.000001,10.343459 5.171142,14 h 2.828861 l -10e-7,-2.96144 C 5.535893,32 4.065211,28.59984 4.065211,24 c 0,-4.59984 1.55906,-8 3.999999,-11.03856 V 10 H 5.30265 C 2.371151,13.28088 0.065211,18.37156 0.065211,24 Z" + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" /> + <path + sodipodi:nodetypes="scccscccs" + inkscape:connector-curvature="0" + id="path21790" + d="m 6.06521,23.999999 c 2e-6,4.333281 1.477563,8.039641 4.000003,10 l 2,10e-7 -2e-6,-4 C 10.85217,28.422441 10.065212,26.482261 10.065212,24.000001 10.065211,21.51774 10.852172,19.561241 12.065211,18 l -10e-7,-4 h -1.999999 c -2.445801,1.989561 -4,5.7468 -4.000001,9.999999 z" + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" /> + <path + sodipodi:nodetypes="zccccccz" + inkscape:connector-curvature="0" + id="path21792" + d="m 12.065212,24.000001 c 0,2.51466 0.6233,4.43142 1.999999,6 l 2.000002,-1e-6 -1e-6,-6.000002 V 23.249999 L 16.06521,18 l -1.999999,-1e-6 c -1.344119,1.673801 -1.999999,3.485341 -1.999999,6.000002 z" + clip-path="none" + mask="none" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" /> + <circle + style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;paint-order:normal" + id="path21794" + cx="24.019533" + cy="24.076326" + r="6.0216699" /> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-right-back-testing.svg b/panels/sound/icons/audio-speaker-right-back-testing.svg new file mode 100644 index 0000000..9f86660 --- /dev/null +++ b/panels/sound/icons/audio-speaker-right-back-testing.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-right-back-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="11.313708" + inkscape:cx="-19.586532" + inkscape:cy="27.51471" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2027" + inkscape:window-height="1117" + inkscape:window-x="292" + inkscape:window-y="193" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="0"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(-1.4142135,-1.4142137,-1.4142137,1.4142135,383.27305,-196.61703)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000004;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000004;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;stroke:none;stroke-width:0.50000004;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-right-back.svg b/panels/sound/icons/audio-speaker-right-back.svg new file mode 100644 index 0000000..360f97e --- /dev/null +++ b/panels/sound/icons/audio-speaker-right-back.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-right-back.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="11.313708" + inkscape:cx="-16.050998" + inkscape:cy="27.51471" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2560" + inkscape:window-height="1403" + inkscape:window-x="3440" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title /> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(-1.4142135,-1.4142137,-1.4142137,1.4142135,383.27305,-196.61703)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.16391024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.16391024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:1.16391024;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-right-side-testing.svg b/panels/sound/icons/audio-speaker-right-side-testing.svg new file mode 100644 index 0000000..b5fdeff --- /dev/null +++ b/panels/sound/icons/audio-speaker-right-side-testing.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-right-side-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="3.5728476" + inkscape:cy="54.167993" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="3440" + inkscape:window-height="1376" + inkscape:window-x="0" + inkscape:window-y="27" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(-2.0000001,-8.6649932e-8,-8.6649932e-8,2.0000001,122.06292,-386.00002)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;stroke:none;stroke-width:0.50000002;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-right-side.svg b/panels/sound/icons/audio-speaker-right-side.svg new file mode 100644 index 0000000..e42db7e --- /dev/null +++ b/panels/sound/icons/audio-speaker-right-side.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-right-side.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="11.313708" + inkscape:cx="3.5728476" + inkscape:cy="54.167993" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2560" + inkscape:window-height="1403" + inkscape:window-x="3440" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title /> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(-2.0000001,-8.6649932e-8,-8.6649932e-8,2.0000001,122.06292,-386.00002)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.16391021;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.16391021;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:1.16391021;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-right-testing.svg b/panels/sound/icons/audio-speaker-right-testing.svg new file mode 100644 index 0000000..7863f82 --- /dev/null +++ b/panels/sound/icons/audio-speaker-right-testing.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-right-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="10.22266" + inkscape:cy="32.058291" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="3440" + inkscape:window-height="1376" + inkscape:window-x="0" + inkscape:window-y="27" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(-1.4142137,1.4142136,1.4142136,1.4142137,-196.55454,-335.21055)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;stroke:none;stroke-width:0.50000002;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-right.svg b/panels/sound/icons/audio-speaker-right.svg new file mode 100644 index 0000000..ec8ef73 --- /dev/null +++ b/panels/sound/icons/audio-speaker-right.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-right.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="16" + inkscape:cx="23.91016" + inkscape:cy="-4.8792089" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2560" + inkscape:window-height="1403" + inkscape:window-x="3440" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title /> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(-1.4142137,1.4142136,1.4142136,1.4142137,-196.55454,-335.21055)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.1639102;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:1.1639102;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:1.1639102;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-speaker-testing.svg b/panels/sound/icons/audio-speaker-testing.svg new file mode 100644 index 0000000..7863f82 --- /dev/null +++ b/panels/sound/icons/audio-speaker-testing.svg @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-speaker-right-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="10.22266" + inkscape:cy="32.058291" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="3440" + inkscape:window-height="1376" + inkscape:window-x="0" + inkscape:window-y="27" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + transform="matrix(-1.4142137,1.4142136,1.4142136,1.4142137,-196.55454,-335.21055)" + style="display:inline;stroke-width:0.5" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,202 h 2.484375 l 2.968754,-3 0.546871,0.0156 v 12 l -0.475297,8.3e-4 L 43.484575,208 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:0.5;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:0.50000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#729fcf;fill-opacity:0.52697096;stroke:none;stroke-width:0.50000002;marker:none;enable-background:accumulate;font-variant-east_asian:normal;opacity:1;vector-effect:none;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 3 0.375 2.625 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + </g> +</svg> diff --git a/panels/sound/icons/audio-subwoofer-testing.svg b/panels/sound/icons/audio-subwoofer-testing.svg new file mode 100644 index 0000000..1274087 --- /dev/null +++ b/panels/sound/icons/audio-subwoofer-testing.svg @@ -0,0 +1,469 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-subwoofer-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6568542" + inkscape:cx="29.091148" + inkscape:cy="12.927483" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2560" + inkscape:window-height="1403" + inkscape:window-x="3440" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + style="display:inline;stroke-width:0.50000006" + id="g9428" + inkscape:label="display-projector" + transform="matrix(1.9999998,0,0,1.9999998,-194.0632,-913.99991)"> + <path + style="fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:0.75" + d="M 9.9960938,12 C 8.8902739,12 8,13.0462 8,14.3125 v 15.125 C 8,30.70378 8.8316801,32 9.9375,32 h 2 c 0,1.2663 0.948868,2 2.054688,2 h 1.992187 c 1.10582,0 1.953125,-0.7337 1.953125,-2 h 11.976562 c 0,1.2663 0.933243,2 2.039063,2 h 1.988281 c 1.10582,0 1.996094,-0.7337 1.996094,-2 h 2.003906 c 1.10584,0 1.996094,-1.29622 1.996094,-2.5625 V 14.3125 C 39.9375,13.0462 39.047246,12 37.941406,12 Z m 9.0488282,2 c 2.756,0 4.990234,2.23858 4.990234,5 0,2.76142 -2.234234,5 -4.990234,5 -2.756,0 -4.990234,-2.23858 -4.990234,-5 0,-2.76142 2.234234,-5 4.990234,-5 z m 11.970703,1.96875 c 1.665484,0 3.015625,1.350141 3.015625,3.015625 C 34.03125,20.649859 32.681109,22 31.015625,22 29.350141,22 28,20.649859 28,18.984375 28,17.318891 29.350141,15.96875 31.015625,15.96875 Z M 19,16 c -1.656854,0 -3,1.343146 -3,3 0,1.656854 1.343146,3 3,3 1.656854,0 3,-1.343146 3,-3 0,-1.656854 -1.343146,-3 -3,-3 z" + transform="matrix(0.50000005,0,0,0.50000005,97.03161,463)" + id="path9418" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssscssccsscssssssssssssssssssss" /> + </g> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:1.00000006;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal" + d="m 25.000001,5 c 5.62844,4e-7 10.343459,2.0000007 13.999999,5.171141 v 2.82886 H 36.03856 C 33,10.470681 29.59984,9.0000003 25,9 c -4.59984,-3e-7 -8,1.55906 -11.03856,3.999999 H 11 v -2.76256 C 14.28088,7.3059393 19.37156,4.9999996 25.000001,5 Z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#729fcf;fill-opacity:0.52697096;fill-rule:nonzero;stroke:none;stroke-width:1.00000006;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal" + d="m 25,11 c 4.33328,0 8.03964,1.477561 10,4.000001 v 2 L 31,17 c -1.57756,-1.21304 -3.51774,-2 -6,-2 -2.48226,0 -4.43876,0.78696 -6,2 l -4,-1e-6 v -2 C 16.98956,12.5542 20.7468,11 25,11 Z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#729fcf;fill-opacity:0.52697096;stroke:none;stroke-width:1.00000006;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate;font-variant-east_asian:normal" + mask="none" + clip-path="none" + d="m 25,17 c 2.51466,0 4.43142,0.6233 6,2 l -1e-6,2 h -6 -0.75 H 19 v -2 c 1.6738,-1.34412 3.48534,-2 6,-2 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> +</svg> diff --git a/panels/sound/icons/audio-subwoofer.svg b/panels/sound/icons/audio-subwoofer.svg new file mode 100644 index 0000000..8deec94 --- /dev/null +++ b/panels/sound/icons/audio-subwoofer.svg @@ -0,0 +1,469 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + version="1.0" + sodipodi:docname="audio-subwoofer.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="38.229248" + inkscape:cy="37.092309" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="2560" + inkscape:window-height="1403" + inkscape:window-x="3440" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true" + inkscape:showpageshadow="false" + borderlayer="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" + inkscape:locked="false" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" + inkscape:locked="false" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title></dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + style="display:inline;stroke-width:0.50000006" + id="g9428" + inkscape:label="display-projector" + transform="matrix(1.9999998,0,0,1.9999998,-194.0632,-913.99991)"> + <path + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75" + d="M 9.9960938,12 C 8.8902739,12 8,13.0462 8,14.3125 v 15.125 C 8,30.70378 8.8316801,32 9.9375,32 h 2 c 0,1.2663 0.948868,2 2.054688,2 h 1.992187 c 1.10582,0 1.953125,-0.7337 1.953125,-2 h 11.976562 c 0,1.2663 0.933243,2 2.039063,2 h 1.988281 c 1.10582,0 1.996094,-0.7337 1.996094,-2 h 2.003906 c 1.10584,0 1.996094,-1.29622 1.996094,-2.5625 V 14.3125 C 39.9375,13.0462 39.047246,12 37.941406,12 Z m 9.0488282,2 c 2.756,0 4.990234,2.23858 4.990234,5 0,2.76142 -2.234234,5 -4.990234,5 -2.756,0 -4.990234,-2.23858 -4.990234,-5 0,-2.76142 2.234234,-5 4.990234,-5 z m 11.970703,1.96875 c 1.665484,0 3.015625,1.350141 3.015625,3.015625 C 34.03125,20.649859 32.681109,22 31.015625,22 29.350141,22 28,20.649859 28,18.984375 28,17.318891 29.350141,15.96875 31.015625,15.96875 Z M 19,16 c -1.656854,0 -3,1.343146 -3,3 0,1.656854 1.343146,3 3,3 1.656854,0 3,-1.343146 3,-3 0,-1.656854 -1.343146,-3 -3,-3 z" + transform="matrix(0.50000005,0,0,0.50000005,97.03161,463)" + id="path9418" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssscssccsscssssssssssssssssssss" /> + </g> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:2.32782054;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" + d="m 25.000001,5 c 5.62844,4e-7 10.343459,2.0000007 13.999999,5.171141 v 2.82886 H 36.03856 C 33,10.470681 29.59984,9.0000003 25,9 c -4.59984,-3e-7 -8,1.55906 -11.03856,3.999999 H 11 v -2.76256 C 14.28088,7.3059393 19.37156,4.9999996 25.000001,5 Z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#000000;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:2.32782054;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" + d="m 25,11 c 4.33328,0 8.03964,1.477561 10,4.000001 v 2 L 31,17 c -1.57756,-1.21304 -3.51774,-2 -6,-2 -2.48226,0 -4.43876,0.78696 -6,2 l -4,-1e-6 v -2 C 16.98956,12.5542 20.7468,11 25,11 Z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:1;vector-effect:none;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:2.32782054;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" + mask="none" + clip-path="none" + d="m 25,17 c 2.51466,0 4.43142,0.6233 6,2 l -1e-6,2 h -6 -0.75 H 19 v -2 c 1.6738,-1.34412 3.48534,-2 6,-2 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> +</svg> diff --git a/panels/sound/meson.build b/panels/sound/meson.build new file mode 100644 index 0000000..fa0f128 --- /dev/null +++ b/panels/sound/meson.build @@ -0,0 +1,110 @@ +panels_list += cappletname +desktop = 'gnome-@0@-panel.desktop'.format(cappletname) + +desktop_in = configure_file( + input: desktop + '.in.in', + output: desktop + '.in', + configuration: desktop_conf +) + +i18n.merge_file( + desktop, + type: 'desktop', + input: desktop_in, + output: desktop, + po_dir: po_dir, + install: true, + install_dir: control_center_desktopdir +) + +deps = common_deps + [ + libgvc_dep, + libxml_dep, + m_dep, + pulse_dep, + pulse_mainloop_dep, + dependency('gsound'), +] + +cflags += [ + '-DSOUND_DATA_DIR="@0@"'.format(join_paths(control_center_datadir, 'sounds')), +] + +sources = files( + 'cc-alert-chooser.c', + 'cc-balance-slider.c', + 'cc-device-combo-box.c', + 'cc-fade-slider.c', + 'cc-level-bar.c', + 'cc-output-test-dialog.c', + 'cc-profile-combo-box.c', + 'cc-sound-button.c', + 'cc-sound-panel.c', + 'cc-speaker-test-button.c', + 'cc-stream-list-box.c', + 'cc-stream-row.c', + 'cc-subwoofer-slider.c', + 'cc-volume-slider.c', +) + +resource_data = files( + 'icons/audio-speaker-center-back.svg', + 'icons/audio-speaker-center-back-testing.svg', + 'icons/audio-speaker-center.svg', + 'icons/audio-speaker-center-testing.svg', + 'icons/audio-speaker-left-back.svg', + 'icons/audio-speaker-left-back-testing.svg', + 'icons/audio-speaker-left-side.svg', + 'icons/audio-speaker-left-side-testing.svg', + 'icons/audio-speaker-left.svg', + 'icons/audio-speaker-left-testing.svg', + 'icons/audio-speaker-mono.svg', + 'icons/audio-speaker-mono-testing.svg', + 'icons/audio-speaker-right-back.svg', + 'icons/audio-speaker-right-back-testing.svg', + 'icons/audio-speaker-right-side.svg', + 'icons/audio-speaker-right-side-testing.svg', + 'icons/audio-speaker-right.svg', + 'icons/audio-speaker-right-testing.svg', + 'icons/audio-speaker-testing.svg', + 'cc-alert-chooser.ui', + 'cc-balance-slider.ui', + 'cc-device-combo-box.ui', + 'cc-fade-slider.ui', + 'cc-output-test-dialog.ui', + 'cc-profile-combo-box.ui', + 'cc-sound-button.ui', + 'cc-sound-panel.ui', + 'cc-speaker-test-button.ui', + 'cc-stream-row.ui', + 'cc-subwoofer-slider.ui', + 'cc-volume-slider.ui', +) + +sources += gnome.compile_resources( + 'cc-' + cappletname + '-resources', + cappletname + '.gresource.xml', + c_name: 'cc_' + cappletname.underscorify (), + dependencies: resource_data, + export: true +) + +panels_libs += static_library( + cappletname, + sources: sources, + include_directories: [top_inc, common_inc], + dependencies: deps, + c_args: cflags, +) + +sound_data = files( + 'sounds/bark.ogg', + 'sounds/drip.ogg', + 'sounds/glass.ogg', + 'sounds/sonar.ogg' +) + +install_data( + sound_data, + install_dir: join_paths(control_center_datadir, 'sounds', 'gnome', 'default', 'alerts') +) diff --git a/panels/sound/sound.gresource.xml b/panels/sound/sound.gresource.xml new file mode 100644 index 0000000..a7b662d --- /dev/null +++ b/panels/sound/sound.gresource.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/org/gnome/control-center/sound"> + <file preprocess="xml-stripblanks">cc-alert-chooser.ui</file> + <file preprocess="xml-stripblanks">cc-balance-slider.ui</file> + <file preprocess="xml-stripblanks">cc-device-combo-box.ui</file> + <file preprocess="xml-stripblanks">cc-fade-slider.ui</file> + <file preprocess="xml-stripblanks">cc-output-test-dialog.ui</file> + <file preprocess="xml-stripblanks">cc-profile-combo-box.ui</file> + <file preprocess="xml-stripblanks">cc-sound-button.ui</file> + <file preprocess="xml-stripblanks">cc-sound-panel.ui</file> + <file preprocess="xml-stripblanks">cc-speaker-test-button.ui</file> + <file preprocess="xml-stripblanks">cc-stream-row.ui</file> + <file preprocess="xml-stripblanks">cc-subwoofer-slider.ui</file> + <file preprocess="xml-stripblanks">cc-volume-slider.ui</file> + </gresource> + <gresource prefix="/org/gnome/ControlCenter/icons/scalable/devices"> + <file alias="audio-speaker-center-back.svg">icons/audio-speaker-center-back.svg</file> + <file alias="audio-speaker-center-back-testing.svg">icons/audio-speaker-center-back-testing.svg</file> + <file alias="audio-speaker-center.svg">icons/audio-speaker-center.svg</file> + <file alias="audio-speaker-center-testing.svg">icons/audio-speaker-center-testing.svg</file> + <file alias="audio-speaker-left-back.svg">icons/audio-speaker-left-back.svg</file> + <file alias="audio-speaker-left-back-testing.svg">icons/audio-speaker-left-back-testing.svg</file> + <file alias="audio-speaker-left-side.svg">icons/audio-speaker-left-side.svg</file> + <file alias="audio-speaker-left-side-testing.svg">icons/audio-speaker-left-side-testing.svg</file> + <file alias="audio-speaker-left.svg">icons/audio-speaker-left.svg</file> + <file alias="audio-speaker-left-testing.svg">icons/audio-speaker-left-testing.svg</file> + <file alias="audio-speaker-mono.svg">icons/audio-speaker-mono.svg</file> + <file alias="audio-speaker-mono-testing.svg">icons/audio-speaker-mono-testing.svg</file> + <file alias="audio-speaker-right-back.svg">icons/audio-speaker-right-back.svg</file> + <file alias="audio-speaker-right-back-testing.svg">icons/audio-speaker-right-back-testing.svg</file> + <file alias="audio-speaker-right-side.svg">icons/audio-speaker-right-side.svg</file> + <file alias="audio-speaker-right-side-testing.svg">icons/audio-speaker-right-side-testing.svg</file> + <file alias="audio-speaker-right.svg">icons/audio-speaker-right.svg</file> + <file alias="audio-speaker-right-testing.svg">icons/audio-speaker-right-testing.svg</file> + <file alias="audio-speaker-testing.svg">icons/audio-speaker-testing.svg</file> + <file alias="audio-subwoofer.svg">icons/audio-subwoofer.svg</file> + <file alias="audio-subwoofer-testing.svg">icons/audio-subwoofer-testing.svg</file> + </gresource> +</gresources> diff --git a/panels/sound/sounds/bark.ogg b/panels/sound/sounds/bark.ogg Binary files differnew file mode 100644 index 0000000..480950c --- /dev/null +++ b/panels/sound/sounds/bark.ogg diff --git a/panels/sound/sounds/drip.ogg b/panels/sound/sounds/drip.ogg Binary files differnew file mode 100644 index 0000000..144d2b3 --- /dev/null +++ b/panels/sound/sounds/drip.ogg diff --git a/panels/sound/sounds/glass.ogg b/panels/sound/sounds/glass.ogg Binary files differnew file mode 100644 index 0000000..902a3c8 --- /dev/null +++ b/panels/sound/sounds/glass.ogg diff --git a/panels/sound/sounds/sonar.ogg b/panels/sound/sounds/sonar.ogg Binary files differnew file mode 100644 index 0000000..77aadec --- /dev/null +++ b/panels/sound/sounds/sonar.ogg |