如何更改以某个扩展名结尾的文件的默认程序

如何更改以某个扩展名结尾的文件的默认程序

在 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

参考:

信用:翁德拉·日日卡(改编)

相关内容