This page is incomplete. For a complete description of plugins, see the default config file, wayfire.ini.default
Wayfire is managed through a config file, typically located in ~/.config/wayfire.ini
. The location can be overriden using the -c <config file>
argument when staring Wayfire.
Probably the easiest way to edit the configuration options is the WIP Wayfire config manager (WCM). However, it is still missing many important options (like output configuration), so for the time being you most probably want to edit the config file directly.
The configuration file follows a simple ini
file format. It is divided into sections, which consist of multiple options, for ex.
[example-section]
example_option1 = value1
example_option2 = value2
....
There are several types of values:
Examples: option = 1.0
, option = your string
They are represented by of four floating point numbers in RGBA format.
Example: option = 0.5 0.5 0.5 1.0
means a fully opaque grey color.
These represent a combination of modifier + key/button.
Modifiers can be <shift>
, <ctrl>
, <alt>
and/or <super>
.
Keys and buttons have names as defined in /usr/include/linux/input-event-codes.h
.
Examples: option = <super> <shift> KEY_F
, option = <ctrl> BTN_RIGHT
These are represented via a modifier combination, for ex. option = <alt>
means alt+scroll for an axis binding.
Represent a touchscreen gesture (in the future also touchpad support is planned)
Examples:
option = swipe 3 up #swipe up with 3 fingers <br/>
option = pinch 3 in # pinch in(can also be set with out) with 3 fingers <br/>
option = edge-swipe 4 left # swipe left with 4 fingers, starting from the edge of the screen <br/>
Activator bindings combine multiple key/button/touch bindings, so that a single action can be triggered from multiple bindings. Example: toggle = <alt> BTN_EXTRA | pinch out 3 | <alt> KEY_E
The documentation for individual options has been split into multiple pages:
- Core options
- Basic plugins
- TBD: Desktop effects
- TBD: Misc plugins
To configure outputs, you first need to figure out each output's name. They are usually the same as xrandr
output names. If you are unsure which output names are on your system, check the log. There you can also find information about the supported modes.
Each output has its own section in the config name. The section name is the same as the output name. Each of the following options should be put in the output section for the output that you want to configure.
mode = width x height @ refresh
ormode = default
ormode = off
ormode = mirror <output>
The first variant tells Wayfire to use the given mode. Refresh rate can be in Hz
or mHz
. Example: mode = 1920x1080@60
. In the second case, the mode is detected automatically.
When mode = off
is set, the output is turned off and left unused by Wayfire.
When mode = mirror <output>
, if <output>
is a valid name of another output, the output is used as a mirror of the specified output.
custom_mode_N = modeline
Add a custom mode to the given output. The modeline is the same as the one which is used in X, and can be generated by for ex. cvt
. The custom mode can then be set via the mode
option. Example:
custom_mode_1 = 712.75 3840 4160 4576 5312 2160 2163 2168 2237 -hsync +vsync
scale = X
Set output scale, use for HiDPI. Wayfire supports fractional scaling. Example: scale = 1.5
. Default is 1
transform = V
Set output transform, i.e rotation. Possible values: normal
(default), 90
, 180
, 270
, flipped
, 90_flipped
, 180_flipped
, 270_flipped
layout = x,y
Sets the position of the output in the global compositor space. Outputs which don't have a layout set will be arranged next to the rightmost output. Currently Wayfire supports only a very basic output layout. So, if you configure the outputs so that there is empty space between them, you won't be able to move the mouse from one to the other. Overlapping outputs also will result in possibly weird behavior.
To properly calculate the output size in the global compositor space, you need to take its resolution, divide by scale and then apply the rotation. You can use a little "trick" to save yourself the hassle of computing layouts if you have just 2 monitors arranged horizontally: just specify the layout of the left one to 0,0
and the other will be automatically arranged to the right.