确定 Nemo 上下文菜单操作顺序

Posted

技术标签:

【中文标题】确定 Nemo 上下文菜单操作顺序【英文标题】:Determine Nemo context menu actions ordering 【发布时间】:2019-07-30 20:40:52 【问题描述】:

我遇到以下问题/疑问 我在这里寻求帮助/答案。 :) 我正在使用带有 Cinnamon UI 的 Debian 9,到目前为止它运行良好。

我最近开始熟悉尼莫 操作,以便使用我的条目扩展上下文菜单。 虽然这可行,但我不知道如何确定 菜单点的显示顺序。 我尝试了对 .nemo_action 文件使用两位数开头的常用方法(例如 udev 规则等),更改 zhe 操作名称,.... 但是,我无法弄清楚这背后的算法是什么

有人能解释一下吗?

我什至可以接受这样的答案:“你需要在这里修改代码......” 到目前为止,我在互联网上发现的唯一内容: https://forums.linuxmint.com/viewtopic.php?t=178757

提前致谢。

【问题讨论】:

这显然是一个保守的秘密。我根据经验说话,也可以指出这一点:forums.linuxmint.com/viewtopic.php?t=178757 感谢您的回答。实际上,论坛主题(我也找到了,最后一个答案是 3 岁)并没有真正的帮助,因为也只有猜测,没有明确的答案......没有人在 nemo 中找到创建的代码上下文菜单?据我所知,它是开源的,我很确定有一天我会找到该代码,但我希望有人可能已经找到它并可以指出它;) nemo 来源在这里:github.com/linuxmint/nemo。如果您找到相关部分,我会为您投票!但不知何故,我怀疑它在 nemo 来源中。无论如何——祝你好运! 感谢您向我指出来源。在对文件等进行大量搜索之后,我的猜测是在 nemo-action-manager.c set_up_actions() 行 273 中返回了一个未排序的列表(或者至少不能确保按名称排序),导致奇怪的动作列表(顺序交换/不合逻辑/ ...)我想尝试一下,但未能从源代码构建 nemo-master。自述文件/安装在这里没有帮助。现在,看起来 libxapp-dev >= 1.4.0 是唯一剩下和缺少的构建依赖项(在 Ubuntu 下工作,以免弄乱我的 debian PC) 【参考方案1】:

好的,找到了...nemo_action_manager.c,set_up_actions():

file_list = nemo_directory_get_file_list (directory);
// AlexG: List seems to be retrieved unsorted, so let's sort it.
// Then the order of menu items is == alphabetical order of nemo action file names
file_list = g_list_sort(file_list, _cbSortFileList);
[...]

【讨论】:

这行得通吗?您应该将此(在命名的 github 页面上)报告为新的(和想要的)功能。 实际上,它确实有效。我用一些 printf() 输出验证了初始列表是否混乱,并且菜单点的添加顺序与它们在列表中的顺序完全相同。添加我的 sort() 后,我再次验证,列表按顺序排列,菜单项已按预期顺序添加。我将把它作为一个错误报告+修复建议,因为目前的情况并不是真的可用。谁可以使用移动上下文菜单条目?...如果您依赖最常用的点位于 xyz 位置并且它突然在其他地方,那么甚至可能会发生坏事?【参考方案2】:

我获得了一个small bash script mints nemo github,它允许根据名称对 Nemo Actions 进行排序;一经请求。默认顺序是按修改日期。

您可以在下面找到用于对操作进行排序并设置我按字母顺序命名它们的顺序的脚本。

#!/bin/bash
if ! zenity --question --no-wrap --icon-name="folder" --title="Sort Nemo Actions?" --no-wrap --text="Sorting actions will close down all existing nemo instances.\n\nWould you like to proceed?"; then
 exit 1
fi
mkdir -p /tmp/actions/
mv "$HOME"/.local/share/nemo/actions/*.nemo_action /tmp/actions/
ACTIONS=$(find /tmp/actions -iname '*.nemo_action' | sort -n)
for i in $ACTIONS; do
 touch "$i"
done
mv /tmp/actions/*.nemo_action "$HOME"/.local/share/nemo/actions/
nemo -q 
nemo-desktop -q
nemo-desktop & disown

【讨论】:

以上是关于确定 Nemo 上下文菜单操作顺序的主要内容,如果未能解决你的问题,请参考以下文章

Dojo 图表上的上下文菜单操作

相同的上下文菜单以不同的顺序显示 Xcode 12. Swift 5

SwiftUI:contextMenu 菜单

使用 nemo 右键菜单加密 GPG 文件

如何获取 QToolBar / QDockWidget 上下文菜单操作?

从 QGraphicsItem 上的上下文菜单操作中获取事件