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
KDE5: обновить или очистить кеш иконок
Решил сделать для одной проги кастомный desktop entry с кастомной же иконкой. Долго мучался, гуглил, через дюжину попыток и перезагрузок иконка заработала.
Понял, что иконка мне не нравится, сделал новую, заменил — по прежнему отображается старая иконка. Удалил вообще кастомные иконки — всё равно старая иконка отображается. Плазму перезапускал, компьютер перезагружал. Ничего не помогает.
Очевидно, что где-то есть кеш, который наверняка можно обновить или очистить. Гугл подсказывает gtk-update-icon-cache. А для kde5 как быть?
PS. desktop entry добавлял с помошью xdg-desktop-menu, иконку — с помощью xdg-icon-resource
Не помогло. Выполнил команду — ничего. Перезагрузился — иконка пропала. Зарегистрировал новую иконку — а появилась опять старая. Выполнил команду ещё раз, ещё раз перезагрузился — всё равно показывается старая иконка.
А что в содержимом icon_name.desktop ? Как ты его оформил? Можешь показать?
Deleted ( 29.10.17 07:27:11 MSK )
Последнее исправление: Deleted 29.10.17 07:28:04 MSK (всего исправлений: 1)[Desktop Entry] Encoding=UTF-8 Type=Application Version=1.0 Name=Visual Studio Code GenericName=Text Editor Comment=Editor for building and debugging modern web and cloud applications Categories=Development;IDE;TextEditor; Icon=vscode Exec=code-oss %F Keywords=vscode; MimeType=text/plain;inode/directory; StartupNotify=true StartupWMClass=code - oss Terminal=false
xdg-desktop-menu install visual-studio-code-oss.desktop
xdg-icon-resource install --novendor --size 16 vscode.16.png vscode xdg-icon-resource install --novendor --size 22 vscode.22.png vscode xdg-icon-resource install --novendor --size 32 vscode.32.png vscode xdg-icon-resource install --novendor --size 48 vscode.32.png vscode xdg-icon-resource install --novendor --size 64 vscode.64.png vscode xdg-icon-resource install --novendor --size 128 vscode.128.png vscode
(Да, я не поленился сделать все размеры)
Поле регистрации десктоп-файла он благополучно появляется в ~/.local/share/applications/, а иконки — в ~/.local/share/icons/hicolor/<16x16|22x22|32x32|48x48|64x64|128x128>.
Ну, а после удаления с помощью xdg-icon-resource uninstall —size 16 vscode — благополучно исчезают.
Как правильно готовить кэш иконок?
После злоключений с цветными эмодзями, выявившими, что ради одного только фонтконфига каждая прога, юзающая оный, при запуске читает кучу мелких файликов из /etc/fonts — решил я покурить strace, дабы узнать, чем там ещё проги мучают диск, что так медленно запускаются. И обнаружил.
ВНЕЗАПНО, есть некий icon-theme.cache, который проги ищут в куче мест и не находят. И из всех установленных тем оказался он только в windows7-icons, которая стоит через репозиторий и посему APT ей кэш сгенерировал. Ну фиг с ними, попробовал сгенерировать руками.
root@localhost:/home/bodqhrohro# gtk-update-icon-cache --include-image-data -f /usr/share/icons/buff-nipuna/ gtk-update-icon-cache: The generated cache was invalid.
И что тебе, свинья-скотина, не нравится? Мало того, сгенерировало оно дотфайл, а проги ищут не дотфайл. Переместил. Но проги битый кэш читать не хотять, и лезуть всё равно за файлами.
openat(AT_FDCWD, "/usr/share/icons/buff-nipuna/icon-theme.cache", O_RDONLY) = 13 fstat(13, ) = 0 close(13) = 0 open("/usr/share/icons/buff-nipuna/empathy/16x16/actions", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 13 fstat(13, ) = 0 getdents(13, /* 3 entries */, 32768) = 88 getdents(13, /* 0 entries */, 32768) = 0 close(13) = 0
И шо с ним делать? Нашёл пару вопросов на SO, там ничего конкретного, сбои из-за пробелов и собачек в имени и тому подобной бяки. Эт мне чё, всю тему перелопачивать и чинить, чтоб валидный кэш сгенерировался? Или он по другой причине игнорируется?
отказаться от иконок (прошлый век)
ЭЭ и да, свиньи тоже человеки!
А что это за тема — buff-nipuna? В ней есть index.theme?
Что за индусская тема? С каких помоек ты подбираешь подобный треш? Сиди на дефолте, и будет тебе счастье.
Наоборот, это текст — прошлый, век, щяс всё перекатывается в графику, а там и до прямого обмена мыслями недалеко. Это у линуксоидов ретротяга к тексту, ну прям как в XKCD про IRC.
С каких помоек ты подбираешь подобный треш?
Не помню, на гномлуке, кажись. Еле откопал среди тонн флэт-дерьма.
Сиди на дефолте, и будет тебе счастье
Щяс ещё дефолтобыдло будет меня учить. Альзо, если ты промоешь анонимные глаза анонимною мочою, да перечитаешь ОП, то узришь, что кэша нигде, кроме васянской же темы, нету — в т. ч. в дефолтных Tango, HiColor, Gnome и кто там ещё.
У меня во всех темах есть кэш:
$ find /usr/share/icons/ -name "*.cache" /usr/share/icons/Faience-Azur/icon-theme.cache /usr/share/icons/hicolor/icon-theme.cache /usr/share/icons/gnome/icon-theme.cache /usr/share/icons/Adwaita/icon-theme.cache /usr/share/icons/Faience-Claire/icon-theme.cache /usr/share/icons/Faience-Ocre/icon-theme.cache /usr/share/icons/oxygen/icon-theme.cache /usr/share/icons/Faience/icon-theme.cache /usr/share/icons/HighContrast/icon-theme.cache
gtk-update-icon-cache /usr/share/icons/buff-nipuna
Однако, таки да, я дотфайл искал только.
ls -l /usr/share/iconls -l /usr/share/icons/*/*.cache -rw-r--r-- 1 root root 105900 Фев 2 01:08 /usr/share/icons/Adwaita/icon-theme.cache -rw-r--r-- 1 root root 181624 Сен 14 03:24 /usr/share/icons/breeze-dark/icon-theme.cache -rw-r--r-- 1 root root 186356 Сен 14 03:24 /usr/share/icons/breeze/icon-theme.cache lrwxrwxrwx 1 root root 36 Фев 9 17:00 /usr/share/icons/buff-nipuna/icon-theme.cache -> /media/d/temp/cache/icon-theme.cache -rw-r--r-- 1 root root 113244 Фев 8 16:12 /usr/share/icons/gnome/icon-theme.cache -rw-r--r-- 1 root root 40564 Фев 8 19:50 /usr/share/icons/hicolor/icon-theme.cache -rw-r--r-- 1 root root 49904 Дек 30 20:43 /usr/share/icons/HighContrast/icon-theme.cache -rw-r--r-- 1 root root 128996 Авг 11 2017 /usr/share/icons/mate/icon-theme.cache -rw-r--r-- 1 root root 8164 Авг 11 2017 /usr/share/icons/menta/icon-theme.cache -rw-r--r-- 1 root root 143528 Сен 15 13:25 /usr/share/icons/oxygen/icon-theme.cache -rw-r--r-- 1 root root 66860 Июл 20 2017 /usr/share/icons/Tango/icon-theme.cache bq:18:39:54:/tmp/dl$ ls -l /usr/share/icons/*/.*.cache -rw-r--r-- 1 root root 312130396 Фев 10 18:37 /usr/share/icons/buff-nipuna/.icon-theme.cache -rw-r--r-- 1 root root 55686580 Сен 26 2013 /usr/share/icons/windows7-icons/.icon-theme.cache
Но с индекса без иконок толку мало же, файлы всё равно подгружаются с диска поштучно, а не висят общим ммапнутым файлом на все приложения.
Я понил, дотфайлом лежит битый, а после успешной генерации кэш перемещается в недотфайл.
Как изменить значок меню «Показать приложения» в Ubuntu 20.04/21.04
Для тех, кому скучно с кнопкой «Показать приложения», которая находится по умолчанию в левой панели Ubuntu, я покажу вам, как заменить ее на нужный вам значок без установки новой темы значков.
В Ubuntu Gnome Shell кнопка «Показать приложения» в нижнем левом углу опирается на файл значка view-app-grid-symbolic.svg, расположенного по адресу /usr/share/icons/Yaru/scalable/actions/. Заменив файл значка, вы получите новый значок «Показать приложения» в доке.
Как изменить значок меню в Ubuntu
1. Откройте терминал с помощью сочетания клавиш Ctrl + Alt + T, или из меню приложения.
2. Вставьте следующую команду и нажмите Enter, чтобы создать резервную копию исходного файла значка:
sudo cp -p /usr/share/icons/Yaru/scalable/actions/view-app-grid-symbolic.svg /usr/share/icons/Yaru/scalable/actions/view-app-grid-symbolic.svg.bak
Введите пароль пользователя (без звездочек), и нажмите Enter.
3. Подготовьте нужный .svg файл значка. В моем случае это просто кружок, который я нашел в интернете, и скачал его в папку «Загрузки».
4. Скопируйте ваш .svg файл в исходное местоположение:
sudo cp /скачанный/файл/svg /usr/share/icons/Yaru/scalable/actions/view-app-grid-symbolic.svg
В моем случае команда выглядит так:
sudo cp ~ /Загрузки/view-app-grid-symbolic.svg /usr/share/icons/Yaru/scalable/actions/view-app-grid-symbolic.svg
5. Наконец, запустите команду, чтобы обновить кэш иконок:
cd /usr/share/icons && sudo gtk-update-icon-cache Yaru
Можете также нажать комбинацию клавиш «Alt+F2» и в открывшемся окне ввести «r«. Или просто выйдите из системы и войдите обратно, чтобы применить изменения.
Если у вас другая тема иконок, то вы должны найти в вашей теме соответствующее изображение. Например, я использую тему иконок «Reversal-blue», которую я установил из gnome-look, поэтому в моем случае команда будет выглядеть следующим образом
sudo cp ~/Загрузки/view-app-grid-symbolic.svg ~/.local/share/icons/Revesal-blue/actions/symbolic/
Как восстановить:
Сделав резервную копию на шаге 2, просто скопируйте файл обратно с помощью команды:
sudo cp -p /usr/share/icons/Yaru/scalable/actions/view-app-grid-symbolic.svg.bak /usr/share/icons/Yaru/scalable/actions/view-app-grid-symbolic.svg
И обновите кеш иконок, или выйдите и обратно войдите в систему.
Вывод
Операционные системы на базе Linux, очень легко можно изменить под свой вкус, и это круто. Но с другой стороны, новичков отпугивает то, что нужно постоянно вводить какие-то команды в жутком терминале.
Как вы считаете — это плюс что можно изменять внешний вид ОС, или же это минус, и лучше было бы пользоваться ОС такой, какой ее придумали разработчики?