Where to put application icons on Linux
When you write a GUI application and want to install it properly on a Linux system you will ask yourself where to store the application’s icon so that it is shown in the application menu of the desktop environment. To my surprise, I found this a bit confusing. In particular, I was interested in Debian and the Gnome 3 desktop because this is what I happen to use myself. Here are what seemed to be the most relevant sources to me.
- Icon files should go to /usr/share/pixmaps/ .
- They should be in XPM format.
- They should not be larger than 32×32 px, smaller sizes are okay.
- They should have a transparent background.
- An icon file sized 48×48 px (probably PNG?) should go to /usr/share/icons/hicolor/48×48/apps/
- Aditionally, bigger or smaller icons may be provided in other /usr/share/icons/hicolor/*/apps/ directories, in particular an SVG file in /usr/share/icons/hicolor/scalable/apps/ .
This sounds somewhat contradictory but on a current Debian Jessie, you will in fact find icon files in all of the mentioned directories. So if you like to be pragmatic you should probably install an icon file in at least three places to ensure optimal performance:
- A 32×32 px XPM file in /usr/share/pixmaps/ .
- A 48×48 px PNG file in /usr/share/icons/hicolor/48×48/apps/ .
- Optionally, an SVG file in /usr/share/icons/hicolor/scalable/apps/ .
Of course you also need a desktop file in /usr/share/applications/ for your program.
And just in case, you can easily create XPM and PNG files from a source SVG file:
$ inkscape -e icon.png -C -w 48 -h 48 icon.svg $ inkscape -e tmp.png -C -w 32 -h 32 icon.svg $ convert tmp.png icon.xpm $ rm tmp.png
Где хранятся иконки?
Я хочу изменить иконку определенной темы. Где темы сохраняют свои иконки?
4 ответа
Во всем мире: /usr/share/icons/ или в вашей домашней папке: ~/.local/share/icons
/usr/share/icons/ обычно содержит предустановленные темы (доступны всем пользователям) ~/.icons/ обычно содержит папки с темами, установленными пользователем.
Кроме того, многие приложения имеют свои значки в /usr/share/pixmaps/ или в папке с тем же именем, что и приложение под /usr/share/.
Есть несколько мест: (в скобках несколько примеров)
- /usr/share/pixmaps/ (chromium-browser.png display-im6.q16.xpm firefox.png flash-player-properties.png gimp.xpm gvim.svg texstudio.xpm)
- /usr/share/app-install/icons/ (adobeflashplugin.png julia.svg texmaker.png thunderbird.png vim.svg vlc.png wine.svg grace.svg)
- ~/.local/share/icons/ (soffice.png java-lang-thread.png org-jabref-jabrefmain.png) одно из мест, где Ubuntu ищет значки, если вы используете относительный путь
- /usr/share/icons/. и подпапки ( matlab.png . /hicolor/ масштабируемые /apps/chromium-browser.svg . /hicolor/ масштабируемые /apps/geany.svg . /hicolor/ масштабируемые /apps/okular.svgz . /default.kde4/48×48/apps/acroread.png)
- /usr/share/. просто подпапки ( . /vlc/vlc.ico . /gimp/2.0/images/gimp-logo.png), но это больше для значков, используемых в программе, чем логотип программы
- /snap/. просто подпапки ( . /inkscape/3080/meta/gui/inkscape.svg . /languagetool/10/snap/gui/icon.png)
- ~/.icons вряд ли эта папка существует (но иногда)
Большинство папок уже объявлено здесь, все источники, которые я использовал:
Where are icons stored?
The link I was hunting for when I found this question was specifications.freedesktop.org/icon-theme-spec/… ; I hope it helps someone else.
5 Answers 5
Globally: /usr/share/icons/ or in your home folder : ~/.local/share/icons
/usr/share/icons/ typically contains pre-installed themes (shared by all users) ~/.icons/ typically contains folders with the themes installed by the user.
Also, many applications have their icons in /usr/share/pixmaps/ or in the folder with the same name as the application under /usr/share/.
I appreciate the mention of /usr/share/pixmaps/ , that’s more generic if you’re copying icons for a specific application.
@ryanpcmcquen Thanks, and yes, the accepted answer is quite limited, especially mentioning non-standard locations while missing standard ones.
@Vadim Are you shure that you did not create ~/.icons/ yourself? I never heard about that folder before.
There are several places: (in bracets some examples)
- /usr/share/pixmaps/ ( chromium-browser.png display-im6.q16.xpm firefox.png flash-player-properties.png gimp.xpm gvim.svg texstudio.xpm )
- /usr/share/app-install/icons/ ( adobeflashplugin.png julia.svg texmaker.png thunderbird.png vim.svg vlc.png wine.svg grace.svg)
- ~/.local/share/icons/ ( soffice.png java-lang-thread.png org-jabref-jabrefmain.png) one of the places where Ubuntu searches for icons, if you use relative path
- /usr/share/icons/. and subfolders ( matlab.png . /hicolor/scalable/apps/chromium-browser.svg . /hicolor/scalable/apps/geany.svg . /hicolor/scalable/apps/okular.svgz . /default.kde4/48×48/apps/acroread.png)
- /usr/share/. just subfolders ( . /vlc/vlc.ico . /gimp/2.0/images/gimp-logo.png ) but this one is more for icons used in the program that the logo of the program
- /snap/. just subfolders ( . /inkscape/3080/meta/gui/inkscape.svg . /languagetool/10/snap/gui/icon.png )
- ~/.icons related to freedesktop.org (source1, source2 )
Most of the folders are already announced here, all sources I used:
As a supplementary for the accepted answer: If you don’t find the ~/.icons directory, there may be a ~/.local/share/icons directory instead (PS: My distro is Ubuntu 16.10).
To add to some of the answers here:
- $HOME/.icons (for backwards compatibility)
- $XDG_DATA_DIRS/icons , which typically just means ~/.local/share/icons .
- /usr/share/pixmaps
So if you want a custom icon, your best bet is to find the icon name in /usr/share/pixmaps , and then create an image with that same file name in ~/.local/share/icons .
You must log in to answer this question.
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.7.12.43529
Ubuntu and the circle of friends logo are trade marks of Canonical Limited and are used under licence.
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Icons (Русский)
Состояние перевода: На этой странице представлен перевод статьи Icons. Дата последней синхронизации: 24 ноября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Проект freedesktop предоставляет спецификацию Icon Theme, которая применяется в большинстве сред рабочего стола Linux и пытается унифицировать внешний вид целого набора значков, группируя их в темы (icon-theme). Freedesktop также предоставляет спецификацию Icon Naming, которая определяет стандартную схему именования значков, которые, как считается, должны быть установлены в любой системе. Тема по умолчанию hicolor должна включать их все.
Установка
Значки и эмблемы
Для добавления своего значка к существующей теме значков можно использовать xdg-icon-resource . Он изменит размер и скопирует значок в $HOME/.local/share/icons/ . С помощью этого метода можно также добавлять пользовательские эмблемы. Примеры:
$ xdg-icon-resource install --size 128 --context emblems archuser-example.png # добавить как эмблему $ xdg-icon-resource install --size 128 archuser-example.png # добавить как обычный значок
Значки для MIME-типов
Файловые менеджеры не полагаются на традиционный MIME-тип, который выводит file —mime . Вместо этого используются определения из /usr/share/mime/ . Если найти значок, соответствующий найденным там определениям, и скопировать его в ~/.local/share/icons/ , то файловые менеджеры станут отображать пользовательский значок для соответствующих MIME-типов. Эта команда иллюстрирует метод создания пользовательского значка для файлов базы данных keepass (.kdb):
$ sed -En 's/(.*)\/(.*)\:.*.kdb.*/\1-\2/p' /usr/share/mime/globs
Переименуйте ваш значок в соответствии с этим выводом:
$ xdg-icon-resource install --size 128 --context mimetypes application-x-keepass2.png
Темы значков
Совет: Рекомендуется установить пакет hicolor-icon-theme , поскольку многие программы будут размещать свои значки в /usr/share/icons/hicolor/ , а большинство других тем будут наследовать значки из темы Hicolor.
Из пакетов
Вручную
Если вы не можете найти пакет с нужной вам темой значков, придётся установить её вручную.
- Сперва найдите и загрузите желаемый набор значков. Много различных тем можно есть на сайтах Opendesktop.org и Xfce-look.org.
- Затем перейдите в каталог, содержащий архив значков, и распакуйте его. Например: tar -xzf ~/Загрузки/icon-pack.tar.gz .
- Переместите распакованный каталог со значками:
- в /usr/share/icons/ (общесистемный) или
- в ~/.icons/ или ~/.local/share/icons/ (пользовательский).
- Чтобы упростить обновление темы значков, можно вместо этого клонировать репозиторий в другое место (например, ~/Загрузки/ ) с помощью git clone репозиторий_темы.git . После этого создайте символическую ссылку на этот каталог в одном из ранее упомянутых путей: ln -sf каталог_темывыбранный_каталог_icons . После этого можно периодически запускать git pull в каталоге темы значков, чтобы обновить её или проверить наличие обновлений. Таким образом, обновлять тему значков будет легко, без необходимости скачивать, извлекать и перемещать темы.
- В качестве альтернативы создайте пакет, взяв за основу PKGBUILD’ы пакетов других тем, ссылки на которые есть в разделе #Из пакетов. Смотрите также VCS package guidelines.
fstab / gvfs
Согласно этому документу, файловые менеджеры, использующие GVFS (например, GNOME Files или Thunar), могут отображать значки для пользовательских мест, например, общих ресурсов NFS. Всё, что вам нужно, это несколько дополнительных опций монтирования в /etc/fstab с именами значков, поддерживаемых выбранной вами темой:
hostname:/ /mnt/ nfs4 defaults,_netdev,user,rw,exec,comment=x-gvfs-show,x-gvfs-name=Network%20Attached%20Storage,x-gvfs-icon=network-server,x-gvfs-symbolic-icon=network-server,timeo=14 0 0