Lucien Cartier-Tilet
c02d6690ed
All checks were successful
deploy / build (push) Successful in 5m30s
93 lines
4.1 KiB
Org Mode
93 lines
4.1 KiB
Org Mode
#+title: StumpWM
|
||
#+setupfile: ../headers
|
||
#+property: header-args:emacs-lisp :tangle no :exports results :cache yes :noweb yes
|
||
|
||
[[file:../img/stumpwm.png]]
|
||
|
||
* StumpWM
|
||
** Introduction
|
||
*** What is StumpWM?
|
||
[[https://stumpwm.github.io/][StumpWM]] is a tiling window manager inheriting from [[http://www.nongnu.org/ratpoison/][RatPoison]], written
|
||
entirely in [[https://common-lisp.net/][Common Lisp]] and compiled with [[http://www.sbcl.org/][SBCL]]. While it is not a
|
||
dynamic tiling window manager like [[file:/deprecated/awesome.md][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 [[file:/deprecated/i3.md][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-mode’s 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 config’s documentation, it /*is*/ my configuration.
|
||
- Be my documentation on my StumpWM configuration. That way, I’ll
|
||
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 don’t 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 everything’s 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. Let’s make my code DRY, or as I
|
||
prefer to say, DRYD (/Don’t 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
|
||
isn’t 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 StumpWM’s 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~.
|
||
#+begin_src sh :tangle ~/.xinitrc.stumpwm :shebang "#!/bin/sh"
|
||
# 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
|
||
#+end_src
|