Значок приложения PyGTK размыт в единстве

У меня есть значок 128x128, который упоминается в главном окне, например <property name="icon">../media/my-icon.svg</property>.

Я пробовал как с svg, так и png, но он всегда сильно размывается в коммутаторе приложений Ubuntu (Alt + Tab).

Я заметил, что при быстром создании приложения из шаблона логотип Ubuntu тоже сильно размыт.

Любая идея, почему это может случиться?

6
задан 31 December 2011 в 14:24

1 ответ

Что происходит

Настройки <property name="icon"> относятся к значку окна, а не к значку приложения. Насколько я понимаю, оконный сервер Ubuntu (X.org) сбрасывает их до крошечного размера после загрузки. Если вы не помните из 2009 года, они использовались в этом качестве:

Использование значков приложений вместо

Ubuntu Unity будет использовать этот низкий -res, если необходимо. Однако он обычно извлекает значки приложений в соответствии со значением Icon= для запуска приложения данного окна, называемым «записью рабочего стола».

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

Сценарий nitty gritty

Как создать запись рабочего стола и заставить Ubuntu соответствовать вашему окну PyGTK правильному значку и имени приложения уже зарегистрирован в этом вопросе. Но где вы на самом деле размещаете значки, чтобы отобразить правильный текст?

Как это бывает, ответ довольно загадочный. В соответствии со спецификациями freedesktop.org иконы загружаются по размеру, теме значка и (при необходимости) локализации. Иконки могут быть установлены в нескольких разностных префиксах в зависимости от источника, который их установил. Ubuntu «запросит» значки по контексту.

Простые правила: используйте уникальное имя значка для вашего приложения, чтобы предотвратить ложные совпадения с другими значками. Поместите значок (-ы) для своего приложения в один из следующих каталогов (или его подкаталог):

<user prefix>/share/icons/<icon width>x<icon height>/apps/
<user prefix>/share/icons/scalable/apps/

<user_prefix> - это путь установки вашего приложения (он будет /usr для установленных пакетов диспетчером пакетов /usr/local/ для другого программного обеспечения, установленного для всех пользователей, и $HOME/.local для однопользовательских установок). <icon width> и <icon height> (или «масштабируемые» для SVG) относятся к размерам значка.

Получение правильного значка приложения для отображения при разработке

Создание масштабируемого или высокоуровневого изображения, и поместите его в правильный подкаталог каталога share/ вашего пользователя. Например, myapp.svg войдет в $HOME/.local/share/icons/scalable/ Запись записи рабочего стола, которая содержит нерасширенное имя вашего значка. Например
[Desktop Entry]

Name=My Application
Exec=my_binary
Icon=myapp
Поместите это в $HOME/.local/share/applications/. Обратите внимание, что my_binary должен быть исполняемым для поиска в одном из ваших $PATH каталогов. Запустите приложение либо (a) из черты Unity, (b) из командной строки, используя точное имя исполняемого файла $PATH [например, «my_binary»].

Если это все читается как тарабарщина ...

Откройте браузер файлов и изучите каталоги /usr/share/applications/ и /usr/share/icons/. Посмотрите вокруг, и вы поймете, как метаданные и значки приложений работают в Ubuntu.

8
ответ дан 25 May 2018 в 15:38
  • 1
    Удивительно подробный ответ! – Thomas Boxley 31 December 2011 в 14:43
  • 2
    Большое вам спасибо, это лучший ответ, который я когда-либо попадал в стек! Но, так как я ubuntu app / python dev новичок и из разных стран мира, я не знаю много чего относительно упаковки, условностей ... некоторые вещи, о которых вы упомянули, я уже знаю. Итак, что случилось, я хотел запустить setup.py и установить приложение, надеясь, что размытый значок будет исправлен. Но произошло то, что икона просто исчезла, теперь я получаю значок знака вопроса. Затем я попытался исправить это с помощью жесткого кодирования Icon = до абсолютного пути к значку svg, но проблема не отвечает. Что делать, чтобы правильно показывать значок во время разработки? – umpirsky 1 January 2012 в 22:00
  • 3
    @umpirsky Я добавил новый раздел к моему ответу, который, надеюсь, прописал бы его. – Jjed 2 January 2012 в 02:25
  • 4
    @ j-johan-edwards Большое спасибо. Итак, нет способа реализовать это в одном каталоге, не используя $HOME/.local/share/icons/scalable/ и $HOME/.local/share/applications/? Во всяком случае, я попробовал то, что вы предложили, и до сих пор нет значка. Обратите внимание, что в $HOME/.local/share/applications/ были только файлы рабочего стола для расширения вин, другие приложения, вероятно, где-то в другом месте. Кроме того, не было $HOME/.local/share/icons/scalable/, но я создал его и разместил иконку внутри, но все равно нет значка при запуске приложения (на этот раз из Unity launcher). – umpirsky 2 January 2012 в 02:59

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

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