Как установить приоритет MIME для приложений?

Типы изображений (например, image/jpeg, image/pngи т. д.) широко поддерживаются ImageMagick и Eye of GNOME, поэтому я вижу единственный способ установить приоритет для EOG должен проверить поддерживаемые форматы в .desktopи перечислить их в разделе «Приложения по умолчанию» в mimeapps.listили сохранить пользовательскую ссылку с update-alternatives, но некоторые форматы не могут поддерживаться одним приложением и могут поддерживаться другими.

Возможно, существует более простой способ обработки приоритетов приложений для «неразрешенных» типов MIME, поддерживаемых несколькими приложениями?

0
17.06.2020, 09:02
1 ответ

Идея состоит в том, что каждое приложение с графическим интерфейсом должно предоставлять .desktopфайл, описывающий, какие типы MIME оно сможет обрабатывать.

С помощью xdg-mime query default <MIME type>вы можете узнать текущее приложение по умолчанию для определенного типа MIME. Он возвращает идентификатор приложения, указанный в файле .desktopэтого приложения.

А с помощью xdg-mime default <application id> <MIME type...>вы можете установить конкретное приложение по умолчанию для одного или нескольких типов MIME.

Установка приоритета по типу MIME имеет больше смысла, чем установка его по приложению. :Например, браузер изображений может «открыть» каталог для создания эскизов всех изображений в нем, поэтому он будет иметь для него указан тип inode/directoryMIME. Но обычно вы не хотите, чтобы этот браузер изображений становился вашим основным инструментом для открытия общих каталогов.

Некоторые утилиты могут работать со всеми файлами, например инструмент, который можно использовать для отправки файлов по Bluetooth. Для такой утилиты будет указан тип all/allfilesпсевдо -MIME -. Если бы вы могли легко сказать «сделайте этой утилите приоритет для всего, что она может обработать», не проверив, какие эти типы являются первыми, это могло бы иметь катастрофические последствия, если бы они применялись к такой утилите.

Если вы уверены, что все MIME-типы конкретной программы можно сделать первичными, вы можете сделать это с помощью:

#!/bin/sh
APP_ID=$(basename "$1".desktop)
xdg-mime default $APP_ID $(grep ^MimeType "$1" | cut -d = -f 2- | tr ';' ' ')

Например, если файл рабочего стола приложения /usr/share/applications/org.kde.gwenview.desktop(, предполагается, что имя файла рабочего стола включает идентификатор приложения ), тогда вы можете запустить этот сценарий с name-of-script.sh /usr/share/applications/org.kde.gwenview.desktop, и он установит это приложение в качестве приложения по умолчанию. для любых типов MIME, которые он может обрабатывать, в учетной записи пользователя сценарий запускается от имени.

2
18.03.2021, 23:29

Теги

Похожие вопросы