Sawfish gerencia seus menus com um programa associado sawfish-menu
. Você pode usar esse programa mesmo se não estiver executando o Sawfish como seu gerenciador de janelas. O protocolo entre o peixe-serra e o menu de peixe-serra não parece estar documentado em nenhum lugar; é inspirado no formato de especificação de menu no próprio 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
imprime 0
se o usuário selecionar "toplevel", etc. Você pode especificar sequências (entre aspas duplas ou até mesmo sem aspas se elas forem identificadores Lisp válidos) em vez de números para as entradas. Se o usuário cancelar (por exemplo, pressionando Esc ), a saída será ()
.
Aqui está um resumo da sintaxe de entrada de sawfish-menu
.
- Comece com
(popup-menu
e termine com)
. - Para uma entrada de menu clicável, use
("TEXT" OUTPUT)
onde TEXT é o texto da entrada e OUTPUT é o que o programa imprime se esta entrada de menu estiver selecionada.- Se houver um sublinhado em TEXT , o próximo caractere será o acelerador dessa entrada.
- Você pode colocar uma marca de verificação na frente de uma entrada no menu, adicionando
(check . t)
, por exemplo,("Foo" 42 (check . t))
. - Você pode colocar um marcador (botão de opção) na frente de uma entrada do menu, adicionando
(group . SOMETHING) (check . t)
. Apenas uma entrada dentro de um determinado grupo pode ter o botão. - Você pode deixar uma entrada em cinza e não selecionável adicionando
(insensitive . t)
.
- Para um submenu, use
("TEXT" ENTRY…)
. - Para um separador, use
()
.
Obviamente, não espere que as pessoas tenham esse utilitário instalado. Normalmente não é empacotado separadamente do Sawfish, mas na verdade não precisa de nada do próprio Sawfish; é um script de repetição, rep sendo o dialeto Lisp no qual o Sawfish (e basicamente nada mais) está escrito. No Debian, você precisa que o pacote rep-gtk
execute sawfish-menu
, além do script em si.