Stumpwm is the Emacs of window managers. If you’re using it, you’ll want to put a few thing in your .stumpwmrc.
If you’ve enabled multi-threading, add this code to your .stumpwmrc for interactive control of Stumpwm via Slime:
;; Load swank. ;; *prefix-key* ; swank will kick this off (load "/path/to/slime/swank-loader.lisp") (swank-loader:init) (defcommand swank () () (setf stumpwm:*top-level-error-action* :break) (swank:create-server :port 4005 :style swank:*communication-style* :dont-close t) (echo-string (current-screen) "Starting swank. M-x slime-connect RET RET, then (in-package stumpwm).")) (swank)
Multi-threading is available in SBCL, though not in CLisp. Running Swank (or any other command that doesn’t fork or exit) on a single-threaded StumpWM will hang StumpWM. You’ll be able to move the mouse, but the prefix key won’t react anymore. You’ll have to Ctrl+Alt+Backspace to start a new session. You can still hack using the StumpWM Eval functionality though.
This is an example of how you can use stumpwm commands to call emacs functions.
(defcommand wanderlust () () (emacs) (send-meta-key (current-screen) (kbd "M-x")) (window-send-string "wl") (send-meta-key (current-screen) (kbd "RET")))