weston.ini(5)

NAME
weston.ini - configuration file for Weston - the reference Wayland compositor

INTRODUCTION
Weston obtains configuration from its command line parameters and the configuration file described here.

DESCRIPTION
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:

    #comment

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'.

CORE SECTION
The core section is used to select the startup compositor modules and general options.

shell=desktop
    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/weston directory are:

    desktop
    fullscreen
    ivi
    kiosk

xwayland=true
    ask Weston to load the XWayland module (boolean).

modules=screen-share.so
    specifies the modules to load (string, comma separated). Available modules in the /usr/lib/weston directory are:

    screen-share.so

backend=headless
    overrides defaults backend. Available backends are:

    drm
    headless
    rdp
    pipewire
    vnc
    wayland
    x11

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.

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

require-outputs=any
    configures the behavior if Weston fails to configure and enable outputs. Depending on the use-case, it may preferable to ensure that Weston only starts if it can enable all available outputs, or that it ignores failed outputs. The possible options are:

    all-found    all available outputs must be enabled
    any          start if any output could be enabled
    none         start even if no output was enabled

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:

    remoting-plugin.so

renderer=auto
    Selects a renderer to use for internal composition when required, or auto to select the most appropriate renderer. Available renderers are:

    auto
    gl
    noop
    pixman
Not all backends support all renderers.

use-pixman=true
    Deprecated in favour of the renderer= option. 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.

output-decorations=true
    For headless-backend with GL-renderer only: draws output window decorations, similar to what wayland-backend does for floating output windows. Boolean, defaults to false. These decorations cannot normally be screenshot. This option is useful for the Weston test suite only.

LIBINPUT SECTION
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.

SHELL SECTION
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=/usr/lib/weston/weston-desktop-shell
    specifies the path for the shell client to run. It is possible to pass arguments and environment variables to the program, for example, 'ENVFOO=bar ENVBAR=baz /path/to/program --arg anotherarg', with entries that are space-separated but with no support for quoting. If no client was specified then 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 by desktop-shell when starting up (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)

cursor-theme=theme
    sets the cursor theme (string).

cursor-size=24
    sets the cursor size (unsigned integer).

LAUNCHER SECTION
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.

displayname=displayname
    sets the display name of the launcher that appears in the tooltip.

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

OUTPUT SECTION
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. 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

    See weston-drm(7) for more details.

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.

content-type=content_type
    The type of the content being primarily displayed to this output. Can be "no data" (default), "graphics", "photo", "cinema" or "game".

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.

colorimetry-mode=default
    Sets the colorimetry mode on the output. The colorimetry mode together with the EOTF mode below define the color encoding used in the video signal. The colorimetry mode is used for choosing between the default sink defined colorimetry (intended to be described by EDID), and standardised other encodings that support wide color gamut (WCG). The display driver, the graphics card, and the video sink (monitor) need to support the chosen mode, otherwise the result is undefined or fails. The mode can be one of the following strings:

    default              default (RGB) colorimetry, video sink dependant
    bt2020cycc           Rec. ITU-R BT.2020 constant luminance YCbCr
    bt2020ycc            Rec. ITU-R BT.2020 non-constant luminance YCbCr
    bt2020rgb            Rec. ITU-R BT.2020 RGB
    p3d65                SMPTE ST 2113 DCI-P3 RGB D65
    p3dci                SMPTE ST 2113 DCI-P3 RGB Theater
    ictcp                Rec. ITU-R BT.2100 ICtCp

    Defaults to default. Non-default modes require color-management=true. Note: The operating system might not honor the choice between RGB and YCbCr, that may be picked by a Linux display driver automatically.

eotf-mode=sdr
    Sets the EOTF mode on the output. This is used for choosing between standard dynamic range (SDR) mode and the various high dynamic range (HDR) modes. The display driver, the graphics card, and the video sink (monitor) need to support the chosen mode, otherwise the result is undefined. The mode can be one of the following strings:

    sdr                  traditional gamma, SDR
    hdr-gamma            traditional gamma, HDR
    st2084               SMPTE ST 2084, a.k.a Perceptual Quantizer
    hlg                  Hybrid Log-Gamma (ITU-R BT.2100)

    Defaults to sdr. Non-SDR modes require color-management=true.

color_characteristics=name
    Sets the basic output color characteristics by loading the parameters from the color_characteristics section with the key name=name . If an ICC profile is also set, the ICC profile takes precedence.

