weston.ini(5)
โจ weston.ini(5) โจ
File Formats Manual but make it group chat. This is the manual for weston.ini(5), the config file for Weston, a Wayland compositor. If you're trying to make Weston do your bidding, bestie, this is the file. ๐
๐ NAME ๐
weston.ini โ configuration file for Weston, a Wayland compositor.
๐ฆ INTRODUCTION ๐ฆ
Weston gets its configuration from its command line parameters and the configuration file described right here. That's the whole intro. Short, sweet, iconic. โจ
๐ธ DESCRIPTION ๐ธ
Weston uses a configuration file called weston.ini for its setup. When the server is started, the weston.ini configuration file is searched for in one of these places:
$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, $XDG_CONFIG_HOME is the user specific configuration directory, and $XDG_CONFIG_DIRS is a colon : delimited list 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 optionslibinputโ Input device configurationshellโ Desktop customizationlauncherโ Add launcher to the paneloutputโ Output configurationinput-methodโ Onscreen keyboard inputkeyboardโ Keyboard layoutsterminalโ Terminal application optionsxwaylandโ XWayland optionsautolaunchโ 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. This is the main character section, no cap. ๐ซถ
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/x86_64-linux-gnu/westondirectory are:desktopivikiosklua
xwayland=trueโ ask Weston to load the XWayland module (boolean).backend=headlessโ overrides the default backend. Available backends are:drmheadlessrdppipewirevncwaylandx11
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 1 to 1000 milliseconds, but the compositor will reduce large values to 1 millisecond less than the current refresh rate.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-icommand line option and will take precedence over the current .ini option. This means that if bothweston.iniand 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 launchrequire-outputs=anyโ configures the behavior if Weston fails to configure and enable outputs.
Depending on the use-case, it may be 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 enabledanyโ start if any output could be enablednoneโ start even if no output was enabled
wait-for-debugger=trueโ RaisesSIGSTOPbefore initializing the compositor. This allows the user to attach with a debugger and continue execution by sendingSIGCONT. 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:autoglnooppixman
Not all backends support all renderers.
use-pixman=trueโ Deprecated in favour of therenderer=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.output-straight-alpha=trueโ Require straight alpha framebuffers from renderers for outputs. Only supported by the headless backend. Boolean, defaults to false.placeholder-color=0xRRGGBBโ sets the color of the placeholder (unsigned integer). The hexadecimal digit pairs are in order red, green, and blue. This placeholder is used for content-protection or when we're not able to lift a surface/view in a HW plane, but we require direct scan-out of buffers. Defaults to0x660000(red grenadier).
โจ LIBINPUT SECTION โจ
Okay bestie, this section is the one where you tell Weston how to handle your input devices when it's using the libinput input device backend. The defaults? Not our problem โ those come straight from libinput and they change per device based on whatever makes the most sense for that particular gadget. Slay.
Here's everything you can configure:
enable-tap=falseโ turns on tap to click for touchpad girlies. ๐tap-and-drag=falseโ for touchpads that already haveenable-tapon. If you tap, then tap a second time but hold it, the virtual mouse button stays pressed for as long as your finger's still on the touchpad. So you can click-and-drag with taps alone. iconic.tap-and-drag-lock=falseโ for touchpads with bothenable-tapandtap-and-dragturned on. Mid tap-and-drag, if you lift your finger for less than a certain number of milliseconds and then touch again, the virtual mouse button stays pressed and the drag just keeps going. no cap.disable-while-typing=trueโ for devices that get accidentally triggered while you're typing on the keyboard and ruin your whole flow ๐ญ. Disables them while the keyboard is in use.middle-button-emulation=falseโ for pointer devices that have left and right buttons but no middle one. Turn this on and a middle button event fires when you press left and right at the same time. โจleft-handed=falseโ configures the device for left-handed people. What it actually does depends on the device, fr fr. For pointers with left and right buttons, the buttons get swapped. On tablets, the tablet is logically turned upside down, because it's gonna be physically turned upside down anyway. ๐ฆrotation=nโ changes the direction of the logical north by rotating itndegrees clockwise away from the default orientation, wherenis a whole number between0and359inclusive. Mainly needed for trackballs โ lets you orient that thing sideways, for example.accel-profile={flat,adaptive}โ sets the pointer acceleration profile. Here's the tea: the pointer's screen speed is proportional to the physical speed with some constant of proportionality, and we're calling that constant alpha.flatkeeps alpha fixed (peepaccel-speed).adaptivemakes alpha increase with physical speed, which gives you more control when you're moving slow and more reach when you're moving fast.adaptiveis the default. ๐accel-speed=vโ ifaccel-profileisflat, this just sets the value of alpha, simple. Ifaccel-profileisadaptive, the effect is more complicated, but generally it changes the pointer's speed.vis normalised and must lie in the range[-1, 1]. The exact mapping betweenvand alpha is hardware-dependent, but higher values = higher cursor speeds. periodt.natural-scroll=falseโ enables natural scrolling, which mimics touchscreen scrolling behaviour. Meaning: if the wheel or your finger(s) move down, the surface scrolls up instead of down โ as if your finger(s) were literally in contact with the surface being scrolled. ๐ซถscroll-method={two-finger,edge,button,none}โ sets the scroll method.two-fingerscrolls with two fingers on a touchpad.edgescrolls with one finger on the right edge of a touchpad.buttonscrolls when the pointer moves while a certain button is held down (seescroll-button).nonedisables scrolling completely. ๐ธscroll-button={BTN_LEFT,BTN_RIGHT,BTN_MIDDLE,...}โ for devices withscroll-methodset tobutton. Specifies which button triggers the scrolling. Hit up/usr/include/linux/input-event-codes.hfor the complete list of possible values.disable-input=falseโ ignore all libinput-based input devices. ๐touchscreen_calibrator=trueโ advertises the touchscreen calibrator interface to all clients. Heads up bestie, this is a potential denial-of-service attack vector, so it should only be enabled on trusted userspace. Boolean, defaults tofalse.
The interface is required for running touchscreen calibrator applications. It hands the application raw touch events, bypassing the normal touch handling, and it also lets the application upload a new calibration into the compositor.
Even though this option lives in the libinput section, it affects all Weston configurations regardless of which backend is used. If the backend doesn't use libinput, the interface can still be advertised โ it just won't list any devices.
calibration_helper=/bin/echoโ an optional calibration helper program to permanently save a new touchscreen calibration. String, defaults to unset.
The program you give it gets executed with seven arguments when a calibrator application asks the server to take a new calibration matrix into use. It runs synchronously, so it'll block Weston for however long it takes. If the program's exit status is non-zero, Weston will not apply the new calibration. If the helper is unset, or the program exits with status zero, Weston uses 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 ๐
This is where you customise the compositor, bestie. Just a lil warning: some keys may not be handled by different shell plugins, so don't come for me if something doesn't take. ๐
Here are the entries that can show up in this section:
client=/usr/libexec/weston-desktop-shellโ specifies the path for the shell client to run. You can pass arguments and environment variables to the program, like this:ENVFOO=bar ENVBAR=baz /path/to/program --arg anotherargโ entries are space-separated, and there is no support for quoting. If no client is specified,weston-desktop-shellgets 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 becentered,scale,scale-crop,scale-fitortile(default). โจcenteredshows the image once, centered โ if the image is smaller than the output, the rest of the surface is in background color, and if the image does fit the output it gets cropped left and right, or top and bottom.scalemeans scaled to fit the output precisely, no aspect ratio preservation.scale-croppreserves aspect ratio, scales the background image just big enough to cover the output, and centers it โ you end up with cropping from left and right, or top and bottom, if the aspect ratio doesn't match the output.scale-fitis similar toscale-cropbut it fits to the output so the image doesn't get cropped.tilerepeats the background image to fill the output.background-color=0xRRGGBBโ sets the color of the background (unsigned integer). The hexadecimal digit pairs go in order red, green, and blue. For backward compatibility,0xAARRGGBBformat values are allowed, butAAis ignored and the background is always solid. And since a background color of0means no background color, you can specify a black background as0xff000000.clock-format=formatโ sets the panel clock format (string). Can benone,minutes,seconds,minutes-24h,seconds-24h. By default, theminutesformat is used.panel-color=0xAARRGGBBโ sets the color of the panel (unsigned integer). The hexadecimal digit pairs go 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 betop,bottom,left,right,none.locking=trueโ enables screen locking (boolean).animation=zoomโ sets the effect used for opening new windows (string). Can bezoom,fade,none. By default, no animation is used.close-animation=fadeโ sets the effect used when closing windows (string). Can befade,none. By default, thefadeanimation is used.startup-animation=fadeโ sets the effect used by desktop-shell when starting up (string). Can befade,none. By default, thefadeanimation is used.focus-animation=dim-layerโ sets the effect used with the focused and unfocused windows. Can bedim-layer,none. By default, no animation is used.allow-zap=trueโ whether the shell should quit when theCtrl-Alt-Backspacekey combination is pressed. ๐disallow-output-changed-move=falseโ whether the shell should move a client's window to a different/another output than the one assigned initially, when that original one is no longer available / enabled / plugged in.binding-modifier=ctrlโ sets the modifier key used for common bindings (string), like moving surfaces, resizing, rotating, switching, closing, and setting the transparency for windows, controlling the backlight, and zooming the desktop. Peepweston-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).lua-script=scriptโ sets the Lua script which will be interpreted and executed when starting the lua-shell. The path can be either absolute, or relative using the current working directory.
๐ LAUNCHER SECTION ๐
There can be multiple launcher sections โ one for each launcher. Go off. ๐
icon=iconโ sets the path to the icon image (string). Just so you know, 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's run when you click this launcher (string). You can pass arguments and environment variables to the program, like so:
path=GDK_BACKEND=wayland gnome-terminal --full-screen
โจ OUTPUT SECTION โจ
okay so bestie, there can be multiple output sections, each one matching a single output. Right now it's only recognized by the drm and x11 backends. lowkey iconic. ๐
name=nameโ sets a name for the output (string). The backend uses the name to identify the output. All X11 output names start with the letterX. All Wayland output names start with the lettersWL. 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). Themodeparameter is handled differently depending on the backend. On the X11 backend, it just sets theWIDTHxHEIGHTof 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). Thetransformkey 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 flippedflipped-rotate-90โ Flipped and 90 degrees clockwiseflipped-rotate-180โ Flipped and upside downflipped-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. no cap, this is the glow-up your tiny apps need. ๐
icc_profile=fileโ If optioncolor-managementistrue, 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. ๐color-profile=nameโ Color profiles describe how the display is assumed to behave. Knowing the display color behavior, Weston can adapt window contents to produce the presumed appearance. The optioncolor-managementmust be set totruefor this to work. This works only on DRM, headless, wayland, and x11 backends, and for remoting and pipewire outputs. Ificc_profileis also set, that is used instead.
This key creates a parametric profile to be used as the output color profile. The profile can be created from parameters recorded in a color-profile section by referring to it by its name value. Alternatively this key can use one of the special profile names that contain a colon (:).
The default is color-profile=auto:. periodt.
The following special names are accepted:
srgb:โ Creates a parametric sRGB color profile (gamma 2.2).auto:[flags...]โ Creates an automatic parametric color profile.
Automatic parametric color profiles are created based on the eotf-mode and colorimetry-mode configuration keys of the respective output section, and optionally using the monitor reported EDID (DRM-backend only). Multiple flags must be separated by whitespace. The available flags are:
edid-primariesโ Get primaries and white point from EDID ifcolorimetry-modeisdefault. Ignored if EDID does not provide all of them.edid-tfโ Get transfer function from EDID ifeoft-modeissdrorhdr-gamma. The transfer function is the power-law curve with the EDID indicated exponent.edid-drโ Get dynamic range information from EDID ifeotf-modeisst2084.
Examples:
color-profile=srgb:
color-profile=auto:
color-profile=auto:edid-tf edid-dr
color-profile=auto: edid-primaries
color-profile=my-awesome-display
The last example causes Weston to read the color-profile section that has name=my-awesome-display. iykyk.
Notably, setting
eotf-mode=sdr
colorimetry-mode=default
color-profile=auto:
produces the same color profile as color-profile=srgb:. slay, same energy. ๐
color-effect=nameโ Use the given color effect for the output. For now we only provide color effects for color vision deficiencies (CVD). Only works when optioncolor-managementisfalse.
The effect can be one of the following strings:
inversionโ color inversion, i.e. the RGB complementgrayscaleโ convert colors to shades of graydeuteranopiaโ color correction (not simulation) for deuteranopiaprotanopiaโ color correction (not simulation) for protanopiatritanopiaโ color correction (not simulation) for tritanopia
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. main character energy for your multi-monitor setup. ๐allow_hdcp=trueโ Allows HDCP support for this output. If set totrue, 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 bydrm-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 thexdg_shell.set_app_idrequest. Currently, this option is supported bykiosk-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. no cap, if it's not supported, it's giving chaos. ๐ญ
The mode can be one of the following strings:
defaultโ default (RGB) colorimetry, video sink dependantbt2020cyccโ Rec. ITU-R BT.2020 constant luminance YCbCrbt2020yccโ Rec. ITU-R BT.2020 non-constant luminance YCbCrbt2020rgbโ Rec. ITU-R BT.2020 RGBp3d65โ SMPTE ST 2113 DCI-P3 RGB D65p3dciโ SMPTE ST 2113 DCI-P3 RGB Theaterictcpโ 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. lowkey wild, but okay. ๐
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, SDRhdr-gammaโ traditional gamma, HDRst2084โ SMPTE ST 2084, a.k.a Perceptual Quantizerhlgโ Hybrid Log-Gamma (ITU-R BT.2100)
Defaults to sdr. Non-SDR modes require color-management=true.
mirror-of=ouput_nameโ Makes the remote output overlap (mirror) the native output identified by themirror-ofvalue. 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).
vrr-mode=modeโ Sets the variable refresh rate mode of the display. The mode can be one of the following strings:noneโ variable refresh rate is disabledgameโ game variable refresh rate
Defaults to "none". fr fr, keep it smooth. ๐
underscan=typeโ okay so SOME displays are out here scaling up the signal they get, which shoves framebuffer content right off the edges of the screen ๐ญ This is a whole throw-back to analog CRTs and broadcast video, where auxiliary signals sometimes leaked into the visible region. Receivers just applied a random scale factor to everything so that aux signal got hidden past the borders. And some modern displays STILL do overscan, with literally no way to turn it off, which means the edges of weston's content end up outside the viewable area. Rude.
This option โ if the driver supports it โ tells the driver to scale the content down so it compensates for the display's overscan. Lowkey important: the amount of overscan a display uses is not queryable, so you have to manually compensate using the border values in underscan-hborder and underscan-vborder.
The type may be one of these besties:
offโ underscan is disabledonโ underscan is enabledautoโ the display driver may enable underscan
Defaults to off
underscan-hborder=pixelsโ sets the width, in pixels, of the horizontal borders used on the left and right edges of the screen if underscan is enabled. Default is0.underscan-vborder=pixelsโ sets the height, in pixels, of the vertical borders used on the top and bottom edges of the screen if underscan is enabled. Default is0.color-format=formatโ forces a specific color-format to be generated by the display driver ๐จ
auto auto - driver-dependant color format (usually fallback to RGB)
rgb RGB color format
yuv444 YUV color format with no subsampling
yuv422 YUV color format with 4:2:2 subsampling
yuv420 YUV color format with 4:2:0 subsampling
Defaults to "auto". And if the color format you specified isn't found, it fallbacks to "auto" โ no drama, it just moves on. Note that this depends both on the supported color formats by the display driver AND on the color formats supported by the sink/output. Weston will print out the supported color formats which could be used on a particular output. Slay, it tells you.
โจ INPUT-METHOD SECTION โจ
path=/usr/libexec/weston-keyboardโ sets the path of the on screen keyboard input method (string). And bestie, you CAN pass arguments and environment variables to the program, like for example'ENVFOO=bar ENVBAR=baz /path/to/program --arg anotherarg', with entries that are space-separated โ but heads up, there's no support for quoting. ๐overlay-keyboard=falseโ setsweston-keyboardas 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 inxkeyboard-config(7).keymap_layout=us,de,gbโ sets the comma separated list of keyboard layout codes (string). See the Layouts section inxkeyboard-config(7).keymap_variant=euro,,intlโ sets the comma separated list of keyboard layout variants (string). And okay this one matters: the number of variants must be the same as the number of layouts above. See the Layouts section inxkeyboard-config(7).keymap_options=grp:alt_shift_toggle,grp_led:scrollโ sets the keymap options (string). See the Options section inxkeyboard-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 lets you 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. And if the font isn't found, the default one is used โ no worries.font-size=14โ sets the size of the terminal font (unsigned integer).term=xterm-256colorโ the terminal shell (string). Sets the$TERMvariable.
๐ XWAYLAND SECTION ๐
path=/usr/bin/Xwaylandโ sets the path to the xserver to run (string).
๐ 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 tofalseby default.
๐ COLOR-PROFILE SECTION ๐
Okay bestie, this section is where we tell weston what your display actually is in color-nerd terms ๐
. Each color-profile section records one set of basic display color characterisation parameters. Some of those parameters get bundled into groups, and here's the rule: each group must be given either fully or not at all โ no half-sending a group, that's giving chaotic energy and it won't work ๐.
For a section to even be usable, it must contain at least the signaling primaries (so either the Signaling primaries group or prim_named) and the transfer function (either tf_named or tf_power). That's the bare minimum, periodt.
Every section must be named with the name key, because that's how other sections reference it. And lowkey important: a color-profile section is just a lil collection of parameter values โ it does nothing on its own. It only has an effect when something else references it. So it's giving backstage, not main character, until it gets called up โจ.
See the output section key color-profile for how to actually pull one of these in.
๐ The keys ๐
name=nameโ An arbitrary name for this section. Pick literally any name you want, as long as it does not contain the colon (:) character. Names with at least one colon are reserved โ those are spoken for, hands off ๐ซ.prim_named=nameโ A standardised set of primaries and white point for signaling. Here are the names that get recognized:srgbโ sRGB (IEC 61966-2-1) and ITU-R BT.709pal_mโ PAL-M (ITU-R BT.470-6)palโ PAL (ITU-R BT.470-6), ITU-R BT.601-7 625-linentscโ NTSC (SMPTE 170M-2004), ITU-R BT.601-7 525-linegeneric_filmโ generic film with color filters using Illuminant C (ITU-T H.273)bt2020โ ITU-R BT.2020 and BT.2100cie1931_xyzโ CIE 1931 XYZ (ITU-T H.273)dci_p3โ DCI P3 (SMPTE RP 431-2)display_p3โ Apple Display P3, SMPTE EG 432-1adobe_rgbโ Adobe RGB (ISO 12640)
It's mutually exclusive with the Signaling primaries group, which is the other way to define custom primaries and white point. Pick one lane, bestie ๐ฃ๏ธ.
target_named=nameโ A standardised set of primaries and white point for the targeted color volume. It recognizes the same set of names asprim_named๐ (yes, all ten, same vibes).
It's mutually exclusive with the Target primaries group, which is where you'd define custom primaries and white point instead.
tf_named=nameโ A standard transfer function or characteristic. The recognized names:bt1886โ Rec. ITU-R BT.1886 display transfer characteristic. Defaults tomin_lum=0.01.ref_lum=100,max_lum=100.gamma22โ Assumed display gamma 2.2 transfer function. An sRGB display (IEC 61966-2-1) uses this transfer function.gamma28โ Assumed display gamma 2.8 transfer function.st240โ SMPTE ST 240 (1999)st428โ SMPTE ST 428-1 (2019)st2084โ SMPTE ST 2084 Perceptual Quantizer (PQ) transfer characteristic. Defaults tomin_lum=0.005,ref_lum=203.linearโ Linear transfer function defined over all real numbers. Normalised electrical values are equal the normalised optical values.log100โ Logarithmic transfer characteristic (100:1 range).log316โ Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range).xvyccโ IEC 61966-2-4hlgโ Rec. ITU-R BT.2100 HLG transfer characteristic. Defaults tomin_lum=0.005,ref_lum=203,max_lum=1000.
Unless it says otherwise up there โ๏ธ, the default signaling luminance values are min_lum=0.2, ref_lum=80, max_lum=80. (Peep the Signaling luminances group for the deets.)
Mutually exclusive with tf_power โ one or the other, never both ๐.
tf_power=Eโ Mutually exclusive withtf_named. Sets the transfer function as a power-law curve with the given exponentE, which is a real number in the range[1.0, 10.0]. Defaults tomin_lum=0.2,ref_lum=80,max_lum=80.max_fall=Lโ Displays desired maximum frame-average light levelLcd/mยฒ. Undefined when not set.max_cll=Lโ Display's maximum content light levelLcd/mยฒ. Undefined when not set.
๐ Signaling primaries group ๐
prim_red=x yprim_green=x yprim_blue=x yprim_white=x y
The signaling primaries group defines the primaries and the white point used for encoding tristimulus into RGB values โ aka the primary color volume ๐จ. The x and y are the CIE 1931 2-degree observer chromaticity coordinates, and the values must be in the range [-1.0, 2.0].
If you want an easier way to define standard primaries, go look at prim_named, which is mutually exclusive with the signaling primaries group. Choose your fighter ๐
.
๐ธ Signaling luminances group ๐ธ
min_lum=Lminref_lum=Lrefmax_lum=Lmax
So LminโLmax is the dynamic range of the display corresponding to 0%โ100% signal levels. For the tf_named=st2084 setting, the Lmax value gets overwritten with 10'000 + Lmin (not a typo, that apostrophe is a thousands separator, she's fancy โจ).
Lref is the reference luminance level to which all application contents are matched โ also known as the graphics white luminance or the standard dynamic range peak luminance. All values are positive real numbers in cd/mยฒ. Lmin can also be zero. And Lmin must be less than Lref and Lmax โ respect the hierarchy, queen ๐.
When not set, the default values depend on the transfer function or characteristic you chose.
๐ฆ Target primaries group ๐ฆ
target_red=x ytarget_green=x ytarget_blue=x ytarget_white=x y
The target color volume is similar to the Mastering Display Color Volume (MDCV), in that any encoded stimulus outside of it has an undefined presentation ๐ซ . This is especially useful with a display that uses a wide gamut signal encoding (e.g. BT.2020) but can only produce a subset of that color gamut. The x and y are the CIE 1931 2-degree observer chromaticity coordinates, values in the range [-1.0, 2.0].
When not set, it defaults to the primary color volume.
For an easier way to define standard targets, see target_named, which is mutually exclusive with the target primaries group.
โญ Target luminances group โญ
target_min_lum=Lmintarget_max_lum=Lmax
Luminance range of the target color volume. Lmin and Lmax are positive real numbers in cd/mยฒ. Lmin may also be zero, and it must be less than Lmax.
When not set, it defaults to the signaling luminance range.
๐ SEE ALSO ๐
weston(1), weston-bindings(7), weston-drm(7), xkeyboard-config(7)
okay bestie that's the whole page, we ate and left no crumbs ๐
โจ this was Weston 16.0.0, dated 2026-01-30 โ yes ma'am, fresh, and you found all of it in weston.ini(5) ๐ go forth and configure, you've got this fr fr ๐ซถ๐
๐ฆ where this page comes from
- ubuntu stonking: weston 16.0.0-1 ยท MIT
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms