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
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:
git clone https://github.com/WayfireWM/wayfire && cd wayfire
meson build --prefix=/usr --buildtype=release
ninja -C build && sudo ninja -C build install
Before running Wayfire, copy the default configuration file which is located in the root of the repository and place it in:
cp wayfire.ini.default ~/.config/wayfire.ini
It is also advisable to install https://github.com/WayfireWM/wf-shell in order to get a background and a panel. Just follow the instructions in the README of wf-shell. You may also want to visit the page on external tools.
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.
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
- Shell panel with launchers, date, internet connection & battery support
- 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.
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.