StumpWM

by Daniel Pimentel — Fri 08 August 2014

StumpWM is a tiling, keyboard driven X11 Window Manager written entirely in Common Lisp. StumpWM attempts to be customizable yet visually minimal. There are no window decorations, no icons, and no buttons. It does have various hooks to attach your personal customizations, and variables to tweak. With a 100% Common Lisp window manager there's no stopping the hacks. Just re-eval and GO!

Config

emacs ~/.stumpwmrc

;; -*-lisp-*-
;; Daniel Pimentel <d4n1@d4n1.org>
;; ~/.stumpwmrc 

(in-package :stumpwm)

;; startup
(run-shell-command "exec setxkbmap br")
(run-shell-command "feh --bg-scale Desktop/media/picture/wallpaper/wallpaper.jpg")

;; interface
(set-focus-color "Red")
(set-unfocus-color "black")
(set-win-bg-color "black")
(set-fg-color "red")
(set-bg-color "black")
(set-border-color "Red")
(setf *mouse-focus-policy* :click)
(setf *grab-pointer-background* (lookup-color (current-screen) "red"))


;; Keybinds 
(define-key *root-map* (kbd "c") "exec xterm -bg black -fg red -cr red")
(define-key *root-map* (kbd "at") "exec conkeror")
(define-key *root-map* (kbd "Print") "exec scrot")
(define-key *root-map* (kbd "Pause") "exec xlock -mode matrix")

Default Key Bindings

KeyMeaning
C-t dSelect the window with the corresponding digit d
C-t C-dPull the window with the corresponding digit d into the current frame
C-t n | C-t C-n | C-t SpaceGo to the next window in the window list
C-t p | C-t C-pGo to the previous window in the window list
C-t 'Go to a window by name
C-t "Select a window from a list and focus the window.
C-t C-gAbort the current command. This is useful if you accidentally hit C-t
C-t wList all the windows
C-t iDisplay information about the current window.
C-t fSelect a frame by number
C-t sSplit current frame vertically
C-t SSplit current frame horizontally
C-t k | C-t C-kSends a kill message to the current frame and the running program
C-t KKills the current frame and running program; like a kill -9
C-t c | C-t C-cRun an X terminal; by default xterm
C-t e | C-t C-eRun Emacs or raise it if it is already running
C-t tSends a C-t to the frame; this is useful for applications like Icecat which make heavy use of C-t (in Icecat’s case, for opening a new tab). This is similar to how GNU screen uses C-a a
C-t w C-t C-wPrints out a list of the windows, their number, and their name
C-t b | C-t C-bBanish the mouse point to the lower right corner of the screen
C-t a | C-t C-aDisplay the current time and date, much like the Unix command date
C-t C-tSwitch to the last window to have focus in the current frame
C-t !Prompt for a shell command to run via ‘/bin/sh’. All output is discarded
C-t RIf the screen is split into multiple frames, one split will be undone. If there is only one split, the effect will be the same as C-t Q
C-t o C-t TABIf the screen is split into multiple frames, focus shifts to the next frame, where it cycles to the right and then down; analogous to C-x o in Emacs.
C-t FDisplay 'Current Frame' in the frame which has focus
C-t ;Opens the input box. StumpWM commands can be run from here, and the input history moved through
C-t :Opens the input box, but all things typed in here will be sent to the Common Lisp interpreter where they will be ran as Lisp programs; thus, input should be valid Common Lisp
C-t C-h | C-t ?The help
C-t -Hide all frames and show the root window
C-t QRemoves all splits and maximizes the frame with focus
C-t Up | C-t Down | C-t Left | C-t RightShift focus to an adjacent frame in the specified direction. C-t Up will shift focus up, if possible, C-t Down will shift downwards, etc.
C-t vPrints out the version of the running StumpWM
C-t #Toggle the mark on the current window
C-t m | C-t C-mDisplay the last message. Hitting this keybinding again displays the message before that, and so on
C-t l | C-t C-lredisplay the current window and force it to take up the entire frame
C-t GDisplay all groups and windows in each group. For more information see Groups
C-t FnJump to the corresponding group n. C-t F1 jumps to group 1 and so on
C-t g gShow the list of groups
C-t g cCreate a new group
C-t g n | C-t g C-n | C-t g SPC | C-t g C-SPCGo to the next group in the list
C-t g NGo to the next group in the list and bring the current window along
C-t g p | C-t g C-pGo to the previous group in the list
C-t g PGo to the previous group in the list and bring the current window along
C-t g 'Select a group by name or by number
C-t g "Select a group from a list and switch to it
C-t g mMove the current window to the specified group
C-t g kKill the current group. All windows are merged into the next group
C-t g A | C-t g rChange the current group’s name
C-t g dGo to the group with digit d. C-t g 1 jumps to group 1 and so on
C-t +Make frames the same height or width in the current frame’s subtree
C-t h kDescribe the specified key binding
C-t h fDescribe the specified function
C-t h vDescribe the specified variable
C-t h wList all key sequences that are bound to the specified command
C-t h cDescribe the specified command
StumpWM
2000-2016 by Daniel Pimentel under GFDL