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


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)

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


Спасибо за предложение. У меня еще не было возможности попробовать его полностью (пока что безуспешно), но я награждаю награду, потому что другие предложения не сработали, и у меня не будет возможности поработать над этим раньше щедрость истекает.
— Скотт Северанс

Возможно, вам следует проверить, наследует ли ваша тема значков от 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больше не так ), как описано ранее.


Вы также должны проверить ~/.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».

Выполнено


3
Как я уже отмечал в своем первоначальном вопросе, assogiate не работает.
— Скотт Северанс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.