kawa icon indicating copy to clipboard operation
kawa copied to clipboard

A small Wayland compositor inspired by Plan 9's rio.

kawa

kawa is planned to be a Wayland compositor with an interface inspired by, though not directly copying, Plan 9's rio window manager. It isn't yet, however, so feel free to either send a pull request or come back later.

Planned Features

  • [X] Minimal interface besides windows, but not completely blank like rio. There should be, for example, a status bar with the current time and other useful global pieces of info.
  • [X] Ability to maximize windows. The status bar will still display, allowing it to be right-clicked to access the window management menu.
  • [ ] Ability to access the global menus from anywhere by holding a key (Super?) and clicking.
  • [ ] Window overview similar to GNOME shell's.
  • [ ] ~~Window starting system similar to rio's with terminal takeover, but with more capability for handling multi-window clients. This could be tricky, however, and will heavily depend on how far Wayland can be stretched to handle something like this.~~ This has been ditched. It isn't feasible, makes little sense on Linux, and does bizarre things with a lot of programs. Maybe later, but probably not.
  • [ ] An exit feature. Maybe something in the status bar? It shouldn't be too easy to do accidentally, obviously.
  • [ ] Support for fullscreen apps, such as games.
  • [X] Auto-focus of windows.

Wishful Thinking

  • [ ] Touchscreen support. I'm not entirely sure how this would work, but since rio's design is heavily mouse-oriented, if it does work it could be quite nice.
  • [ ] Theming support.
  • [X] When a window is maximized, maybe it automatically enters a tiled mode and is always underneath non-maximized windows. ~~I'm not sure how feasible this is.~~ Quite feasible indeed, it turns out, thanks to Wayland giving 100% of final say on positioning and sizing to the compositor.

Building and Installing

Warning: This project is not ready for production usage. In particular, there is currently an issue with the initialization that causes a machine attempting to run it as a proper compositor to completely lock up all input. Do not use this as a regular compositor yet. It should be fine to run it as a Wayland client inside of another compositor, however, if you'd like to test it.

Dependencies

  • wlroots v0.15

Installation

Installing kawa can be done via the go tool:

$ go install deedles.dev/kawa@latest

Compilation

If you would like to compile kawa without installing the resulting binary, use the following commands:

$ git clone https://github.com/DeedleFake/kawa
$ cd kawa
$ go build

Prior Art