Linux

如何為應用程序設置 MIME 優先級?

  • June 17, 2020

ImageMagick 和 GNOME 的 Eye 廣泛支持圖像類型(例如image/jpegimage/png),所以我看到為 EOG 設置優先級的唯一方法是檢查它支持的格式.desktop並將它們列在預設應用程序部分mimeapps.list或維護自定義連結,update-alternatives但某些格式不能被一個應用程序支持,而其他應用程序可以。

也許有一種更簡單的方法來處理多個應用程序支持的“未解析”MIME 類型的應用程序優先級?

這個想法是每個 GUI 應用程序都應該提供一個.desktop文件來描述它將能夠處理的 MIME 類型。

使用xdg-mime query default <MIME type>,您可以找出特定 MIME 類型的目前預設應用程序。.desktop它返回在該應用程序的文件中指定的應用程序 ID 。

您還可以將xdg-mime default <application id> <MIME type...>特定應用程序設置為一種或多種 MIME 類型的預設值。

通過 MIME 類型設置優先級比通過應用程序設置更有意義:例如,圖像瀏覽器可能能夠“打開”一個目錄以生成其中所有圖像的縮略圖視圖,因此它將inode/directory列出一個 MIME 類型它。但是您可能通常不希望該圖像瀏覽器成為您打開通用目錄的主要工具。

某些實用程序可能適用於所有文件,例如可用於通過藍牙發送文件的工具。這樣的實用程序將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(假設桌面文件名包括應用程序 ID),那麼您可以啟動此腳本,name-of-script.sh /usr/share/applications/org.kde.gwenview.desktop它將將該應用程序設置為它可以處理的任何 MIME 類型的預設值,在腳本執行的使用者帳戶。

引用自:https://unix.stackexchange.com/questions/591617