Как изменить значок для определенного типа файла?

42

Я пытаюсь изменить значок для application/x-hwpфайлов. Я добавил иконки в нужные места и проверил их с помощью assoGiate (после прочтения этой темы ). Это показывает, что мой нужный значок связан с типом файла. Тем не менее, Наутилус все еще показывает старую икону. Как я могу заставить Наутилус показывать правильный значок?

Скотт Северанс
источник
@Rinzwind: Спасибо. К сожалению, эта ссылка решает другую проблему. Он основан на изменении значков отдельных файлов. Я хочу изменить значок по умолчанию для всех файлов данного типа.
Скотт Северанс
Вы используете собственную тему значков? Это может мешать значку, который должен появиться.
РБургундия
Я использую стандартную тему Ambiance. В любом случае, это не должно иметь значения, потому что, насколько мне известно, никакие темы значков не охватывают этот тип файлов. Я просто получаю значок, который появляется по умолчанию, когда Наутилус не знает, какой другой значок отображать. Кроме того, темы значков являются иерархическими, поэтому, если соответствующий значок не может быть найден в текущей теме, будет выполнен поиск в иерархии, что в итоге завершится темой с многоцветным рисунком. Мои иконки установлены в темах ubuntu0mono-dark и hicolor.
Скотт Северанс

Ответы:

22

Вот набор инструкций, которые должны получить пользовательский значок для файлов hwp.

Откройте терминал:

  • Проверьте, существует ли тип MIME: grep 'hwp' /etc/mime.types

    если вы получаете вывод, напоминающий application/x-hwp hwpпропустите следующий шаг.

  • Создайте MIME-тип sudo -H gedit /etc/mime.typesи добавьте строкуapplication/x-hwp hwp

  • Добавьте значок (который должен называться application-x-hwp.svg) :

    sudo cp PathToIcon/application-x-hwp.svg /usr/share/icons/gnome/scalable/mimetypes
    

    (не забудьте заменить PathToIcon)

Получил информацию отсюда

danjjl
источник
Спасибо за предложение. У меня еще не было возможности попробовать его полностью (пока что безуспешно), но я награждаю награду, потому что другие предложения не сработали, и у меня не будет возможности поработать над этим раньше щедрость истекает.
Скотт Северанс
Возможно, вам следует проверить, наследует ли ваша тема значков от gnome (большинство тем значков делают). Вы найдете эту информацию в index.theme, расположенном в каталоге вашего набора иконок
danjjl
Вы также должны проверить ~/.local. Например ~/.local/share, который имитирует папку /usr/local/share. Ваше локально установленное приложение (т.е. приложение только для вас, а не другие логины) может иметь свои свойства там. Редактировать похожие файлы, например,~/.local/share/icons/XXXX/XXXX
Робин Сюй
@danjjl: Что вы имеете в виду (не забудьте заменить PathToIcon)?
JoKalliauer
1
@JoKalliauer в команде для копирования значка /usr/share/... . Я имею в виду PathToIcon. Это должно быть заменено путем к значку на вашем ПК. (если вы думаете, что это может быть сформулировано более четко, не стесняйтесь предлагать редактирование)
danjjl
14

Основная хитрость заключается в том, чтобы правильно узнать, где находятся реальные значки.
Чтобы определить это, давайте проанализируем значки HTML. Соглашение об именах для значков такое же, как и для MIME-типа, /заменяется только на -заглавные буквы и не допускается. Т.е. MIME-тип, скажем, text/x-changelogбудет иметь иконку с именем text-x-changelog.svg(или png). MIME-тип для HTML есть text/html. Таким образом, его значок будет text-html.*Если мы запустим команду

find /usr/share/icons/ -type f | grep 'text-html\.'

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

/usr/share/icons/Humanity/mimes/
/usr/share/icons/gnome/NNxNN/mimetypes/
/usr/share/icons/HighContrast/scalable/mimetypes/

Если мы посетим каждый из них с помощью Nautilus, то увидим, что в этой Humanity/папке находятся наши текущие значки, gnome/некоторые старые. HighContrast/нас не интересует. Таким образом, чтобы изменить какой-либо значок, мы должны заменить иконки, расположенные в Humanity/папке.
Также обратите внимание, что text-html.svgзначки, которые являются масштабируемыми и должны быть помещены в scalableподпапку (что должно быть логичным), вместо этого помещаются в папки для разных размеров, так же, как растровые файлы PNG.

