Command-Line

是否有程序可以啟動可配置的上下文菜單

  • March 19, 2016

我正在尋找 Zenity 或 Yad 之類的東西,但我想要一些像菜單一樣的東西,即:它在游標旁邊打開;一鍵選擇事物;可以有多個級別。

我發現的最接近的東西實際上是 Autokey 的文件夾,但 Autokey 需要始終執行(即使我呼叫autokey-run),我寧願避免這種情況。

關鍵要求是我能夠點擊出現**在游標附近的東西。

有任何想法嗎?

Sawfish使用配套程序管理其菜單sawfish-menu。即使您沒有將 Sawfish 作為視窗管理器執行,也可以使用該程序。鋸魚和鋸魚菜單之間的協議似乎沒有記錄在任何地方。它的靈感來自 Sawfish 本身的菜單規範格式

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

sawfish-menu如果使用者選擇“toplevel”等,則列印0。您可以指定字元串(在雙引號中,如果它們是有效的 Lisp 標識符,甚至不帶引號)而不是條目的數字。如果使用者中止(例如通過按Esc),則輸出為()

以下是輸入語法的摘要sawfish-menu

  • 以 開頭(popup-menu和結尾)
  • 對於可點擊的菜單條目,使用其中TEXT是條目的文本,而OUTPUT是選擇此菜單條目時程序列印的內容。

("*TEXT*" *OUTPUT*)

  • 如果TEXT中有下劃線,則下一個字元是該條目的加速鍵。
  • 您可以在菜單項前添加複選標記(check . t),例如("Foo" 42 (check . t))
  • 您可以通過添加在菜單條目前面放置一個項目符號(單選按鈕)。給定組中只有一個條目可以擁有該按鈕。(group . *SOMETHING*) (check . t)
  • 您可以通過添加 使條目灰顯且不可選擇(insensitive . t)
  • 對於子菜單,使用.("*TEXT*" *ENTRY*…)
  • 對於分隔符,使用().

顯然,不要期望人們安裝此實用程序。它通常不與 Sawfish 分開包裝,但它實際上並不需要 Sawfish 本身提供的任何東西;它是一個 rep 腳本,rep是 Sawfish(基本上沒有其他內容)所用的 Lisp 方言。在 Debian 上,您需要rep-gtk執行包sawfish-menu以及腳本本身。

引用自:https://unix.stackexchange.com/questions/270782