Introduction

Welcome to Penrose: a modular tiling window manager library for X11 written in Rust.

Unlike most other tiling window managers, Penrose is not a binary that you install on your system. Instead, you use it like a normal dependency in your own crate for writing your own window manager. Don't worry, the top level API is well documented and a lot of things will work out of the box, and if you fancy digging deeper you'll find lots of opportunities to customise things to your liking.

If you are new to Rust it is worthwhile taking a look at the learning materials provided by the Rust project to get up to speed on how the language works. (The rest of this book assumes you are somewhat familiar with the language).

The rest of this book covers the concepts and implementation of Penrose at a level of detail that should allow you to implement your own extensions and custom functionality on top of the base library. If you just want to skip ahead to a working, minimal window manager then take a look at the Quickstart section of this book or the examples directory of the GitHub repo. (My personal config is also available to take a look at if you want to see what something a bit more involved looks like!)

As with all crates on crates.io, the crate level documentation is also available on docs.rs.

Happy window managing!