weston.ini - configuration file for Weston - the reference
Wayland compositor
Weston obtains configuration from its command line
parameters and the configuration file described here.
Weston uses a configuration file called weston.ini
for its setup. The weston.ini configuration file is searched for in
one of the following places when the server is started:
$XDG_CONFIG_HOME/weston.ini (if $XDG_CONFIG_HOME is set)
$HOME/.config/weston.ini (if $HOME is set)
weston/weston.ini in each
$XDG_CONFIG_DIR (if $XDG_CONFIG_DIRS is set)
/etc/xdg/weston/weston.ini (if $XDG_CONFIG_DIRS is not set)
where environment variable $HOME is the user's home
directory, and $XDG_CONFIG_HOME is the user specific configuration
directory, and $XDG_CONFIG_DIRS is a colon ':' delimited
listed of configuration base directories, such as
/etc/xdg-foo:/etc/xdg.
The weston.ini file is composed of a number of sections
which may be present in any order, or omitted to use default configuration
values. Each section has the form:
[SectionHeader]
Key1=Value1
Key2=Value2
...
The spaces are significant. Comment lines are ignored:
The section headers are:
core The core modules and options
libinput Input device configuration
shell Desktop customization
launcher Add launcher to the panel
output Output configuration
input-method Onscreen keyboard input
keyboard Keyboard layouts
terminal Terminal application options
xwayland XWayland options
screen-share Screen sharing options
autolaunch Autolaunch options
Possible value types are string, signed and unsigned 32-bit
integer, and boolean. Strings must not be quoted, do not support any escape
sequences, and run till the end of the line. Integers can be given in
decimal (e.g. 123), octal (e.g. 0173), and hexadecimal (e.g. 0x7b) form.
Boolean values can be only 'true' or 'false'.
The core section is used to select the startup compositor
modules and general options.
- shell=desktop-shell.so
- specifies a shell to load (string). This can be used to load your own
implemented shell or one with Weston as default. Available shells in the
/usr/lib/x86_64-linux-gnu/weston directory are:
- xwayland=true
- ask Weston to load the XWayland module (boolean).
- modules=cms-colord.so,screen-share.so
- specifies the modules to load (string). Available modules in the
/usr/lib/x86_64-linux-gnu/weston directory are:
cms-colord.so
screen-share.so
- backend=headless-backend.so
- overrides defaults backend. Available backend modules in the
/usr/lib/x86_64-linux-gnu/libweston-10 directory are:
drm-backend.so
fbdev-backend.so
headless-backend.so
rdp-backend.so
wayland-backend.so
x11-backend.so
- repaint-window=N
- Set the approximate length of the repaint window in milliseconds. The
repaint window is used to control and reduce the output latency for
clients. If the window is longer than the output refresh period, the
repaint will be done immediately when the previous repaint finishes, not
processing client requests in between. If the repaint window is too short,
the compositor may miss the target vertical blank, increasing output
latency. The default value is 7 milliseconds. The allowed range is from
-10 to 1000 milliseconds. Using a negative value will force the compositor
to always miss the target vblank.
- gbm-format=format
- sets the GBM format used for the framebuffer for the GBM backend. Can be
xrgb8888, xrgb2101010, rgb565. By default, xrgb8888
is used.
- idle-time=seconds
- sets Weston's idle timeout in seconds. This idle timeout is the time after
which Weston will enter an "inactive" mode and screen will fade
to black. A value of 0 disables the timeout.
Important : This option may also be set via Weston's
'-i' command line option and will take precedence over the current .ini
option. This means that if both weston.ini and command line define this
idle-timeout time, the one specified in the command-line will be used.
On the other hand, if none of these sets the value, default idle timeout
will be set to 300 seconds.
- require-input=true
- require an input device for launch
- pageflip-timeout=milliseconds
- sets Weston's pageflip timeout in milliseconds. This sets a timer to exit
gracefully with a log message and an exit code of 1 in case the DRM driver
is non-responsive. Setting it to 0 disables this feature.
- wait-for-debugger=true
- Raises SIGSTOP before initializing the compositor. This allows the user to
attach with a debugger and continue execution by sending SIGCONT. This is
useful for debugging a crash on start-up when it would be inconvenient to
launch weston directly from a debugger. Boolean, defaults to false.
There is also a command line option to do the same.
- remoting=remoting-plugin.so
- specifies a plugin for remote output to load (string). This can be used to
load your own implemented remoting plugin or one with Weston as default.
Available remoting plugins in the __libweston_modules_dir__
directory are:
- use-pixman=true
- Enables pixman-based rendering for all outputs on backends that support
it. Boolean, defaults to false. There is also a command line option
to do the same.
- color-management=true
- Enables color management and requires using GL-renderer. Boolean, defaults
to false.
TENTATIVE, EXPERIMENTAL, WORK IN PROGRESS: Color
management enables the use of ICC files to describe monitor color
behavior, Wayland protocol extensions for clients to describe their
color spaces and perform monitor profiling, and tone mapping required to
enable HDR video modes. This extended functionality comes at the cost of
heavier image processing and sometimes a loss of some hardware
off-loading features like composite-bypass.
The libinput section is used to configure input devices
when using the libinput input device backend. The defaults are determined by
libinput and vary according to what is most sensible for any given
device.
Available configuration are:
- enable-tap=false
- Enables tap to click on touchpad devices.
- tap-and-drag=false
- For touchpad devices with enable-tap enabled. If the user taps,
then taps a second time, this time holding, the virtual mouse button stays
down for as long as the user keeps their finger on the touchpad, allowing
the user to click and drag with taps alone.
- tap-and-drag-lock=false
- For touchpad devices with enable-tap and tap-and-drag
enabled. In the middle of a tap-and-drag, if the user releases the
touchpad for less than a certain number of milliseconds, then touches it
again, the virtual mouse button will remain pressed and the drag can
continue.
- disable-while-typing=true
- For devices that may be accidentally triggered while typing on the
keyboard, causing a disruption of the typing. Disables them while the
keyboard is in use.
- middle-button-emulation=false
- For pointer devices with left and right buttons, but no middle button.
When enabled, a middle button event is emitted when the left and right
buttons are pressed simultaneously.
- left-handed=false
- Configures the device for use by left-handed people. Exactly what this
option does depends on the device. For pointers with left and right
buttons, the buttons are swapped. On tablets, the tablet is logically
turned upside down, because it will be physically turned upside down.
- rotation=n
- Changes the direction of the logical north, rotating it n degrees
clockwise away from the default orientation, where n is a whole
number between 0 and 359 inclusive. Needed for trackballs, mainly. Allows
the user to orient the trackball sideways, for example.
- accel-profile={flat,adaptive}
- Set the pointer acceleration profile. The pointer's screen speed is
proportional to the physical speed with a certain constant of
proportionality. Call that constant alpha. flat keeps alpha fixed.
See accel-speed. adaptive causes alpha to increase with
physical speed, giving the user more control when the speed is slow, and
more reach when the speed is high. adaptive is the default.
- accel-speed=v
- If accel-profile is set to flat, it simply sets the value of
alpha. If accel-profile is set to adaptive, the effect is
more complicated, but generally speaking, it will change the pointer's
speed. v is normalised and must lie in the range [-1, 1]. The exact
mapping between v and alpha is hardware-dependent, but higher
values cause higher cursor speeds.
- natural-scroll=false
- Enables natural scrolling, mimicking the behaviour of touchscreen
scrolling. That is, if the wheel, finger, or fingers are moved down, the
surface is scrolled up instead of down, as if the finger, or fingers were
in contact with the surface being scrolled.
- scroll-method={two-finger,edge,button,none}
- Sets the scroll method. two-finger scrolls with two fingers on a
touchpad. edge scrolls with one finger on the right edge of a
touchpad. button scrolls when the pointer is moved while a certain
button is pressed. See scroll-button. none disables
scrolling altogether.
- scroll-button={BTN_LEFT,BTN_RIGHT,BTN_MIDDLE,...}
- For devices with scroll-method set to button. Specifies the
button that will trigger scrolling. See
/usr/include/linux/input-event-codes.h for the complete list of possible
values.
- touchscreen_calibrator=true
- Advertise the touchscreen calibrator interface to all clients. This is a
potential denial-of-service attack vector, so it should only be enabled on
trusted userspace. Boolean, defaults to false.
The interface is required for running touchscreen calibrator
applications. It provides the application raw touch events, bypassing
the normal touch handling. It also allows the application to upload a
new calibration into the compositor.
Even though this option is listed in the libinput section, it
does affect all Weston configurations regardless of the used backend. If
the backend does not use libinput, the interface can still be
advertised, but it will not list any devices.
- calibration_helper=/bin/echo
- An optional calibration helper program to permanently save a new
touchscreen calibration. String, defaults to unset.
The given program will be executed with seven arguments when a
calibrator application requests the server to take a new calibration
matrix into use. The program is executed synchronously and will
therefore block Weston for its duration. If the program exit status is
non-zero, Weston will not apply the new calibration. If the helper is
unset or the program exit status is zero, Weston will use the new
calibration immediately.
The program is invoked as:
calibration_helper syspath m1 m2 m3 m4 m5 m6
where syspath is the udev sys path for the device and
m1 through m6 are the calibration matrix elements in
libinput's LIBINPUT_CALIBRATION_MATRIX udev property format. The sys
path is an absolute path and starts with the sys mount point.
The shell section is used to customize the compositor. Some
keys may not be handled by different shell plugins.
The entries that can appear in this section are:
- client=file
- sets the path for the shell client to run. If not specified
weston-desktop-shell is launched (string).
- background-image=file
- sets the path for the background image file (string).
- background-type=tile
- determines how the background image is drawn (string). Can be
centered, scale, scale-crop or tile (default).
Centered shows the image once centered. If the image is smaller than the
output, the rest of the surface will be in background color. If the image
size does fit the output it will be cropped left and right, or top and
bottom. Scale means scaled to fit the output precisely, not preserving
aspect ratio. Scale-crop preserves aspect ratio, scales the background
image just big enough to cover the output, and centers it. The image ends
up cropped from left and right, or top and bottom, if the aspect ratio
does not match the output. Tile repeats the background image to fill the
output.
- background-color=0xAARRGGBB
- sets the color of the background (unsigned integer). The hexadecimal digit
pairs are in order alpha, red, green, and blue.
- clock-format=format
- sets the panel clock format (string). Can be none, minutes,
seconds, minutes-24h, seconds-24h. By default,
minutes format is used.
- panel-color=0xAARRGGBB
- sets the color of the panel (unsigned integer). The hexadecimal digit
pairs are in order transparency, red, green, and blue. Examples:
0xffff0000 Red
0xff00ff00 Green
0xff0000ff Blue
0x00ffffff Fully transparent
- panel-position=top
- sets the position of the panel (string). Can be top, bottom,
left, right, none.
- locking=true
- enables screen locking (boolean).
- animation=zoom
- sets the effect used for opening new windows (string). Can be zoom,
fade, none. By default, no animation is used.
- close-animation=fade
- sets the effect used when closing windows (string). Can be fade,
none. By default, the fade animation is used.
- startup-animation=fade
- sets the effect used for opening new windows (string). Can be fade,
none. By default, the fade animation is used.
- focus-animation=dim-layer
- sets the effect used with the focused and unfocused windows. Can be
dim-layer, none. By default, no animation is used.
- allow-zap=true
- whether the shell should quit when the Ctrl-Alt-Backspace key combination
is pressed
- binding-modifier=ctrl
- sets the modifier key used for common bindings (string), such as moving
surfaces, resizing, rotating, switching, closing and setting the
transparency for windows, controlling the backlight and zooming the
desktop. See weston-bindings(7). Possible values: none, ctrl, alt,
super (default)
- num-workspaces=6
- defines the number of workspaces (unsigned integer). The user can switch
workspaces by using the binding+F1, F2 keys. If this key is not set, fall
back to one workspace.
- cursor-theme=theme
- sets the cursor theme (string).
- cursor-size=24
- sets the cursor size (unsigned integer).
There can be multiple launcher sections, one for each
launcher.
- icon=icon
- sets the path to icon image (string). Svg images are not currently
supported.
- path=program
- sets the path to the program that is run by clicking on this launcher
(string). It is possible to pass arguments and environment variables to
the program. For example:
path=GDK_BACKEND=wayland gnome-terminal --full-screen
There can be multiple output sections, each corresponding to one
output. It is currently only recognized by the drm and x11 backends.
- name=name
- sets a name for the output (string). The backend uses the name to identify
the output. All X11 output names start with a letter X. All Wayland output
names start with the letters WL. The available output names for DRM
backend are listed in the weston-launch(1) output. Examples of
usage:
LVDS1 DRM backend, Laptop internal panel no.1
VGA1 DRM backend, VGA connector no.1
X1 X11 backend, X window no.1
WL1 Wayland backend, Wayland window no.1
- mode=mode
- sets the output mode (string). The mode parameter is handled differently
depending on the backend. On the X11 backend, it just sets the
WIDTHxHEIGHT of the weston window. The DRM backend accepts different
modes, along with an option of a modeline string.
See weston-drm(7) for examples of modes-formats
supported by DRM backend.
- transform=normal
- How you have rotated your monitor from its normal orientation (string).
The transform key can be one of the following 8 strings:
normal Normal output.
rotate-90 90 degrees clockwise.
rotate-180 Upside down.
rotate-270 90 degrees counter clockwise.
flipped Horizontally flipped
flipped-rotate-90 Flipped and 90 degrees clockwise
flipped-rotate-180 Flipped and upside down
flipped-rotate-270 Flipped and 90 degrees counter clockwise
- scale=factor
- The scaling multiplier applied to the entire output, in support of high
resolution ("HiDPI" or "retina") displays, that
roughly corresponds to the pixel ratio of the display's physical
resolution to the logical resolution. Applications that do not support
high resolution displays typically appear tiny and unreadable. Weston will
scale the output of such applications by this multiplier, to make them
readable. Applications that do support their own output scaling can draw
their content in high resolution, in which case they avoid compositor
scaling. Weston will not scale the output of such applications, and they
are not affected by this multiplier.
An integer, 1 by default, typically configured as 2 or higher when
needed, denoting the scaling multiplier for the output.
- icc_profile=file
- If option color-management is true, load the given ICC file as the
output color profile. This works only on DRM, headless, wayland, and x11
backends, and for remoting and pipewire outputs.
- seat=name
- The logical seat name that this output should be associated with. If this
is set then the seat's input will be confined to the output that has the
seat set on it. The expectation is that this functionality will be used in
a multiheaded environment with a single compositor for multiple output and
input configurations. The default seat is called "default" and
will always be present. This seat can be constrained like any other.
- allow_hdcp=true
- Allows HDCP support for this output. If set to true, HDCP can be tried for
the content-protection, provided by the backends, on this output. By
default, HDCP support is always allowed for an output. The
content-protection can actually be realized, only if the hardware (source
and sink) support HDCP, and the backend has the implementation of
content-protection protocol. Currently, HDCP is supported by
drm-backend.
- app-ids=app-id[,app_id]*
- A comma separated list of the IDs of applications to place on this output.
These IDs should match the application IDs as set with the
xdg_shell.set_app_id request. Currently, this option is supported by
kiosk-shell.
Contains settings for the weston terminal application
(weston-terminal). It allows to customize the font and shell of the command
line interface.
- font=DejaVu Sans
Mono
- sets the font of the terminal (string). For a good experience it is
recommended to use monospace fonts. In case the font is not found, the
default one is used.
- font-size=14
- sets the size of the terminal font (unsigned integer).
- term=xterm-256color
- The terminal shell (string). Sets the $TERM variable.
- path=/usr/bin/echo
- Path to an executable file to run after startup. This file is executed in
parallel to Weston, so it does not have to immediately exit. Defaults to
empty.
- watch=false
- If set to true, quit Weston after the auto-launched executable exits. Set
to false by default.