;;; to bind a menu on C-t . ;;; (define-key *root-map* (kbd ".") "mymenu") ;;; the menu command ;;; (define-stumpwm-command "mymenu" () (labels ((pick (options) (let ((selection (stumpwm::select-from-menu (current-screen) options ""))) (cond ((null selection) (throw 'stumpwm::error "Abort.")) ((stringp (second selection)) (second selection)) (t (pick (cdr selection))))))) (let ((choice (pick *app-menu*))) (run-shell-command choice)))) ;;; the menu contents ;;; (defparameter *app-menu* '(("INTERNET" ;; sub menu ("Iceweasel" "iceweasel") ("Icedove" "icedove") ("Conkeror-xr" "xulrunner ~/conkeror-xr/src/xulrunner-build/application.ini") ("Gaim" "gaim")) ("FUN" ;; sub menu ("nethack" "xterm -e nethack") ("option 2" "xlogo") ("GnuChess" "xboard") ("FrozenBubble" "frozen-bubble")) ("WORK" ("OpenOffice.org" "openoffice")) ("GRAPHICS" ("GIMP" "gimp")) ("K3B" "k3b")))