AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 564816
Accepted
MountainX
MountainX
Asked: 2020-01-30 15:03:57 +0800 CST2020-01-30 15:03:57 +0800 CST 2020-01-30 15:03:57 +0800 CST

如何使用 CLI 工具在我的 Linux 系统上安装新的(自定义)mime 类型?

  • 772

我想知道在我的系统上创建和注册新的自定义mime 类型的完整步骤。如果重要的话,我在 Arch Linux 上运行 KDE。

这些步骤应包括编写 XML 文件并将图标与文件类型相关联以及我需要做的任何其他事情。我更喜欢只使用xdg-mime命令行实用程序。

我希望了解为 1)我的用户帐户以及 2)系统范围添加此 mime 关联。

例如,假设我想使用自定义应用程序打开证书文件,我将调用 MyCertInspector。我相信 XML 应该看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
  <mime-type type="text/publickey">
    <glob-deleteall/>
    <glob pattern="*.crt"/>
    <glob pattern="*.cert"/>
  </mime-type>
</mime-info>

据我了解,当包含glob-deleteall在用户本地定义中时,它会删除任何现有的系统范围的 mime 关联。我想确认我的理解是正确的。

我还了解到,此过程的第一步是检查是否存在具有我计划使用的文件扩展名的 mime 类型。我不确定如何在 Arch 上执行此操作,因为 Arch 上没有/usr/share/applications/defaults.list并且(至少在我的系统上)没有系统范围的mimeapps.list文件。

对于答案,我希望有一个分步指南,涵盖每个需要的步骤,并提到 Arch Linux 系统上应该放置的特定目录。

从我目前的研究来看,我相信一般步骤是:

  1. 检查是否存在具有我计划使用的文件扩展名的 mime 类型
  2. 为我想要的 mime 类型创建一个 XML 文件。
  3. 使用注册我的 XML 文件sudo xdg-mime install [options](我们应该同时处理系统模式和本地用户模式。
  4. 将新的 mime 类型与用于打开它的应用程序相关联。
  5. 注册 mime 类型的图标。
  6. 其他任何事情(例如一个人应该做的检查和验证步骤)

我的目标是,任何阅读此问题答案的人都将能够掌握在他们的系统上创建和安装自定义 mime 类型的所有完整过程。

mime-types
  • 1 1 个回答
  • 3408 Views

1 个回答

  • Voted
  1. Best Answer
    Munzir Taha
    2020-01-31T01:39:24+08:002020-01-31T01:39:24+08:00

    我将首先引用示例部分man xdg-mime

    EXAMPLES
               xdg-mime install shinythings-shiny.xml
    
           Adds a file type description for "shiny"-files. "shinythings-" is used as the vendor prefix. The file type description could look as follows.
    
               shinythings-shiny.xml:
    
               <?xml version="1.0"?>
               <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
                 <mime-type type="text/x-shiny">
                   <comment>Shiny new file type</comment>
                   <glob pattern="*.shiny"/>
                   <glob pattern="*.shi"/>
                 </mime-type>
               </mime-info>
    
           An icon for this new file type must also be installed, for example with:
    
               xdg-icon-resource install --context mimetypes --size 64 shiny-file-icon.png text-x-shiny
    

    我希望了解为 1)我的用户帐户以及 2)系统范围添加此 mime 关联。

    来自同一man页面

    xdg-mime install [--mode mode] [--novendor] mimetypes-file
    --mode mode
    
    mode can be user or system. In user mode the file is (un)installed for the current user only. In system mode the file is (un)installed for all users on the system. Usually only root is allowed to install in system mode.
    The default is to use system mode when called by root and to use user mode when called by a non-root user.
    

    在用户本地定义中包含 glob-deleteall 时,它会删除任何现有的系统范围的 mime 关联

    是的,glob-deleteall 用于覆盖 mimetype 定义的 glob 部分,但不仅限于系统范围。两者都取决于模式

    提到了 Arch Linux 系统上东西应该位于的特定目录

    系统模式将安装到/usr/share/mime/. 用户模式和.local/share/mime文件列表是:

    ./.local/share/mime/generic-icons
    ./.local/share/mime/mime.cache
    ./.local/share/mime/types
    ./.local/share/mime/text
    ./.local/share/mime/text/x-shiny.xml
    ./.local/share/mime/version
    ./.local/share/mime/treemagic
    ./.local/share/mime/globs
    ./.local/share/mime/globs2
    ./.local/share/mime/aliases
    ./.local/share/mime/subclasses
    ./.local/share/mime/magic
    ./.local/share/mime/icons
    ./.local/share/mime/XMLnamespaces
    ./.local/share/mime/packages/shinythings-shiny.xml
    

    毕竟跑

    update-mime-database ~/.local/share/mime/
    

    激活配置。

    • 7

相关问题

  • XDG_DATA_DIRS 包含重复路径;怎么修?

  • 在 KDE 中更新 mime 类型关联的过程是什么?

  • mime 设置的配置文件

  • 如何将午夜指挥官设置为默认文件管理器?

  • 单击 MIME 类型执行脚本以打开文件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve