penrose
is a library for configuring your own X11 window manager in Rust. It
uses a workspace model (as opposed to tags) and is built on top of the XCB API.
The project is very much a work in progress as I try to set up my ideal, minimal
window manager for daily use. penrose
is now feature complete enough and
stable enough to use as your primary Window Manager, so long as you don't mind a
few rough edges! I am aiming for the code to be well documented and easy to
extend. For now, this is my primary hobby project so updates are frequent: I try
to keep crates.io up to date but please check the git repo for latest changes.
While the project is still in its early stages, please expect there to be multiple breaking changes as the public API stabilises. The example config file will always be kept up to date so please refer to that for updating to newer versions published to cargo.
If you don't mind a bare bones (really bare bones) window manager then you can
take penrose for a spin using the config in the examples
directory. You will
need to update the keybindings to launch your preferred terminal emulator and
program launcher and may want to adjust the floating window classes to handle
some additional programs.
side_stack
, bottom_stack
and paper
implemented)A config file
IPC / relying on external programs
See the TODO file in the root of the repo for next steps and ongoing work. I'm trying to keep it mostly up to date but the docs/TODOs and the codebase may diverge at points when I forget to update things. If in doubt, read the source.