是否有一个程序可以启动可配置的上下文菜单

是否有一个程序可以启动可配置的上下文菜单

我正在寻找类似 Zenity 或 Yad 的东西,但我想要一些行为类似于菜单的东西,即:它在光标旁边打开;只需单击一下即可选择内容;可以有多个级别。

我发现的最接近的东西实际上是 Autokey 的文件夹,但 Autokey 需要始终运行(即使我调用autokey-run),我宁愿避免这种情况。

关键的要求是我能够单击在出现的东西上在我的光标附近

有任何想法吗?

答案1

锯鳐使用配套程序管理其菜单sawfish-menu。即使您没有运行 Sawfish 作为窗口管理器,您也可以使用该程序。 sawfish 和 sawfish-menu 之间的协议似乎没有在任何地方记录;它的灵感来自于菜单规格格式在锯鳐本身。

echo '(popup-menu (("_toplevel" 0) ("_submenu" ("_foo" 1) () ("_bar" 2))))' |
/usr/lib/sawfish/1.5.3/x86_64-pc-linux-gnu/sawfish-menu

sawfish-menu0如果用户选择“toplevel”等,则打印。您可以为条目指定字符串(用双引号括起来,或者甚至不带引号,如果它们是有效的 Lisp 标识符)而不是数字。如果用户中止(例如按Esc),则输出为()

以下是 的输入语法摘要sawfish-menu

  • 以 开始(popup-menu并以 结束)
  • 对于可点击的菜单条目,请使用where("TEXT" OUTPUT)文本是条目的文本,并且输出是选择此菜单项时程序打印的内容。
    • 如果里面有下划线文本,下一个字符是该条目的加速键。
    • (check . t)您可以通过添加例如,在菜单项前面打上复选标记("Foo" 42 (check . t))
    • 您可以通过添加 来将项目符号(单选按钮)放在菜单项前面。给定组中只有一个条目可以具有该按钮。(group . SOMETHING) (check . t)
    • 您可以通过添加 使条目变灰且不可选择(insensitive . t)
  • 对于子菜单,请使用.("TEXT" ENTRY…)
  • 对于分隔符,请使用().

显然,不要指望人们会安装这个实用程序。它通常不会与 Sawfish 分开打包,但实际上它不需要 Sawfish 本身的任何东西;这是一个代表脚本,代表Sawfish(基本上没有其他)是用 Lisp 方言编写的。在 Debian 上,您需要rep-gtk运行软件包sawfish-menu以及脚本本身。

相关内容