为什么“MimeType=text/x-shellscript;”在此 .desktop 文件中不起作用?

为什么“MimeType=text/x-shellscript;”在此 .desktop 文件中不起作用?

操作系统:Kubuntu 18.04

默认文件管理器 dolphin 具有使用服务菜单的功能,有点像 thunar 和 pcmanfm 或 Nautilus Actions 中的自定义操作。

引自这里

用 KDE 的话来说,“服务菜单”是一个特殊条目,它会出现在文件(或目录)的上下文菜单(或其他基于上下文的界面)中,具体取决于所选文件的类型。

有更多信息这里


为了更多地了解此功能,我制作了自己的服务菜单,名为“使用 Kate 打开”,~/.local/share/kservices5/ServiceMenus/open-file.desktop,我想用它来查看和编辑我的〜/箱在 Dolphin 中时的文件夹。

[Desktop Action open-file]
Exec=kate "%U"
Name=Open with Kate
Icon=document-open

[Desktop Entry]
Actions=open-file

#Works
#MimeType=all/all

#Works
MimeType=text/plain;

#Doesn't work
#MimeType=text/x-shellscript;

ServiceTypes=KonqPopupMenu/Plugin
Type=Service
X-KDE-Priority=TopLevel

如果我使用MimeType=all/allMimeType=text/plain;服务菜单可用。“使用 Kate 打开”条目存在且可用:

看到 Kate 公开亮相

但我想知道是否可以通过将 MimeType 更改为更合适的内容来缩小此菜单的all/all范围text/plain

$ file --mime timestamp.sh
timestamp.sh: text/x-shellscript; charset=us-ascii
$

因此,我尝试使用MimeType=text/x-shellscript;,希望当我右键单击纯文本文件或脚本时会出现“使用 Kate 打开”条目,但结果是“使用 Kate 打开”条目消失了:

凯特缺席,开场

x-shellscript至少在一个。桌面我的系统上的文件,vim.桌面(接近 grep 输出的末尾):

$ grep -i shellscript /usr/share/applications/*.desktop
/usr/share/applications/vim.desktop:MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
$

那么为什么MimeType=text/x-shellscript;在“与凯特一起开放”的背景下不起作用呢?

答案1

正如您在vim.desktop文件中找到的,有一个名为的子类型x-shellscript。但是,它的类型不是,text而是application,即application/x-shellscript

尽管“MIME 类型”在 Dolphin 中没有可用的列(与 Thunar 相反),但 MIME 类型会显示在某些对话框中,例如当您右键单击文件并选择“打开方式...”时(在底部的“记住关联...”复选框旁边),以及在属性对话框中选择“文件类型选项”(在最顶部)。

报告不同 MIME 类型的原因file是它使用了不同的数据库。当今大多数流行的桌面环境或多或少都遵循免费桌面网站(以前称为 X Desktop Group,XDG)规范包括桌面条目共享 MIME 数据库。要根据该数据库查找 MIME 类型,您可以使用xdg-mime以下工具xdg-utils

xdg-mime query filetype [file]

相关内容