在麒麟OS中为Peony添加右键脚本需通过.desktop文件注册:先赋权脚本,再创建~/.local/share/file-manager/actions/下的.desktop文件,指定Name、Exec、MimeTypes等字段,最后killall peony生效;或使用~/.local/share/peony-extensions/menus/路径配合X-Peony-Menu-Provider=true,需注销重登。

在麒麟OS桌面环境中为鼠标右键添加自定义脚本,需让Peony文件管理器识别并加载可执行动作,而不是简单复制脚本到某个目录就生效。系统不会自动扫描任意.sh文件并生成菜单项,必须通过.desktop描述文件注册行为,并明确限定触发条件与执行路径。
用.desktop文件注册脚本动作(推荐)
该方法不依赖编译、不修改系统级配置,所有文件存于用户目录,注销后即生效,适合快速部署单个脚本。
第一步:确保脚本已具备执行权限且路径固定
例如你的脚本位于~/Scripts/backup-now.sh,先运行chmod +x ~/Scripts/backup-now.sh;若脚本内含中文路径或空格,请改用引号包裹%F参数,否则执行时会报错找不到文件。
第二步:创建动作配置目录mkdir -p ~/.local/share/file-manager/actions
第三步:新建.desktop文件nano ~/.local/share/file-manager/actions/一键备份.desktop
第四步:填入标准Desktop Entry格式内容(注意替换Exec和Icon)
[Desktop Entry]
Type=Action
Name=一键备份
Icon=drive-harddisk
Profiles=on-directory;
[X-Action-Profile on-directory]
Exec=/home/$(whoami)/Scripts/backup-now.sh %f
MimeTypes=inode/directory;
【MimeTypes必须与实际使用场景匹配】比如想在文本文件上触发,就写text/plain;想在任意文件上出现,写*/*——但*/*会导致菜单项泛滥,建议按需精确指定类型。
第五步:重启Peony使配置加载killall peony,随后任意打开一个文件夹,在空白处右键即可看到“一键备份”选项。
通过Peony扩展目录部署(兼容V10 SP1)
此方式适用于麒麟V10 SP1及更新版本,利用Peony对peony-extensions/menus路径的自动扫描机制,比actions目录更稳定,尤其适配UKUI 3.0+环境。
创建用户级扩展菜单目录:mkdir -p ~/.local/share/peony-extensions/menus
新建.desktop文件:nano ~/.local/share/peony-extensions/menus/clean-temp.desktop
填入以下内容(以清理临时文件为例):
[Desktop Entry]
Type=Application
Name=清理临时文件
Icon=edit-clear
Exec=bash -c 'rm -rf ~/.cache/temp/* 2>/dev/null && notify-send "清理完成"'
MimeType=inode/directory;
X-Peony-Menu-Provider=true
赋予执行权限:chmod +x ~/.local/share/peony-extensions/menus/clean-temp.desktop
注销当前用户并重新登录——这一步不可跳过,仅killall peony不足以加载peony-extensions/menus下的新项。
调试与验证要点
若右键菜单未出现新条目,请依次检查:
• 执行ls -l ~/.local/share/file-manager/actions/确认.desktop文件存在且非零字节;
• 运行peony --version确认版本不低于4.12(旧版不支持Profiles语法);
• 查看终端输出:peony -d 2>&1 | grep -i action,可捕获加载失败的具体原因,比如MIME类型不匹配或Exec路径不存在。
脚本中若需图形提示,务必使用notify-send而非zenity——后者在无DISPLAY环境时会静默失败。

















