Надежный способ найти иконки приложений?

Я создаю приложение на Qt Creator и C++, которое перечисляет все приложения в системе, индексируя .desktop файлы из /usr/share/applications и ~/.local/share/applications. Почти в каждом пути к значку я не получаю фактический путь, а получаю локальный путь, как в примере приложения Characters, где путь к значку просто org.gnome.Characters.

Я слышал, что иконки обычно находятся в /usr/share/pixmaps, но я искал эту иконку и ее не было. Я выполнил поиск по всей системе и нашел несколько экземпляров, большинство из которых находились в /usr/share/icons/Yaru (он же пакет тем иконок).

Я мог бы проиндексировать пакеты тем как места для поиска иконок, но это ненадежно по двум причинам:

  1. Если я просмотрю каталог и его подкаталоги в поисках первого совпадения с иконкой из пакета иконок, я могу получить изображение низкого разрешения, если поддерживается несколько различных разрешений.
  2. Пользователь мог удалить тему.

Это было очень хлопотно для одной иконки. Есть ли лучший способ сделать это? Поскольку у меня нет полного пути к иконке, я думаю, что мне придется индексировать тонны мест для иконки, что является ненужной обработкой.

Есть ли хороший способ сделать это, и есть ли другие места расположения значка, которые я должен проверить? Может быть, функция Qt, которая находит иконку по локальному пути :)?

0
задан 28 May 2021 в 13:43

1 ответ

На самом деле это не связано с Ubuntu, поскольку это вопрос программирования Qt, но все же ...

В этом случае используйте QIcon :: fromTheme () . При этом используется путь к теме рабочего стола, который пользователь также видит в меню рабочего стола.

Существует перегруженная версия, в которой вы можете указать резервный значок на случай, если тема рабочего стола не может предоставить значок.

Для моих собственных значков в моем QDirStat я использую скомпилированные значки с использованием системы ресурсов Qt , поэтому мне не нужно полагаться на свою удачу, независимо от того, какой значок доступен; а также убедиться, что все они имеют единообразный вид на случай, если некоторые значки присутствуют в теме, а некоторые нет.

Но в вашем случае вы хотите отображать значки других приложений, поэтому значки темы - это первое место, откуда их загружать. Обратите внимание, что у вас может быть установлено несколько тем значков, которые в какой-то степени перекрывают друг друга, поэтому позволить рабочему столу решить, какую тему использовать, - лучший вариант; в противном случае вы, скорее всего, выберете значок из неправильной темы значка.

0
ответ дан 28 July 2021 в 11:34

Другие вопросы по тегам:

Похожие вопросы: