README.md

Wayfire

Introduction

or join #wayfire at freenode.net

Wayfire is a wayland compositor based on wlroots. It aims to create a customizable, extendable and lightweight environment without sacrificing its appearance. If you want to gain a better impression at what it can do, see the demo videos on youtube: link

Build and install

To build wayfire, you'll need glm, wf-config(built as a submodule by default) and wlroots + its build dependencies. When ready, simply clone this repo, compile and install:

To start wayfire, just execute wayfire from a TTY. If you encounter any issues, please read debug report guidelines and open a bug in this repo. Or you can also write in gitter.

Project status

IMPORTANT: Although many of the features one can expect from a WM are implemented, Wayfire should be considered as (pre-)alpha quality. In my setup it works just fine, but the project hasn't been extensively tested, so there are a lot of bugs to be expected and to be fixed. Bug reports are welcome!

Currently supported:

Seamless integration of both native wayland & Xwayland clients

Workspaces (or more like viewports if you are familiar with compiz)

Configurable bindings (int many cases multiple bindings to the same action are supported)

Configuration on-the-fly - changes made to the config file are applied immediately without restarting wayfire

Various plugins: Desktop cube, Expo(live workspace previews), Grid(arrange floating windows in a grid), Auto snap at edges, and many others

Basic touchscreen gestures - swipe, swipe-from-edge, pinch, all of them with >= 3 fingers. Can be configured to any command or activation/toggle binding. See the config for examples.

See the list of issues to know what else is coming to wayfire. Also, don't hesitate to open a new one if you find any bugs or want some new feature.

Contributing to the project

There are many ways you can help, aside from developing - open bug reports, test features, add documentation, etc.

If you want to write your own plugin, a general outline of how the plugin system works is here: plugin architecture. Unfortunately documentation always end up last in the TODO list, so information is very scarce. You can take a look at the simpler plugins(the simplest are command and rotator, around 50-60 loc each). I have also added documentations for many of the API functions in the headers(src/api/*). Don't hesitate to write in IRC (or gitter) if you have any questions.