在 Ubuntu 18.** 中,如何为具有特定文件扩展名的文件设置默认程序?例如,如果我使用图形界面并对 .txt 文件使用“设置为默认”,它也会更改具有许多其他扩展名的文件的默认设置。我不想这样。如何更改仅针对具有特定扩展名的文件的默认程序?
答案1
此答案改编自翁德拉·日日卡的答案在这里:如何设置默认程序?。如果这对您有帮助,请在那里点赞。
要更改特定文件类型的默认程序,需要为每个文件扩展名创建一个 MIME 类型。这是因为 Ubuntu 会间接跟踪这一点:
- 文件扩展名 -> MIME 类型
- MIME 类型 -> 要打开的应用程序
- 应用程序 -> 兼容 MIME 类型列表
对于 Ubuntu (18.x),适用以下规定:
文件扩展名 -> MIME 类型
这是根据中的文件确定的/usr/share/mime/packages/
。例如:
cat << EOF | sudo tee /usr/share/mime/packages/staruml.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/staruml-project">
<comment>StarUML project</comment>
<glob pattern="*.MDJ"/>
<glob pattern="*.mdj"/>
</mime-type>
</mime-info>
EOF
其他 xml 文件由这些文件生成并放置在 中/usr/share/mime/
。有时这些文件可能在网上找到,尤其是针对 Ubuntu 打包的开源软件。例如,基卡可以在 KiCad 源代码库中找到:https://gitlab.com/kicad/code/kicad/-/tree/master/resources/linux/mime
MIME 类型 -> 要打开的应用程序
这是由~/.config/mimeapps.list
或 可能驱动的~/.local/share/applications/mimeapps.list
。这应该覆盖/usr/share/applications/mimeapps.list
。例如:
echo 'application/staruml=staruml.desktop' | tee -a ~/.local/share/applications/mimeapps.list
或者,为所有用户更改:
echo 'application/staruml=staruml.desktop' | sudo tee -a /usr/share/applications/mimeapps.list
应用程序 -> 兼容 MIME 类型列表
这是由.desktop
中的文件驱动的/usr/share/applications/
。该文件可以包含一个MimeType=
以分号分隔的 MIME 类型列表条目。例如,EOG 应用程序有MimeType=image/bmp;image/gif;image/jpeg;image/jpg;...
。
cat << EOF | sudo tee /usr/share/applications/staruml.desktop
[Desktop Entry]
Name=StarUML
Comment=StarUML
GenericName=StarUML
Exec=/sw/prog/StarUML/StarUML-3.1.0-x86_64.AppImage %U
Icon=/sw/prog/StarUML/staruml.png
Type=Application
StartupNotify=false
Categories=Development;Programming;Modeling;UML
MimeType=application/staruml-project;
EOF
这样就形成了一个完整的圆圈。运行后更改生效
sudo update-mime-database /usr/share/mime
对于图标,
sudo gtk-update-icon-cache /usr/share/icons/gnome -f
或者,您可能需要注销/登录。
然后,可以使用以下命令检查给定文件扩展名的 mimetype mimetype
:
$ mimetype .mdj
.mdj: application/staruml-project
参考:
- 如何设置默认程序?
- https://coderwall.com/p/qjda2q/create-new-mime-type-and-assign-an-icon-to-it-in-ubuntu
- https://help.ubuntu.com/community/AddingMimeTypes
- 如何为文件分配(设置) MIME 类型?
信用:翁德拉·日日卡(改编)