快轉到主要內容

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

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

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

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

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

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

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

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

這個時候你就要了解Linux桌面環境是如何確定開啟檔案的預設程式的。不論什麼桌面環境,都是遵照FreeDesktop制定的「XDG MIME」的標準,用於告訴系統,什麼副檔名要用什麼程式開。它亦能夠設定要用哪個程式開啟特定的一組URL。

XDG MIME的設定檔主要存在~/.config/mimeapps.list,該檔案對整個Linux系統的程式都有效。甚至連透過Wine執行的exe都能吃到XDG MIME所設定的預設應用程式。

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

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

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

GNOME
#

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

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

KDE Plasma
#

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

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

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

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

一個程式可以開啟什麼格式的檔案,通常是透過Desktop Entry的MimeType值定義的,參見Desktop Entry解說

  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/~/.local/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指令是讓應用程式開啟使用者定義的預設應用程式的方法。這讓開發者不需要寫死應用程式路徑,而是能讓使用者自由選擇要用哪個程式開啟檔案或者URL。

比如從Chrome瀏覽器網頁開啟Spotfiy的連結,要跳轉到應用程式商店,就會出現「要開啟xdg-open嗎?」的提示。

你可以用xdg-open指令來開啟檔案,測試預設應用程式的行為是否正確。例如我這裡開啟一個.mp4檔案,它應該會讀取使用者的XDG MIME設定,然後開啟VLC播放。

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

如果沒有xdg-open,你就得明確指定用vlc指令開啟.mp4,才會用VLC播放了!

vlc "/home/user/Videos/video.mp4"

參考資料
#

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

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