Penrose FAQs

How do I install Penrose?

You don't: Penrose is a library that you use to write your own window manager. Take a look at the getting started guide for details of how to use Penrose as a library.

Where can I view the Penrose source code?

Penrose is developed openly on GitHub and published to crates.io periodically as new features are added. The develop branch always has the latest code and is what I use for running Penrose on my personal laptop. It is not advised that you pin your use of Penrose to the GitHub develop branch as a typically end user however: breaking changes (and weird and wonderful bugs) are highly likely.

You have been warned!

How does Penrose differ from other tiling window managers?

Penrose is a tiling window manager library rather than a tiling window manager. It provides core logic and traits (interfaces) for writing your own tiling window manager, along with default implementations that can be used out of the box. That said, you can't install Penrose: you need to write your own Rust crate that brings in Penrose as a dependency.

The Penrose repository has several up to date examples of what a typical main.rs ends up looking like and there is a guide on how to go from installing rust to running Penrose as your window manager located here

Does Penrose support Wayland as a back end?

Short answer: no.

Long answer:

Wayland merges the concept of the window manager with the that of the compositor, which results in significantly more work (which I'm not planning on doing given that I'm perfectly happy with X11 as a back end). The internal APIs of Penrose only expect to be managing window positioning and workspaces (as far as X is concerned) so while it may be possibly to add Wayland support, it's not a simple task. It is definitely something that would be interesting to look into in the future but it's not a high priority for me personally as I am perfectly happy running X11 for now.

Where's the eye candy?

Short answer: there isn't any.

Long answer:

Penrose is, first and foremost, designed with simplicity, speed and stability in mind. This means that the default, out of the box offering is pretty minimal. I'm a big fan of the unix philosophy and with that in mind, Penrose largely restricts its core functionality to managing your windows. Decorations and animation are not first class citizens but can be added through extensions and user code if desired.

Are you accepting contributions for open issues?

Short answer: please discuss on the issue in question

Long answer:

Typically issues in the GitHub issue tracker are already being worked on or are blocked for some particular reason that should be clear from the issue. If you would like to work on an open issue that looks to be stalled please add a comment to the issue in question registering your interest.

If you would like to raise a bug report or make a feature request then please open a new issue and get confirmation that the change / approach to the fix is somethat that is likely to be accepted before starting work.

Can I raise a Pull Request adding a shiny new feature?

Short answer: please raise an issue first to discuss what it is you want to add.

Long answer:

No really, please make sure to raise an issue in GitHub before raising a pull request in the repo. I'm very happy to accept contributions for both bug fixes and new functionality but (like most open source maintainers) I do not have time to review pull requests that have had no prior discussion before being raised. If there are any issues with the approach being taken (or breaking changes / conflicts with ongoing work) it can end up with a reasonable amount of back and forth as changes are requested and made.

Put simply, it's a far better experience for me as a maintainer and you as a contributor to get a thumbs up on an approach before spending time on the implementation!

Can you add 'feature X' from this other window manager?

Short answer: probably not as a core feature, but feel free to raise an issue to discuss it.

Long answer:

I started penrose because 1) I like hacking on stuff and it seemed like a fun idea and 2) I was dissatisfied with the feature sets offered by other window managers. Some had everything I wanted, but came with things that I really didn't like, while others felt like they were missing features. penrose has been written to be a base layer that you can build from to write a window manager that works how you want it to: this means that there is a small set of opinionated, core functionality and then a variety of ways to extend this. There are likely a few pieces of functionality that I have missed that can be added to core without disrupting what is already there, but most "missing" features from other window managers are missing on purpose. If you would like to add them as an extension, please see the contribution guidelines above.

One important category of functionality that will not be added to the core of the penrose crate itself is any sort of helper program or additional scripts that aim to wrap penrose and make it look like a stand alone binary.

penrose is (as clearly stated in the README) a library, not a binary.

If writing your own crate and compiling and installing the resulting binary is not something you want to manage and maintain, then penrose is not for you.