
Я создал и зарегистрировал несколько файлов shared-mime-info для пользовательских типов файлов. Например, в
~/.local/share/mime/packages
Я добавил такие файлы, как
x-myokit.xml
содержащий описание типа MIME, например
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="text/x-myokit">
<comment xml:lang="en">Myokit model definition</comment>
<glob pattern="*.mmt"/>
</mime-type>
</mime-info>
Nautilus теперь распознает мои файлы, но по-прежнему отображает тип файла как "Неизвестный". Как сделать так, чтобы он показывал что-то более полезное в этой колонке?
решение1
Это было жестко запрограммировано в Nautilus
соответствии с решением разработчиковпоказывать только основную информацию о типев Type
столбце по умолчанию, так что сортировка по типу будет группировать семейства типов.
Базовые типы определены вnautilus-файл.cна основе общих (символических) названий иконок 1 :
struct {
const char *icon_name;
const char *display_name;
} mime_type_map[] = {
{ "application-x-executable", N_("Program") },
{ "audio-x-generic", N_("Audio") },
{ "font-x-generic", N_("Font") },
{ "image-x-generic", N_("Image") },
{ "package-x-generic", N_("Archive") },
{ "text-html", N_("Markup") },
{ "text-x-generic", N_("Text") },
{ "text-x-generic-template", N_("Text") },
{ "text-x-script", N_("Program") },
{ "video-x-generic", N_("Video") },
{ "x-office-address-book", N_("Contacts") },
{ "x-office-calendar", N_("Calendar") },
{ "x-office-document", N_("Document") },
{ "x-office-presentation", N_("Presentation") },
{ "x-office-spreadsheet", N_("Spreadsheet") },
};
Типы, которые не попадают в вышеуказанные категории, показаны как Unknown
:
if (basic_type == NULL) {
basic_type = g_strdup (_("Unknown"));
В результате файл с типом MIME application/x-myokit
(с соответствующим символическим именем значка application-x-generic
) будет указан как Unknown
в Type
столбце , а файл с типом MIME text/x-myokit
(с соответствующим символическим именем значка text-x-generic
) будет указан как Text
в Type
столбце (см. также различные системные файлы, такие как *.so
файлы ниже /usr/lib
или *.mo
файлы в /usr/share/locale
— все они указаны как , Unknown
но если вы выберете один из них и нажмете Alt+, Enterвы получите подробную, точную информацию).
Вы можете заставить Nautilus перечислить что-то еще, если используете generic-icon name
в своем xml
файле. Хотя ваши возможности ограничены вышеупомянутыми категориями. Так, например, если вы хотите, чтобы каждый из ваших *.mmt
файлов был перечислен Program
в Type
столбце, вы должны отредактировать его x-myokit.xml
следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/x-myokit">
<comment>Myokit model definition</comment>
<generic-icon name="text-x-script"/>
<glob pattern="*.mmt"/>
</mime-type>
</mime-info>
Не забудьте обновить базу данных MIME с помощью:
update-mime-database ~/.local/share/mime
Если вам нужна более полезная информация, вы можете включить/отметить этот MIME type
столбец в Nautilus
настройках (или с помощью dconf
/ gsettings
: добавить mime_type
в org.gnome.nautilus.list-view default-visible-columns
).
1: запустить gio info -a standard::symbolic-icon file
, чтобы увидеть соответствующие символические имена значков (в старых настройках заменить gio info
на gvfs-info
)
решение2
Я считаю, что Nautilus получает описание файла из местоположения /usr/share/applications
. Вы можете найти больше полезной информации в моем другом ответездесь. Особенно,этотответ в Ask Ubuntu подробно обсуждает, как хранятся ассоциации файлов.
Файловый менеджер (по умолчанию Nautilus) использует тип MIME файла, чтобы определить, с помощью какой программы его открывать. Когда приложение установлено, оно может указать, какие типы MIME оно может открыть, и команду, которую следует использовать для открытия файлов в файле .desktop, который находится в
/usr/share/applications
. Этот файл используется для меню, ярлыков на рабочем столе и т. д.