A fully programmable Wayland Compositor
Find a file
2018-09-30 20:07:00 +02:00
lit Execute config file 2018-09-30 20:07:00 +02:00
.gitignore Added the books to .gitignore 2018-09-30 20:03:21 +02:00
config.mk Implemented basic argument parsing 2018-09-27 20:44:46 +02:00
CONTRIBUTING.adoc Added contributing guidelines 2018-09-28 17:46:23 +02:00
LICENSE Initial commit 2018-09-27 16:42:20 +02:00
Makefile Added html documentation to Makefile 2018-09-29 16:19:17 +02:00
README.adoc Added building instructions 2018-09-28 18:06:34 +02:00

wmaffle

A fully manual tiling window manager for the X window system.

Why?

Theres not enough so called "manual" tiling window managers and none of the existing ones is fully manual.

When a new window opens, without having space assigned, I dont want my WM to suddenly be dynamic and just put it somewhere or even on top something thats already existing.

Wheres the source at?

In lit/.

wmaffle is a literate program. Its a cool thing by Knuth. Im not going to explain this, since this does it better anyways. Im using the Literate utility for this, since it gets the job done, while keeping a light syntax for me.

Why? Literate programming is awesome. This allows people to learn from my stuff while making it easy to contribute. Also its easier to write documentation like this. Who does comments anyway?

Concepts

I dont know what you expect to find here.

Its a window manager: theres tags (workspaces), windows and they get arranged.

So what happens when a window is created when theres no space yet? Its put in a queue, from where it can be popped into available space (which is also getting a cool name soon). This also solves the problem of creating a window and moving the focus before it spawns, since you can assign future queue positions to available space.

I plan on having available space behave like a window, so that you dont have to think about stuff, but well see about that.

Configuration

Configuration languages suck and they add a lot of complexity to a program. wmaffle listens to a socket and offers a basic client (called syrup) to communicate with the WM.

This allows you to write your configuration in any language you want, while also removing the task of listening to keybinds for me, since you can use tools like sxhkd to do that.

Building

Configuration can be done mostly in config.mk.

In-source

  1. Be sure to have the dependencies installed (Literate).

  2. make

  3. sudo make install

Out-of-source

  1. Have the dependencies (see above) installed

  2. mkdir $builddir

  3. cp config.mk Makefile $builddir

  4. cd $builddir

  5. make SRCPREFIX=..

  6. sudo make install

Contribution

You want to contribute? Great!

Future requests, bug reports and PRs are welcome. Be sure to read the CONTRIBUTING.adoc. Note that pull requests without an issue they reference are ignored, to de decrease the amount of duplicated work.

If anything is unclear, feel free to reach out to me.