#+TITLE: Application menu for StumpWM [[./menu-inaction.png]] * Usage #+BEGIN_SRC lisp (load-module "app-menu") #+END_SRC Define =app-menu:*app-menu*= in your =.stumpwmrc=. You can use strings to run shell commands or symbols to run Stumpwm commands (e.g. to popup existing application instead of start new one if applcation is already running). #+BEGIN_SRC lisp (defcommand firefox () () "run firefox" (run-or-raise "firefox" '(:class "Firefox"))) (setq app-menu:*app-menu* '(("INTERNET" ;; submenu ("Firefox" firefox) ; call stumpwm command ("Skype" "skypeforlinux") ; run shell script ) ("WORK" ("OpenOffice.org" "openoffice")) ("GRAPHICS" ("GIMP" "gimp") ("Inkscape" "inkscape")) ("urxvt" urxvt) ("K3B" "k3b"))) #+END_SRC Menus can also be loaded from files: #+BEGIN_SRC lisp # Run (app-menu-load-menu-file #P"file") to load in this file. ("INTERNET" ;; submenu ("Firefox" firefox) ("Skype" "skypeforlinux")) #+END_SRC Add =show-menu= command to your keybindings, e.g.: #+BEGIN_SRC lisp (define-key *top-map* (kbd "M-`") "show-menu") #+END_SRC Navigate the menu with =C-n=, =C-p=, or just start typing to jump to a matching item.