No Description

Leon Plickat b323436fe7 Updated TODO 1 week ago
doc adf94b1f8f Made the stack layout usable 1 week ago
lib 4ef3403e7b Initial push 3 weeks ago
src adf94b1f8f Made the stack layout usable 1 week ago
.gitignore fdeed35ea6 Added gitignore 3 weeks ago
Makefile 585c60ccda Removed unneeded dependencies: Glib, Cairo 2 weeks ago
README.md b323436fe7 Updated TODO 1 week ago
regulus.conf eebaace0c0 Updated default configuration file 2 weeks ago
regulus.desktop af6a15bbc1 Added stack layout. 2 weeks ago

README.md

Regulus

Regulus is a Wayland compositor build with the wlroots library.

Description

Windows are automatically placed and resized so that they use the maximal available space and do not overlap. There are configurable gaps between the windows and also on the screen edges.

Regulus provides all windows with a simple border and a shadow effect. The sizes of the border and of the shadow are configurable. All server side window decorations, meaning borders and shadows, can be turned off.

Regulus is mainly controlled by keybinds. These keybinds are always an alphanumerical key pressed in addition to the modifier. The modifier is either the Super key or the Menu key. All keybinds are explained in the man page.

Regulus supports the XDG-Shell and the Layer-Shell.

Window stack and layout

Windows are internally stored in a linear stack. There are three layouts available, the default tiling layout, the grid layout and the stack layout.

The tiled layout displays the window stacks with two stacks on screen. The left stack is the master stack, which contains a live configurable amount of windows. The right stack contains all other windows. The relative size of the master stack is also live configurable.

The grid layout displays the window stack in a grid. The amount of columns and rows are automatically calculated.

The stack layout displays a horizontal master stack in the middle of the screen, with the vertical stack contains the rest of the windows underneath the master stack.

Inspirations

This project is inspired in form, function and code by other projects, mainly antares, dwm, wio and cage.

Licensing

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.

TODO

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

  • Use libguile to (re-)implement configuration, keybind handling and layouts as scheme script
  • XWayland support (XWayland windows integrate into the window stack, but are not rendered yet and also currently are not focusable. This will change with the implementation of Damage.)
  • Damage
  • Clipboard support
  • Configuration via environment variables ?
  • Workspaces
  • Being able to click on (and possibly focus) layer shell windows
  • Some sort of help-window when pressing Modifier-F1
  • More useful layouts
  • Multi monitor support
  • Command flags
  • Configuration file

Contributions

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: If you submit something like a new layout, it will most likely be accepted, but 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).

Also welcome are are your user experiences (what you like as well as what you do not like) and bug reports.