nwm: A programmable window manager for X
nwm is a "tiling" window manager for X. It is written in C, but exposes a
Scheme API that can be used to change it's behavior at run-time. For example,
the algorithm for automatically laying out windows is implemented in Scheme
and can be changed at run-time. There is a simple REPL (read, evaluate, print
loop) program included which can be used to "talk" to the window manager in
Scheme while it is running. This project is definitely a work in progress and
I doubt it would be usable for anybody in it's current state.
I like to use tiling window managers, (especially on small screens) I enjoy programming in C and learning how X works. I also like Lisp and thought it would be fun to try using Scheme as an extension language. So yeah... basically just for fun! :)
If you want to try building this project, you will need to first install the following dependencies:
- XCB libraries:
Once you have all the dependencies, run
make in the project directory to
nwm-repl programs. I intend to improve the build
system at some point, but that's currently not a high priority.
Before running the first time, you should set up the default configuration file in your home directory, like this:
cp scheme/init.scm ~/.nwm
Now set the
DISPLAY environment variable (if needed) and then run the
You can run
nwm-repl to get a REPL you can use to execute Scheme code
inside the running window manager.