config.phundrak.com/docs/stumpwm/index.org

4.1 KiB
Raw Blame History

StumpWM

/phundrak/config.phundrak.com/media/commit/92459846c3878c8edd7023a1cb1ebc9b972447b1/docs/img/stumpwm.png

StumpWM

Introduction

What is StumpWM?

StumpWM is a tiling window manager inheriting from RatPoison, written entirely in Common Lisp and compiled with SBCL. While it is not a dynamic tiling window manager like Awesome is, its ability of managing windows in frames and using keychords with keymaps like Emacs does is a huge plus for me, not to mention the fact its configuration file is written in Common Lisp, a general programming language, a bit like Awesome. This makes it an i3 on steroids, sort of. It also uses a lot of Emacs concepts, which is great for an Emacs user such as myself.

Why not EXWM then?

Sometimes, some actions within Emacs are blocking actions, making the computer not usable while the command runs. It also does not play nice with video games (pun intended), which is also a negative point for me. And I also find EXWM more confusing overall than StumpWM.

What this file is for

This file has two main goals:

  • This will be the actual source code of my StumpWM configuration, thanks to Emacs org-mode, and thanks to org-modes literate config capabilities. Almost all the visible source blocks if not all will be included in my configuration files through tangling, which can be done in Emacs when this file is opened through M-x org-babel-tangle, which will write my configuration files based on the source blocks present in this document. This file is not only my configs documentation, it is my configuration.
  • Be my documentation on my StumpWM configuration. That way, Ill never forget which block of code does what. And maybe, hopefully, someone could learn a thing or two if they want to get into StumpWM but dont know where to begin. You should be able to read this document as a book, with each chapter dedicated to a different aspect of StumpWM.

Organization of my files

While I could make this file write everything to the same file (the actual source will be in a single file after all), I find it easier to debug StumpWM if everythings split up. For now, my configuration follows this architecture:

init.el
My main configuration file, glues everything together. It loads all of my configuration files as well as some modules I find useful;
colors.lisp
This file defines colours that will be used in my theme.lisp and modeline.lisp files. Lets make my code DRY, or as I prefer to say, DRYD (Dont Repeat Yourself Dummy).
commands.lisp
Lisp commands, in case I want to bind some complicated actions to a keybind that is not just a simple shell command;
keybindings.lisp
My list of keymaps and keybinds which make StumpWM actually usable;
modeline.lisp
This defines the modeline, a concept taken from Emacs which can display various information such as a list of workspaces, including the current one;
placement.lisp
This file manages my workspaces and the default placement of various windows;
utilities.lisp
Here you can find my StumpWM configuration that isnt really related to the rest of the config, for instance utility code for connecting by SSH to some host.
theme.lisp
manages the colour theme of StumpWM, the default placement of some windows and StumpWMs gaps.

You will also find below my xinit file for StumpWM, exported to $HOME/.xinitrc.stumpwm, which I use to start Stump through startx ~/.xinitrc.stumpwm.

# this makes it work in Ubuntu
xhost +SI:localuser:$USER

# Set fallback pointer
xsetroot -cursor_name left_ptr

# Fix scrolling on some GTK3 applications
export GDK_CORE_DEVICE_EVENTS=1

# in case Java applications display /nothing/
# wmname LG3D
# export _JAVA_AWT_WM_NONREPARENTING=1

autorandr -l home

exec stumpwm