Вопрос или проблема
Есть ли способ проверить наличие синтаксических ошибок в ~/.config/mimeapps.list
?
Ошибки, пох semble, игнорируются без каких-либо сообщений:
- Я добавил
fdsobojaba
в конец файла - Я запустил xdg-open на существующем файле
- В
.xsession-errors
не было ошибки
Как мне проверить mimeapps.list
? Или, в худшем случае, где находится определение формата файла?
Как вы говорите, Спецификация ассоциации между MIME типами и приложениями является соответствующей спецификацией, но она не описывает формат файла в больших деталях. Тем не менее, она ссылается на Спецификацию записи рабочего стола для формата файла; она не совсем явная, но я думаю, что
Значение — это список идентификаторов файлов рабочего стола, разделенный точкой с запятой (как определено в спецификации записи рабочего стола).
упоминание (что касается формата пар ключ-значение) является хорошим показателем.
Существует инструмент валидации для .desktop
файлов, desktop-file-validate
, но его нельзя использовать для списков MIME типов, потому что MIME типы не являются допустимыми ключами файлов .desktop
.
Исследование кода, например, для xdg-open
, показывает, что формат файла очень прост: инструменты ищут ключи в секциях, и они делают это, начиная с верхней части соответствующего файла, ища первое вхождение секции в квадратных скобках, затем первое вхождение ключа, за которым следует знак “=”. Таким образом, по сути, при поиске данного ключа в данной секции будет использоваться первая строка, которая соответствует ключу, и которая также находится в нужной секции.
Это имеет ряд последствий:
- секции могут повторяться
- может присутствовать бессмысленная строка, они будут игнорироваться
- любая строка, не содержащая “=” или квадратных скобок, фактически является комментарием
Спецификация ассоциации между MIME типами и приложениями — это ближнее, что я смог найти для определения синтаксиса файла.
Синтаксис “раздела” действительно очень скуден – например, не упоминаются комментарии.
Ответ или решение
Проверка синтаксиса файла ~/.config/mimeapps.list
может быть достаточно сложной задачей, особенно учитывая отсутствие явного механизма проверки на ошибки и смятение, возникающее из-за игнорирования ошибок в этой конфигурации. Этот файл используется для определения ассоциаций MIME-типов с приложениями и, в частности, управляет поведением таких инструментов, как xdg-open
.
Формат файла mimeapps.list
Файл mimeapps.list
следует спецификации, изложенной в Спецификации ассоциаций между MIME-типами и приложениями. Однако, как и вы заметили, эта спецификация не охватывает в достаточной степени синтаксис и структуру файла.
Формат файла определяется в Спецификации Desktop Entry. Основная структура файла такова:
- Секции: Начинаются с имени секции, заключенного в квадратные скобки, например,
[Default Applications]
. - Ключ—значение: Каждая строка в секции может содержать пару ключ-значение, разделенную знаком равенства (
=
). Например,text/plain=example.desktop
. - Комментарии: Любая строка, не содержащая символа
=
или квадратных скобок, рассматривается как комментарий и игнорируется при обработке.
Несмотря на то, что ошибки могут игнорироваться, важно понимать, что система прочтет только первое вхождение ключа в соответствующей секции. Это означает, что при дублировании ключей в разных секциях будет использовано только первое найденное значение.
Проверка на наличие ошибок
В настоящее время, к сожалению, нет специализированного инструмента для валидации файлов mimeapps.list
, аналогичного desktop-file-validate
для .desktop
файлов. Поэтому лучший подход для проверки на наличие ошибок в mimeapps.list
заключается в ручной проверке структуры файла. Обратите внимание на следующие моменты:
- Структура секций: Убедитесь, что секции начинаются с квадратных скобок и заканчиваются перед следующей секцией.
- Ключи и значения: У каждого ключа должно быть соответствующее значение, а пара должна быть разделена знаком
=
. - Использование символов: Следите за тем, чтобы не использовать специальные символы, которые могут неправильно интерпретироваться.
Рекомендации по отладке
Если вы столкнулись с отсутствием ошибок при использовании xdg-open
, это может быть вызвано несколькими факторами. Проверьте следующие моменты:
- Убедитесь, что MIME-тип, который вы пытаетесь открыть, действительно существует и правильно ассоциирован с вашим приложением в
mimeapps.list
. - Используйте команду для просмотра ошибок, если она доступна, или проверяйте вывод команд, что позволит уловить потенциальные проблемы.
- Убедитесь, что ваш файл не содержит дублирующих значений или неправильно написанных ключей.
Заключение
Проверка синтаксиса файла ~/.config/mimeapps.list
требует внимательности и ручного анализа. Хотя в спецификации не предусмотрено явное описание обработки ошибок, понимание структуры файла, а также соблюдение рекомендаций, описанных в данном ответе, могут помочь избежать проблем в будущем. В случае, если возникнут сложности, рекомендуется обратиться к документации или сообществу для получения дополнительной информации.