mirror-of=ouput_name
    Makes the remote output overlap (mirror) the native output identified by the mirror-of value. This is useful for sharing or mirroring a native DRM output. The output mirroring the DRM native one, will inherit the same video modeline as the DRM native one, including the refresh rate and scale of the native output. Note that depending on the remote backend, automatic output resize will be disabled when mirroring is in effect. Mirroring a DRM native output to another DRM native output is yet not supported, being intended only for remote outputs. NOTE: The native outputs created by the DRM backend using the 'clone-of' are for cloning the outputs, and not sharing or mirroring. See also weston-drm(7).

INPUT-METHOD SECTION

path=/usr/lib/weston/weston-keyboard
    sets the path of the on screen keyboard input method (string). It is possible to pass arguments and environment variables to the program, for example, 'ENVFOO=bar ENVBAR=baz /path/to/program --arg anotherarg', with entries that are space-separated but with no support for quoting.

overlay-keyboard=false
    sets weston-keyboard as overlay panel.

KEYBOARD SECTION
This section contains the following keys:

keymap_rules=evdev
    sets the keymap rules file (string). Used to map layout and model to input device.

keymap_model=pc105
    sets the keymap model (string). See the Models section in xkeyboard-config(7).

keymap_layout=us,de,gb
    sets the comma separated list of keyboard layout codes (string). See the Layouts section in xkeyboard-config(7).

keymap_variant=euro,,intl
    sets the comma separated list of keyboard layout variants (string). The number of variants must be the same as the number of layouts above. See the Layouts section in xkeyboard-config(7).

keymap_options=grp:alt_shift_toggle,grp_led:scroll
    sets the keymap options (string). See the Options section in xkeyboard-config(7).

repeat-rate=40
    sets the rate of repeating keys in characters per second (unsigned integer)

repeat-delay=400
    sets the delay in milliseconds since key down until repeating starts (unsigned integer)

numlock-on=false
    sets the default state of the numlock on weston startup for the backends which support it.

vt-switching=true
    Whether to allow the use of Ctrl+Alt+Fn key combinations to switch away from the compositor's virtual console.

TERMINAL SECTION
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.

XWAYLAND SECTION

path=/usr/bin/Xwayland
    sets the path to the xserver to run (string).

SCREEN-SHARE SECTION

command=/usr/bin/weston --backend=rdp --shell=fullscreen --no-clients-resize --no-config
    sets the command to start a fullscreen-shell server for screen sharing (string).

start-on-startup=false
    If set to true, start screen sharing of all outputs available on Weston startup. Set to false by default. Set to false by default. When using this option make sure you enable --no-config to avoid re-loading the screen-share module and implictly trigger screen-sharing for the RDP output already performing the screen share. Alternatively, you could also supply a different configuration file, by using --config /path/to/config/file, and make sure that the configuration file doesn't load the screen-share module.

AUTOLAUNCH SECTION

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.

COLOR_CHARACTERISTICS SECTION
Each color_characteristics section records one set of basic display or monitor color characterisation parameters. The parameters are defined in CTA-861-H specification as Static Metadata Type 1, and they can also be found in EDID. The parameters are divided into groups. Each group must be given either fully or not at all.

Each section should be named with name key by which it can be referenced from other sections. A metadata section is just a collection of parameter values and does nothing on its own. It has an effect only when referenced from elsewhere.

See output section key color_characteristics.

name=name
    An arbitrary name for this section. You can choose any name you want as long as it does not contain the colon (:) character. Names with at least one colon are reserved.

  Primaries group

red_x=x
red_y=y
green_x=x
green_y=y
blue_x=x
blue_y=y
    The CIE 1931 xy chromaticity coordinates of the display primaries. These floating point values must reside between 0.0 and 1.0, inclusive.

  White point group

white_x=x
white_y=y
    The CIE 1931 xy chromaticity coordinates of the display white point. These floating point values must reside between 0.0 and 1.0, inclusive.

  Independent parameters
Each parameter listed here has its own group and therefore can be given alone.

max_L=L
    Display's desired maximum content luminance (peak) L cd/m², a floating point value in the range 0.0–100000.0.

min_L=L
    Display's desired minimum content luminance L cd/m², a floating point value in the range 0.0–100000.0.

maxFALL=L
    Display's desired maximum frame-average light level L cd/m², a floating point value in the range 0.0–100000.0.

SEE ALSO
weston(1), weston-bindings(7), weston-drm(7), xkeyboard-config(7)