diff options
Diffstat (limited to 'deckit/server.py')
| -rw-r--r-- | deckit/server.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/deckit/server.py b/deckit/server.py index e392041..6bea422 100644 --- a/deckit/server.py +++ b/deckit/server.py @@ -84,12 +84,15 @@ def icon_path(name: str, theme: str | None = None, bases=ICON_BASES): """An app icon from the installed icon theme, so launchers follow the theme.""" if not ICON.fullmatch(name): return None - theme = theme or icon_theme() - for base in bases: - for sub in ("apps/scalable", "apps/64", "apps/48", "apps/32"): - path = Path(base) / theme / sub / f"{name}.svg" - if path.is_file(): - return path + # hicolor last: the spec's fallback every theme inherits, where apps + # install their own icon when the theme has none for them. + for th in (theme or icon_theme(), "hicolor"): + for base in bases: + # Themes lay out category/size (candy-icons) or size/category (hicolor). + for sub in ("apps/scalable", "apps/64", "apps/48", "apps/32", "scalable/apps"): + path = Path(base) / th / sub / f"{name}.svg" + if path.is_file(): + return path return None |
