Desktop-Environment

如何在 xdg-open / mimeopen 上為未知文件設置預設應用程序?

  • August 16, 2019

在我的 Lubuntu (18.10) 上,xdg-open當文件未與任何應用程序關聯時啟動 VLC Player。

$ xdg-mime query filetype jquery.js
application/javascript
$ xdg-mime query default application/javascript # no output
$ xdg-open jquery.js
Error: no "view" mailcap rules found for type "application/javascript"
Opening "/tmp/jquery.js" with VLC media player  (application/javascript)

在某些文件上,它會啟動 Calibre 的電子書查看器(例如 .rb)。


編輯我深入xdg-open研究並發現它執行以下命令:

  1. xdg-mime query filename "$file"使用and檢查文件類型xdg-mime query default $filetype
  2. run-mailcap --action=view "$file"
  3. mimeopen -L -n "$file"

問題在於mimeopen。

那麼如何更改 mimeopen 以使用 featherpad 或特定應用程序打開任何**未知文件?**換句話說,如果 mimeopen 找不到任何合適的應用程序,我想設置預設的備份應用程序。

mimeopen將未知文件視為text/plainapplication/octet-stream

要設置預設應用程序,請使用選項執行 mimeopen -d。由於我找不到指定 mimetype 的選項,因此您首先需要創建虛擬文件。

touch text.txt # for text/plain
mimeopen -d text.txt # and choose your favorite app

echo -e \\0 > data.dat # for application/octet-stream
mimeopen -d -M data.dat

或編輯“~/.config/mimeapps.list”。

[Default Applications]
text/plain=featherpad.desktop;  
application/octet-stream=firefox.desktop;

mimeopenFile-MimeInfo 一起提供,嘗試查找具有mimytypes 的應用程序。例如,如果文件類型以“text/”開頭,則它的父級為“text/plain”。並且所有文件類型都繼承“application/octet-stream”。

在我的環境中的 mimeopen 上,八位字節流最“合適”的應用程序是 VLC Player,而對於 text/plain,它是 Calibre 的 E-book Viewer。這就是使用這些應用程序打開某些文件的原因。

man xdg-mime那裡有一個選項:xdg-mime default application mimetype(s)設置預設應用程序。您可以使用

xdg-mime default featherpad.desktop application/javascript

作為featherpad.desktop打開文件的預設編輯器,如application/javascript.

或者,您可以在/usr/share/applications/目錄下找到一個文件,例如default.list在我的情況下取決於文件​​管理器gnome-mimeapps.list(我有 gnome DE 和 nautilus FM)。您可以編輯此文件以啟動預設應用程序。

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