Типы изображений (например, image/jpeg
, image/png
и т. д.) широко поддерживаются ImageMagick и Eye of GNOME, поэтому я вижу единственный способ установить приоритет для EOG должен проверить поддерживаемые форматы в .desktop
и перечислить их в разделе «Приложения по умолчанию» в mimeapps.list
или сохранить пользовательскую ссылку с update-alternatives
, но некоторые форматы не могут поддерживаться одним приложением и могут поддерживаться другими.
Возможно, существует более простой способ обработки приоритетов приложений для «неразрешенных» типов MIME, поддерживаемых несколькими приложениями?
Идея состоит в том, что каждое приложение с графическим интерфейсом должно предоставлять .desktop
файл, описывающий, какие типы MIME оно сможет обрабатывать.
С помощью xdg-mime query default <MIME type>
вы можете узнать текущее приложение по умолчанию для определенного типа MIME. Он возвращает идентификатор приложения, указанный в файле .desktop
этого приложения.
А с помощью xdg-mime default <application id> <MIME type...>
вы можете установить конкретное приложение по умолчанию для одного или нескольких типов MIME.
Установка приоритета по типу MIME имеет больше смысла, чем установка его по приложению. :Например, браузер изображений может «открыть» каталог для создания эскизов всех изображений в нем, поэтому он будет иметь для него указан тип inode/directory
MIME. Но обычно вы не хотите, чтобы этот браузер изображений становился вашим основным инструментом для открытия общих каталогов.
Некоторые утилиты могут работать со всеми файлами, например инструмент, который можно использовать для отправки файлов по 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, которые он может обрабатывать, в учетной записи пользователя сценарий запускается от имени.