From Gentoo Wiki
Jump to:navigation Jump to:search

Wayfire is a Wayland compositor inspired by Compiz and based on wlroots.

Wayfire aims to create a customizable, extendable and lightweight environment without sacrificing its appearance. It features a lot of graphical effects, such as the desktop cube, wobbly windows, fire animation, fish eye, workspace scale view and window rotations, among many other features.


USE flags

USE flags for gui-wm/wayfire compiz like 3D wayland compositor

X Add support for X11
debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
gles use libglvnd to do animations more efficiently
system-wfconfig use the system-wide wf-config, else build it as a submodule. DO NOT DISABLE UNLESS YOU KNOW WHAT YOU ARE DOING.
system-wlroots use the system wide wlroots, else build it as a submodule. DO NOT DISABLE UNLESS YOU KNOW WHAT YOU ARE DOING.


root #emerge --ask gui-wm/wayfire


The default configuration file is ~/.config/wayfire.ini but Wayfire also supports loading custom configuration files. A graphical interface for configuration is provided by the optional package gui-apps/wcm.

Manual configuration

Copy over the default configuration from /usr/share/wayfire like so:

user $cp /usr/share/wayfire/wayfire.ini ~/.config/


Wayfire plugins can be enabled and disabled via adding and removing entries in the plugins = in the [core] section of ~/.config/wayfire.ini.

For example, to remove the wrot plugin which allows for window rotation, comment it out in ~/.config/wayfire.ini like so:

FILE ~/.config/wayfire.ini
plugins = \
  alpha \
  animate \
  autostart \
  command \
  cube \
  decoration \
  expo \
  fast-switcher \
  fisheye \
  foreign-toplevel \
  grid \
  gtk-shell \
  idle \
  invert \
  move \
  oswitch \
  place \
  resize \
  switcher \
  vswitch \
  window-rules \
  wm-actions \
  wobbly \
 # wrot \

To install extra plugins, emerge the gui-libs/wayfire-plugins-extra package:

root #emerge --ask gui-libs/wayfire-plugins-extra


For binding variables, you must use evdev codes. For more information see the link in 'External resources'

External shortcuts in wayfire are managed by the command plugin. A custom keybind requires 2 things:

  • A binding or repeatable_binding prefixed variable.
    • repeatable_binding assumes that the key in question is going to be held down.
    • Available meta keys include:
      • <super>
      • <alt>
      • <shift>
  • A command prefixed variable.
The order and name of the variables doesn't matter, as long as the binding and command prefixed variables have the same suffix, e.g. binding_x, command_x.

For example, assume that a custom bind needs to be created for launching firefox, and to launch it the super, shift, and 1 keys need to be pressed.

First, the key binds themselves can be added like so:

FILE ~/.config/wayfire.ini
binding_firefox = <super> <shift> KEY_1

Then, the command to be launched when the key combination is pressed can be added like this:

FILE ~/.config/wayfire.ini
command_firefox = firefox


Wayfire is only a Wayland compositor and does not provide the full capabilities expected from a desktop environment. It is best used alongside gui-apps/wf-shell, which adds among other features a GTK3-based status bar and wallpaper support.

Wayfire needs additional applications which implement other parts of the XDG specifications from Freedesktop, such as desktop notifications, application launchers, screenshotting, screen recording and screen locking among other important necessities; refer to the List of software for Wayland article for examples.



root #emerge --ask --depclean --verbose gui-wm/wayfire

See also

External resources

https://www.kernel.org/doc/Documentation/input/event-codes.txt - kernel documentation on all event input codes

https://github.com/WayfireWM/wayfire/wiki/Configuration - official wayfire documentation