Sawfish управляет своими меню с помощью сопутствующей программы sawfish-menu
. Вы можете использовать эту программу, даже если вы не используете Sawfish в качестве оконного менеджера. Протокол между sawfish и sawfish-menu, похоже, нигде не задокументирован; он вдохновлен форматом спецификации меню в самом 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
печатает 0
, если пользователь выбирает «верхний уровень» и т. Д. Вы можете указать строки (в двойных кавычках или даже без кавычек, если они действительные идентификаторы Lisp) вместо номера для записей. Если пользователь прерывает работу (например, нажатием Esc ), то вывод будет ()
.
Вот краткое изложение синтаксиса ввода sawfish-menu
.
(всплывающее меню
и закончите )
. (« ТЕКСТ » ВЫХОД )
, где ТЕКСТ - это текст записи, а ВЫХОД - это то, что программа печатает, если выбран этот пункт меню.
(check. T)
, например ("Фу" 42 (чек. Т))
. (группа. ЧТО-ТО ) (проверьте t)
. Только одна запись в данной группе может иметь кнопку. (нечувствительность. T)
. (« ТЕКСТ » ВХОД …)
. ()
. Очевидно, не стоит ожидать, что люди установят эту утилиту. Обычно он не упаковывается отдельно от Sawfish, но на самом деле ему ничего не нужно от самого Sawfish; это сценарий rep, rep - это диалект Лиспа, на котором написан Sawfish (и в основном ничего больше). В Debian вам нужен пакет rep-gtk
для запуска sawfish -menu
плюс сам скрипт.