A wayland compositor
Added descriptions in help text
Added picture to README
Keyboard repeat now configurable


browse log




This is a basic roadmap and not (yet) a description of the actual project.

Regulus is a dynamic Wayland compositor. It automatically positions and resizes windows based on one of multiple layouts. These layouts include traditional tiling layouts, but also more abstract ones with overlapping windows.

Floating windows are not supported on purpose. In tiling window managers and compositors such as i3 or sway, floating windows usually server the purpose of quickly opening and closing a temporary window without messing with the window layout. Since regulus uses automatic layouts, the user can use as many temporary windows as they like and still easily (even automatically) return all windows to their prior state.

Regulus supports a theoretically infinite number of dynamic workspaces.


These are the things I want to / should add. I will work on these in a mostly random order, whenever I find the time.

  • Damage based output
  • XWayland support (XWayland windows integrate into the window stack, but focussing them crashes the compositor. I feel like I should first work on damage based output support before I approach this again.)
  • Add (dynamic, i3-like) workspaces
  • Panel at the top or bottom, containing a list of all workspaces, a list of all open windows on the current workspaces, a symbol indicating the current layout and user configurable buttons to execute shell commands (buttons can be added via -b command flag)
  • Add a way to customise keybinds
  • Add a way to add commands executed at startup
  • Clipboard support
  • Rewrite layer shell support, so that it is interactive and can be licensed under the GPL
  • Floating layout, where windows can be moved and resized with the mouse
  • Variables such as master size, master amount and x and y placement of windows separat for each layout and workspace
  • Multi monitor support (by default simply mirror the default output)
  • Write a reasonable manpage


With exceptions, this project is licensed under the GPLv3 License.

layer_shell.c is copied and adapted from wio and therefore licensed under a 3-Clause BSD License.

The contents of the lib directory are licensed under a 3-Clause BSD License.


Contributions are welcome! You can send your patches via email. Please respect the coding style, which is basically Allman-style with a few quirks. And please stay in scope: A compositor does not need to read emails or control a robot army. Also please do not add any large dependencies: If your patch needs anything like GTK or Qt, it will be denied, except for when you can offer a very good reason for the inclusion (Spoiler: You can't).

You are strongly invited to add your name to the copyright headers of the files you changed and to the authors section in the man page, if you feel like you made an important contribution. Free Software feels proud of each person that contributes. Whatever the license, a Free Software community will be very happy to add your name to their code base. Because you studied and changed the code. You made it useful. You are a sign of honor.

Also welcome are are your user experiences (what you like as well as what you do not like) and bug reports, but please keep in mind that this project currently pretty immature and does not yet fully resemble what I have planned for it.