![为什么“MimeType=text/x-shellscript;”在此 .desktop 文件中不起作用?](https://linux22.com/image/1014691/%E4%B8%BA%E4%BB%80%E4%B9%88%E2%80%9CMimeType%3Dtext%2Fx-shellscript%3B%E2%80%9D%E5%9C%A8%E6%AD%A4%20.desktop%20%E6%96%87%E4%BB%B6%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
操作系统: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/all
或MimeType=text/plain;
服务菜单可用。“使用 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]