Commit b9badc47 authored by Lukáš Tyrychtr's avatar Lukáš Tyrychtr Committed by Jeremy Bicha

appearance: Add sound theme chooser

Add a sound theme chooser below the other theming options.

This feature may be useful for accessibility or for people who
want different sound effects.

References
----------
https://www.freedesktop.org/wiki/Specifications/sound-theme-spec/
http://0pointer.de/public/sound-naming-spec.html

Closes: #16

!7
parent 0342e84d
......@@ -2,12 +2,14 @@
# SPDX-License-Identifier: GPL-3.0+
# License-Filename: LICENSES/GPL-3.0
import os
import os.path
import logging
import zipfile
import tempfile
import json
import pprint
import configparser
from gi.repository import Gtk
from gi.repository import GLib
......@@ -23,6 +25,29 @@ from gtweak.widgets import ListBoxTweakGroup, GSettingsSwitchTweak, GSettingsCom
_shell = GnomeShellFactory().get_shell()
_shell_loaded = _shell is not None
def get_theme_name(index_path):
"""Given an index file path, gets the relevant sound theme's name."""
config = configparser.ConfigParser()
config.read(index_path)
return config["Sound Theme"]["Name"]
def get_sound_themes():
"""Gets the available sound themes as a (theme_directory_name, theme_display_name) tuple list."""
themes = []
seen = set()
for location in get_resource_dirs("sounds"):
for item in os.listdir(location):
candidate = os.path.join(location, item)
index_file = os.path.join(candidate, "index.theme")
if os.path.isdir(candidate) and os.path.exists(index_file):
theme_info = (os.path.basename(candidate), get_theme_name(index_file))
if theme_info[1] not in seen:
themes.append(theme_info)
seen.add(theme_info[1])
return themes
class GtkThemeSwitcher(GSettingsComboTweak):
def __init__(self, **options):
GSettingsComboTweak.__init__(self,
......@@ -261,6 +286,8 @@ TWEAK_GROUPS = [
CursorThemeSwitcher(),
IconThemeSwitcher(),
ShellThemeTweak(loaded=_shell_loaded),
GSettingsComboTweak(_("Sound"), "org.gnome.desktop.sound", "theme-name", get_sound_themes(),
desc=_("Specifies which sound theme to use for sound events.")),
Title(_("Background"), "", uid="title-theme"),
GSettingsFileChooserButtonTweak(_("Image"),"org.gnome.desktop.background", "picture-uri",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment