快轉到主要內容

如何修改Linux開啟檔案的預設程式 (XDG MIME Applications)

分類   Linux系統 Linux使用技巧
標籤   Freedesktop Specifications GNOME KDE Plasma
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

Set default applications for opening x file type on Linux desktop using xdg-mime.

有時候同一種類型的程式裝太多,就會在開啟檔案時出現預設程式錯亂的問題。

比如你在Ubuntu KDE的檔案管理器點選MP4,跳出來的應該是「VLC播放器」

若是再裝了MPV播放器、Haruna播放器、神龍播放器等等,新的播放器可能就會建立檔案關聯,覆蓋寫你原有的設定,導致下次點MP4的時候跳出其他影片播放器。

這時你要手動按右鍵設定預設程式,重新指定開啟MP4的程式為VLC。

這些都還好處理,但如果是那些沒有圖形界面能指定的畫面呢?例如在Firefox瀏覽器的下載列表開啟檔案,沒有讓你選擇應用程式的餘地,可能會開到錯誤的檔案管理器,要怎修改呢?

這個時候你就要了解Linux桌面環境是如何確定開啟檔案的預設程式的。不論什麼桌面環境,都是遵照FreeDesktop制定的「XDG MIME」的標準,用於告訴系統,什麼副檔名要用什麼程式開。XDG MIME的設定檔主要存在~/.config/mimeapps.list,該檔案對整個系統的程式都有效。

下面Ivon講解如何調整Linux的預設應用程式。

1. 用圖形界面修改預設開啟程式
#

在圖形界面做的修改通常會寫入到~/.config/mimeapps.list

GNOME
#

開啟系統設定 → 預設應用程式

GNOME圖形界面能調整的預設程式不多,只能指定幾款,其他要手動用xdg-mime指令編輯。

KDE Plasma
#

開啟系統設定 → 應用程式 → 檔案關聯

KDE的調整選項比較細緻,可以詳細針對檔案類型個別設定。

2. 用指令修改預設開啟程式
#

xdg-mime指令用於修改預設程式,而實際告訴桌面環境要執行哪個程式的指令是為xdg-open。部份程式會透過執行xdg-open指令來達到符合桌面環境預設應用程式的效果,而非寫死只執行特定路徑的二進位檔。

  1. xdg-mime使用網際網路媒體類型(MIME)來區分檔案類型,FreeDesktop有維護一份 XML資料庫,定義已知的檔案類型,通常該資料庫會裝在Linux系統的/usr/share/mime/目錄。使用者可以自定義新檔案類型。

  2. 使用xdg-mime指令,確認你的檔案是什麼MIME類型

xdg-mime query filetype  "/home/user/Videos/video.mp4"
  1. 例如我這裡要修改MP4開啟的預設程式,他的MIME類型叫做video/mp4

  2. 列出開啟MP4檔案的預設程式,它列出的應該是Desktop Entry的名稱,而非二進位檔路徑。

xdg-mime query default video/mp4

# 範例輸出:
mpv.desktop
  1. /usr/share/applications尋找你要使用的程式的Desktop Entry名稱,例如VLC是為vlc.desktop
ls /usr/share/applications
  1. 修改開啟MP4的預設程式為VLC
xdg-mime default vlc.desktop video/mp4
  1. 指令所作的修改會寫入到~/.config/mimeapps.list,你可以手動編輯該檔案。

  2. 開啟你的檔案管理員,試試預設程式有無變更吧!

  3. 你也可以用xdg-open指令來開啟檔案,測試預設應用程式的行為是否正確:

xdg-open "/home/user/Videos/video.mp4"

參考資料
#

相關文章

Linux新增程式和資料夾捷徑到桌面的作法 (GNOME & KDE Plasma)
分類   Linux系統 Linux使用技巧
標籤   Freedesktop Specifications GNOME KDE Plasma
Linux如何設定開機自動執行應用程式
分類   Linux系統 Linux使用技巧
標籤   Freedesktop Specifications Ubuntu GNOME KDE Plasma
免重灌系統,Linux安裝多重桌面環境(GNOME、KDE、XFCE、Cinnamon)
分類   Linux系統 Linux使用技巧
標籤   GNOME KDE Plasma

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。