适用于 deepin v20 版本的文件管理器右键菜单扩展格式文档

适用于 deepin v20 版本的文件管理器右键菜单扩展格式文档

dde-file-manager-menu-oem 将会在 v20 后发布的文件管理器中被整合为文件管理器的内建支持,不再需要另外安装单独的包。当前此项目 README 内描述的插件格式文档略微有些过时。在 v20 项目源码公开前,在此附带完整的右键菜单扩展文档,以供开发者参阅。


深度文管上下文菜单扩展

深度文件管理器会识别指定目录下的 .desktop 文件,并将其视为扩展菜单项,加入到文件管理器的上下文菜单中。

OEM 方式

每个定制菜单项为一个独立的 Application 类型的 .desktop 文件(遵循 desktop-entry-spec)。对于每个文件,在其 [Desktop Entry] 下至少需要包含 NameExec 字段,Name 的内容为添加到上下文菜单中时将会显示的名称,Exec 的内容为当单击此新增的菜单项时将会执行的行为(遵循 desktop 文件规范标准,可以使用 %u 等参数)。

定制菜单支持使用 Actions 字段增加指定的子菜单,子菜单需至少包含 NameExec 字段,可以通过 Icon 指定图标。若指定子菜单,则入口项(原本 [Desktop Entry] 下)的 Exec 字段将不再有效。

对于文件管理器菜单项定制,支持额外的字段可供定制,可以使用 X-DFM-MenuTypes 字段来指定菜单项在何种情况会显示,此字段可包含一个或多个类型,其中包括 SingleFile, SingleDir, MultiFileDirsEmptyArea 四种。

名称 含义
SingleFile 在单独的文件上触发上下文菜单
SingleDir 在单独的文件夹/目录上触发上下文菜单
MultiFileDirs 在多个文件/文件夹上触发上下文菜单
EmptyArea 在空白区域触发上下文菜单

可以使用 ; 作为分割填写多个值,但注意,包含 X-DFM-MenuTypes 字段但内容为空的情况和不包含 X-DFM-MenuTypes 字段的情况不同,包含但为空将不会在任何位置显示,不包含将会视为会在任何情况下显示。

MimeType 可以根据被选中的文件类型决定菜单项是否显示被添加的项,支持模糊匹配(如 MimeType=image/*; )。 同 X-DFM-MenuTypes 一样, MimeType 只能用在 [Desktop Entry] 项目中,使用 ; 作为分割填写多个值, MimeType 字段但内容为空的情况和不包含 MimeType 字段的情况不同,包含但为空将不会在任何位置显示,不包含将会视为 MimeType=*;

X-DFM-ExcludeMimeTypes 可以排除特定的文件类型,只能用在 [Desktop Entry] 项目中,使用 ; 作为分割填写多个值,支持模糊匹配。优先于 MimeTypes项过滤文件,即如果 MimeTypesX-DFM-ExcludeMimeTypes同时包含某种文件类型时,该文件类型被选中将无法显示菜单。

X-DFM-NotShowIn 可以决定是否在桌面或者文件管理器显示菜单,此字段可包含一个或多个类型,其中包括 FileManager, Desktop 两种,字段不存在或字段为空时在桌面和文件管理均可显示。

名称 含义
FileManager 在文件管理器中触发上下文菜单
Desktop 在桌面触发上下文菜单

X-DFM-SupportSchemes 可以决定是否在指定的目录scheme下显示菜单,此字段可包含一个或多个类型,其中包括 file, trash, recent, bookmark 等多种,字段不包含时任何位置均可显示菜单,字段内容为空时将不显示菜单。

名称 含义
file 在本地文件上触发上下文菜单
trash 在回收站中触发上下文菜单
recent 在最近文件中触发上下文菜单
bookmark 在书签文件触发上下文菜单

X-DFM-SupportSuffix 可以决定是否根据(全)后缀名过滤显示菜单,如在 test.7z.002 test.7z.003 test.7z.004 等文件上显示压缩菜单,由于分卷文件 MimeTypeapplication/octet-stream 无法通过文件类型显示,特增加通过后缀显示菜单,此情况可以用 7z.* 来支持。

OEM 厂商需要将待添加的 desktop 文件放置到 /usr/share/deepin/dde-file-manager/oem-menuextensions/ 位置,在下次启动文件管理器时[1],选中任意一个或多个文件并触发上下文菜单,将可以看到新增的项目位于其中。

示例 .desktop 文件

可以将下面的示例存储为 test.desktop 并放置到 /usr/share/deepin/dde-file-manager/oem-menuextensions/ 中,关闭现有的所有文件管理器窗口并打开新的文件管理器窗口,定制的菜单将会出现在单独目录或多选文件的情况的上下文菜单中。

示例 1 - 单项菜单

[Desktop Entry]
Type=Application
Exec=/home/wzc/Temp/test.sh %U
Icon=utilities-terminal
Name=示例菜单项名称
X-DFM-MenuTypes=SingleDir;MultiFileDirs;

示例 2 - 包含子菜单

注意这种情况时,由于包含子菜单,故在 [Desktop Entry] 下添加 Exec 不会起任何作用。另外,X-DFM-MenuTypes 只能用在 [Desktop Entry] 项目中,不能用在子菜单中。

[Desktop Entry]
Type=Application
Icon=utilities-terminal
Name=示例菜单项名称
Actions=TestAction;
X-DFM-MenuTypes=SingleDir;MultiFileDirs;

[Desktop Action TestAction]
Name=示例子菜单
Exec=/home/wzc/Temp/test.sh %U

完整示例 - 复制文件路径

  1. 切换到 .desktop 文件所在目录 /usr/share/deepin/dde-file-manager/oem-menuextensions/
sudo mkdir /usr/share/deepin/dde-file-manager
sudo mkdir /usr/share/deepin/dde-file-manager/oem-menuextensions
cd /usr/share/deepin/dde-file-manager/oem-menuextensions
  1. 使用文本编辑器(如 deepin-editorvim )创建一个文本文件(需要root权限保存), 名称可以自定义, 后缀名为.desktop
sudo deepin-editor copyfilepath.desktop
  1. 在文件中加入以下内容, Icon 图标可以去 /usr/share/icons/ 中选择合适的图标。
[Desktop Entry]
Type=Application
Icon=edit-copy
Name=复制文件路径
X-DFM-MenuTypes=SingleFile;
Exec=~/copyfilepath.sh %u
MimeType=text/plain;
X-DFM-NotShowIn=Desktop
X-DFM-ExcludeMimeTypes=application/xml;
  1. 在主目录下创建 copyfilepath.sh 脚本。
cd ~
deepin-editor copyfilepath.sh

在文本中加入以下内容

#!/bin/bash
echo -n $1 | xclip -i -selection clipboard

至此,重新启动文件管理器,文件列表中常规文本文件的右键菜单会多一个菜单项 复制文件路径,点击即可将文件路径复制到剪切板中。


原文:https://github.com/linuxdeepin/dde-file-manager-menu-oem/wiki


  1. 注:这是由于菜单列表仅在文件管理器(桌面)启动时识别并记录一次。在部分平台,深度文件管理器存在加速启动用的进程常驻后台,您可能需要结束所有文件管理器进程。类似的,对于桌面,也需要重启桌面的相应进程才能使桌面使用新增的菜单。 ↩︎


Share Tweet Send
0 Comments
Loading...
You've successfully subscribed to 隔窗听雨
Great! Next, complete checkout for full access to 隔窗听雨
Welcome back! You've successfully signed in
Success! Your account is fully activated, you now have access to all content.
豫ICP备19045256号-1