使用 Deskop Entry 扩展 KDE6 的 Dolphin 右键菜单

Posted on Sep 16, 2024

基础 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-MinNumberOfUrlsX-KDE-MaxNumberOfUrls表示支持的文件数量的最小值和最大值
  • MimeType:
    • 要为目录创建 ServiceMenu,请使用 inode/directory MimeType。
    • 要为所有文件创建 ServiceMenu,请使用 application/octet-stream MimeType。
    • 可以使用通配符,例如 image/*
    • 这里是一些常见 MimeType

[Desktop Action]

  • Exec中%f代表右键时选中的单个文件的路径,%F代表选中的多个文件的路径,%u代表右键时选中的文件的URI(file://开头),其他的%变量请参阅来自FreeDesktop的 The Exec key

关于上面的Exec案例

convert -density 300 "%f" "$(basename "%f" .pdf)-%03d.png"
  1. $(basename "%f" .pdf):这是一个子命令,用于提取文件名,并去掉扩展名。它会执行以下步骤:

    • basename 命令用于获取文件的基本名称(即去掉路径和扩展名的文件名)。
    • "%f" 表示文件路径或文件名。
    • .pdf 指定去除文件的扩展名 .pdf,所以如果文件名是 document.pdf,则 $(basename "%f" .pdf) 会输出 document
  2. -%03d:这是用于格式化数字的占位符,%03d 表示一个三位数的整数,不足三位会用0填充。例如,第一张图片的编号会是 001,第二张是 002,以此类推。

综合起来,这个表达式的输出形式会是:文件名-编号.png。如果输入的 PDF 文件名是 document.pdf,第一张输出的 PNG 文件会是 document-001.png,第二张是 document-002.png,以此类推。