如何通过文件扩展名而不是文件内容格式精确地关联“打开”程序?

如何通过文件扩展名而不是文件内容格式精确地关联“打开”程序?

我使用的系统是 Xubuntu 22.04 LTS。

现在,文件资源管理器 Thunar 确实包含一个选项,您可以右键单击文件并选择(默认)应用程序来打开文件类型。

问题是它并不完全按照确切的文件扩展名(.c 或 .py)执行此操作。它根据文件内容的编码执行此操作(我认为)。

我的意思是什么?

  • 例如,Buttercup(离线密码管理器)将其保管库简单地存储为加密的文本文件。内容是加密的,如果您在文本编辑器中打开它,您会看到乱码文本,但它本质上是一个带有 .bcup 扩展名的文本文件。
  • 之前,我已将带有 .bcup 扩展名的文件的整个“打开方式(默认应用程序)”设置为 Buttercup 应用程序。
  • 接下来,我将扩展名为 .py 的文本文件(Python 源代码)的“打开方式(默认应用程序)”设置为 Sublime Text。
  • 瞧,下次我双击 .bcup 文件时,操作系统不再在 Buttercup 中打开它,而是在 Sublime Text 中打开它。

我该如何避免这种现象?如何让操作系统将“打开方式”应用程序与确切的文件扩展名而不是文件内容格式关联起来?

谢谢。

答案1

Thunar mime 类型可以通过 XML 文件来定义,该文件通过 glob 模式定义文件扩展名。

在文中 Thunar 中的文件类型和扩展名在评论#4中,用户 daggoth 说道:

Secipolla 提供了上述正确信息的重要链接。但除此之外,我们还可以继续创建新的 mimetype。因此,首先,以 root 身份打开终端,并在 /usr/share/mime/packages 文件夹中创建一个新文件 kicad.xml。文件名不必是 kicad.xml,也可以是任何独特的名称,例如 blah.xml。再次说明,我使用的是 geany,但您可以使用自己喜欢的文本编辑器...

cd /usr/share/mime/packages
geany kicad.xml

然后将该新文件中的以下基本 mimetype 定义剪切并粘贴...

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
  <mime-type type="application/x-kicad-module">
      <comment>Kicad Module File</comment>
      <glob weight="60" pattern="*.mod"/>
      <icon name="application-x-kicad-module"/>
  </mime-type>
</mime-info>

基本上,/usr/share/mime/packages 中的 xml 文件包含系统的 mimetype 定义。在这里我们添加了一个新的 mimetype“application/x-kicad-module”。这些文件将使用通用图标“application-x-kicad-module”(如果存在)。但我在这里使用的 mimetype 和图标名称纯粹是猜测,因此请用更合适的选择替换。

但是,*.mod 文件已经有了标准 mimetype - 如上所述的音频文件类型。因此,我在 xml 中添加了“weight=60”项,以便将新 mimetype 的优先级设为 60,高于默认值 50。这样可以确保新 mimetype 优先于现有 mimetype。

好的。保存文件并退出文本编辑器。现在我们需要重建 mimetype 数据库。

cd /usr/share/mime
update-mime-database $PWD

这样就应该可以了。请重新启动系统,然后查看 Thunar 是否检测到新的 mimetype。

相关内容