Command-Line
是否有程序可以啟動可配置的上下文菜單
我正在尋找 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
以及腳本本身。