使用 Deskop Entry 扩展 KDE6 的 Dolphin 右键菜单
#Linux #桌面基础 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,6X-KDE-MinNumberOfUrls和X-KDE-MaxNumberOfUrls表示支持的文件数量的最小值和最大值- MimeType:
- 要为目录创建 ServiceMenu,请使用
inode/directoryMimeType。 - 要为所有文件创建 ServiceMenu,请使用
application/octet-streamMimeType。 - 可以使用通配符,例如
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,以此类推。