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

93 lines
4.1 KiB
Org Mode
Raw Permalink Normal View History

#+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
2024-09-21 13:27:37 +00:00
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
2024-09-21 13:27:37 +00:00
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-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~.
#+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