После замены значков (во всех подпапках в соответствии с их размерами) на нужные необходимо обновить кеш значков:

sudo gtk-update-icon-cache /usr/share/icons/Humanity

Вот и все.

Есть еще один способ определить приоритетность схем значков - проверить их index.themeфайлы. Если мы посмотрим внутрь /usr/share/icons/Humanity/index.theme, мы увидим:

Inherits=gnome,hicolor

Это означает , что иконки из gnomeи hicolorпапки будут иметь меньше приоритет , чем те , с Humanity. Это объясняется здесь .
Как ни странно, Наутилус не подчиняется этим правилам наследования. Когда я добавил новый MIME-тип, я попытался размещая свои иконки в /usr/share/icons/gnome/, /usr/share/icons/hicolor, ~/.local/share/icons/hicolor, базы данных значок обновления на каждом шагу - все напрасно. Эти значки правильно отображались assogiateна первой вкладке, но никогда на Наутилусе. Но когда я поместил их в Humanityпапку и обновил базу значков, они появились сразу.

NB Все это относится к теме значков по умолчанию. Если вы используете какую-то собственную тему значков, вы должны проверить, где находятся настоящие значки, и вместо этого добавить / изменить значки. Также в более новых дистрибутивах эти правила наследования могут измениться. Затем вы должны найти новую папку, в которой хранятся реальные значки (если это Humanityбольше не так ), как описано ранее.

whtyger
источник
Вы также должны проверить ~/.local. Например ~/.local/share, который имитирует папку /usr/local/share. Ваше локально установленное приложение (т.е. приложение только для вас, а не другие логины) может иметь свои свойства там. Редактировать похожие файлы, например,~/.local/share/icons/XXXX/XXXX
Робин Сюй
0

Я надеюсь, что вы попытались выйти и войти, чтобы обновить кэш иконок.

Также проверьте, доступен ли ваш значок в правильном размере (тот, который вы используете для отображения типа файла в nautilus).

Вы также можете пропустить бег gtk-update-icon-cache.

Попробуйте этот учебник: http://swik.net/Ubuntu/Only+Ubuntu/How+To+Change+File-Type+(mimetype)+Icons+in+Ubuntu/chcrf

Попробуйте вручную создать icon.theme, вот пример из awn:

[Icon Theme]
Name=awn-theme

Directories=scalable

[scalable]
Size=48
MaxSize=256
Context=Apps
Type=Scalable

Руководство находится здесь: http://live.gnome.org/GnomeArt/Tutorials/IconThemes

Крис Хасиньски
источник
Я установил значок 48x48 и установил Nautilus на 100%, который использует 48x48. Нет кости. Повторная регистрация не имеет значения. Бег не gtk-update-icon-cacheимеет никакого эффекта.
Скотт Северанс
Я обновил свой ответ, это помогло?
Крис Хасиньски
Я не создал тему значков вручную, потому что не хочу новую тему. Я просто хочу, чтобы значок вошел в тему «многоцветный», потому что это основа всех тем иконок. Создание новой темы победит мою цель.
Скотт Северанс
-2

1)

 sudo apt-get install assogiate

следуйте этому хорошему учебнику с красивыми картинками

http://lordamit.blogspot.com/2010/07/change-file-type-icons-mime-type-icons.html


2)

Если тип файла не определен правильно или отображается неверный тип файла, найдите тип файла, определяющий символы

Пример: rar, перейдите на http://filext.com/file-extension/rar.

идентификатор "Hex: 52 61 72 21 1A 07 00, ASCII: Rar!"

откройте файл в bless или любом шестнадцатеричном редакторе и найдите идентификатор и смещение (где начинаются ваши ключевые слова)

в нашем случае это первый бит, поэтому смещение равно «0».

Затем перейдите в «Редактор типов файлов», отредактируйте или создайте новый элемент, затем выберите «Редактировать» в разделе «Содержимое файла».

выберите "строку" из выпадающего списка, введите "Rar!" и установите смещение «0».

Выполнено

sodam
источник
3
Как я уже отмечал в своем первоначальном вопросе, assogiate не работает.
Скотт Северанс