使用 Deskop Entry 扩展 KDE6 的 Dolphin 右键菜单
Table of contents:
基础 Desktop Entry 文件
用于存放菜单的路径为~/.local/share/kio/servicemenus
和/usr/share/kio/servicemenus
,文件扩展名为.desktop
:
touch ~/.local/share/kio/servicemenus/pdf2png.desktop
向文件中写入以下内容:
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=convertToImage;
[Desktop Action convertToImage]
Name=Convert PDF to Image
Exec=sh -c 'convert -density 300 "%f" "$(basename "%f" .pdf)-%03d.png"'
Icon=applications-graphics
[Desktop Entry]
X-KDE-Submenu=Convert
用于表示二级菜单,添加后可以在Actions
中添加多个Desktop Action
,使用;
分隔X-KDE-RequiredNumberOfUrls
表示支持的选中文件数量,如有多种情况可以使用,
隔开,例如X-KDE-RequiredNumberOfUrls=2,4,6
X-KDE-MinNumberOfUrls
和X-KDE-MaxNumberOfUrls
表示支持的文件数量的最小值和最大值- MimeType:
- 要为目录创建 ServiceMenu,请使用
inode/directory
MimeType。 - 要为所有文件创建 ServiceMenu,请使用
application/octet-stream
MimeType。 - 可以使用通配符,例如
image/*
。 - 这里是一些常见 MimeType
- 要为目录创建 ServiceMenu,请使用
[Desktop Action]
- Exec中
%f
代表右键时选中的单个文件的路径,%F
代表选中的多个文件的路径,%u
代表右键时选中的文件的URI(file://
开头),其他的%变量
请参阅来自FreeDesktop的 The Exec key
关于上面的Exec案例
convert -density 300 "%f" "$(basename "%f" .pdf)-%03d.png"
-
$(basename "%f" .pdf)
:这是一个子命令,用于提取文件名,并去掉扩展名。它会执行以下步骤:basename
命令用于获取文件的基本名称(即去掉路径和扩展名的文件名)。"%f"
表示文件路径或文件名。.pdf
指定去除文件的扩展名.pdf
,所以如果文件名是document.pdf
,则$(basename "%f" .pdf)
会输出document
。
-
-%03d
:这是用于格式化数字的占位符,%03d
表示一个三位数的整数,不足三位会用0
填充。例如,第一张图片的编号会是001
,第二张是002
,以此类推。
综合起来,这个表达式的输出形式会是:文件名-编号.png
。如果输入的 PDF 文件名是 document.pdf
,第一张输出的 PNG 文件会是 document-001.png
,第二张是 document-002.png
,以此类推。