man weston
WESTON(1) General Commands Manual WESTON(1)
NAME
weston - the reference Wayland server
SYNOPSIS
weston
DESCRIPTION
weston is the reference implementation of a Wayland server. A Wayland server is a display server, a window manager, and a compositor all in one. Weston has several backends as loadable mod‐
ules: it can run on Linux KMS (kernel modesetting via DRM), as an X client, or inside another Wayland server instance.
Weston supports fundamentally different graphical user interface paradigms via shell plugins. Two plugins are provided: the desktop shell, and the tablet shell.
When weston is started as the first windowing system (i.e. not under X nor under another Wayland server), it should be done with the command weston-launch to set up proper privileged access
to devices. If your system supports the logind D-Bus API and the support has been built into weston as well, it is possible to start weston with just weston.
Weston also supports X clients via XWayland, see below.
BACKENDS
drm-backend.so
The DRM backend uses Linux KMS for output and evdev devices for input. It supports multiple monitors in a unified desktop with DPMS. See weston-drm(7), if installed.
wayland-backend.so
The Wayland backend runs on another Wayland server, a different Weston instance, for example. Weston shows up as a single desktop window on the parent server.
x11-backend.so
The X11 backend runs on an X server. Each Weston output becomes an X window. This is a cheap way to test multi-monitor support of a Wayland shell, desktop, or applications.
rdp-backend.so
The RDP backend runs in memory without the need of graphical hardware. Access to the desktop is done by using the RDP protocol. Each connecting client has its own seat making it a
cheap way to test multi-seat support. See weston-rdp(7), if installed.
SHELLS
Each of these shells have its own public protocol interface for clients. This means that a client must be specifically written for a shell protocol, otherwise it will not work.
Desktop shell
Desktop shell is like a modern X desktop environment, concentrating on traditional keyboard and mouse user interfaces and the familiar desktop-like window management. Desktop shell
consists of the shell plugin desktop-shell.so and the special client weston-desktop-shell which provides the wallpaper, panel, and screen locking dialog.
Fullscreen shell
Fullscreen shell is intended for a client that needs to take over whole outputs, often all outputs. This is primarily intended for running another compositor on Weston. The other com‐
positor does not need to handle any platform-specifics like DRM/KMS or evdev/libinput. The shell consists only of the shell plugin fullscreen-shell.so.
IVI-shell
In-vehicle infotainment shell is a special purpose shell that exposes a GENIVI Layer Manager compatible API to controller modules, and a very simple shell protocol towards clients.
IVI-shell starts with loading ivi-shell.so, and then a controller module which may launch helper clients.
XWAYLAND
XWayland requires a special X.org server to be installed. This X server will connect to a Wayland server as a Wayland client, and X clients will connect to the X server. XWayland provides
backwards compatibility to X applications in a Wayland stack.
XWayland is activated by instructing weston to load the XWayland module, see EXAMPLES. Weston starts listening on a new X display socket, and exports it in the environment variable DISPLAY.
When the first X client connects, Weston launches a special X server as a Wayland client to handle the X client and all future X clients.
It has also its own X window manager where cursor themes and sizes can be chosen using XCURSOR_PATH and XCURSOR_SIZE environment variables. See ENVIRONMENT.
OPTIONS
Weston core options:
-Bbackend.so, --backend=backend.so
Load backend.so instead of the default backend. The file is searched for in /home/maze/Wayland/install/lib/x86_64-linux-gnu/weston, or you can pass an absolute path. The default back‐
end is drm-backend.so unless the environment suggests otherwise, see DISPLAY and WAYLAND_DISPLAY.
-cconfig.ini, --config=config.ini
Load config.ini instead of weston.ini. The argument can also be an absolute path starting with a /. If the path is not absolute, it will be searched in the normal config paths, see
weston.ini(5). If also --no-config is given, no configuration file will be read.
--debug
Enable debug protocol extension weston_debug_v1 which any client can use to receive debugging messages from the compositor.
WARNING: This is risky for two reasons. First, a client may cause a denial-of-service blocking the compositor by providing an unsuitable file descriptor, and second, the debug mes‐
sages may expose sensitive information. Additionally this will expose weston-screenshooter interface allowing the user to take screenshots of the outputs using weston-screenshooter
application, which can lead to silently leaking the output contents. This option should not be used in production.
-lscope1,scope2, --logger-scopes=scope1,scope2
Specify to which log scopes should subscribe to. When no scopes are supplied, the log "log" scope will be subscribed by default. Useful to control which streams to write data into the
logger and can be helpful in diagnosing early start-up code.
-fscope1,scope2, --flight-rec-scopes=scope1,scope2
Specify to which scopes should subscribe to. Useful to control which streams to write data into the flight recorder. Flight recorder has limited space, once the flight recorder is
full new data will overwrite the old data. Without any scopes specified, it subscribes to 'log' and 'drm-backend' scopes.
--version
Print the program version.
-h, --help
Print a summary of command line options, and quit.
-iN, --idle-time=N
Set the idle timeout to N seconds. The default timeout is 300 seconds. When there has not been any user input for the idle timeout, Weston enters an inactive mode. The screen fades to
black, monitors may switch off, and the shell may lock the session. A value of 0 effectively disables the timeout.
--log=file.log
Append log messages to the file file.log instead of writing them to stderr.
--xwayland
Ask Weston to load the XWayland module.
--modules=module1.so,module2.so
Load the comma-separated list of modules. Only used by the test suite. The file is searched for in /home/maze/Wayland/install/lib/x86_64-linux-gnu/weston, or you can pass an absolute
path.
--no-config
Do not read weston.ini for the compositor. Avoids e.g. loading compositor modules via the configuration file, which is useful for unit tests.
-Sname, --socket=name
Weston will listen in the Wayland socket called name. Weston will export WAYLAND_DISPLAY with this value in the environment for all child processes to allow them to connect to the
right server automatically.
--wait-for-debugger
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. There is also a weston.ini option to do the same.
DRM backend options:
See weston-drm(7).
Wayland backend options:
--display=display
Name of the Wayland display to connect to, see also WAYLAND_DISPLAY of the environment.
--fullscreen
Create a single fullscreen output
--output-count=N
Create N Wayland windows to emulate the same number of outputs.
--width=W, --height=H
Make all outputs have a size of WxH pixels.
--scale=N
Give all outputs a scale factor of N.
--use-pixman
Use the pixman renderer. By default, weston will try to use EGL and GLES2 for rendering and will fall back to the pixman-based renderer for software compositing if EGL cannot be
used. Passing this option will force weston to use the pixman renderer.
X11 backend options:
--fullscreen
--no-input
Do not provide any input devices. Used for testing input-less Weston.
--output-count=N
Create N X windows to emulate the same number of outputs.
--width=W, --height=H
Make the default size of each X window WxH pixels.
--scale=N
Give all outputs a scale factor of N.
--use-pixman
Use the pixman renderer. By default weston will try to use EGL and GLES2 for rendering. Passing this option will make weston use the pixman library for software compsiting.
RDP backend options:
See weston-rdp(7).
FILES
If the environment variable is set, the configuration file is read from the respective path.
$XDG_CONFIG_HOME/weston.ini
$HOME/.config/weston.ini
ENVIRONMENT
DISPLAY
The X display. If DISPLAY is set, and WAYLAND_DISPLAY is not set, the default backend becomes x11-backend.so.
WAYLAND_DEBUG
If set to any value, causes libwayland to print the live protocol to stderr.
WAYLAND_DISPLAY
The name of the display (socket) of an already running Wayland server, without the path. The directory path is always taken from XDG_RUNTIME_DIR. If WAYLAND_DISPLAY is not set, the
socket name is "wayland-0".
If WAYLAND_DISPLAY is already set, the default backend becomes wayland-backend.so. This allows launching Weston as a nested server.
WAYLAND_SOCKET
For Wayland clients, holds the file descriptor of an open local socket to a Wayland server.
WESTON_CONFIG_FILE
Weston sets this variable to the absolute path of the configuration file it loads, or to the empty string if no file is used. Programs that use weston.ini will read the file specified
by this variable instead, or do not read any file if it is empty. Unset variable causes falling back to the default name weston.ini.
XCURSOR_PATH
Set the list of paths to look for cursors in. It changes both libwayland-cursor and libXcursor, so it affects both Wayland and X11 based clients. See xcursor (3).
XCURSOR_SIZE
This variable can be set for choosing an specific size of cursor. Affect Wayland and X11 clients. See xcursor (3).
XDG_CONFIG_HOME
If set, specifies the directory where to look for weston.ini.
XDG_RUNTIME_DIR
The directory for Weston's socket and lock files. Wayland clients will automatically use this.
BUGS
Bugs should be reported to the freedesktop.org bugzilla at https://bugs.freedesktop.org with product "Wayland" and component "weston".
WWW
http://wayland.freedesktop.org/
EXAMPLES
Launch Weston with the DRM backend on a VT
weston-launch
Launch Weston with the DRM backend and XWayland support
weston-launch -- --xwayland
Launch Weston (wayland-1) nested in another Weston instance (wayland-0)
WAYLAND_DISPLAY=wayland-0 weston -Swayland-1
From an X terminal, launch Weston with the x11 backend
weston
SEE ALSO
weston-bindings(7), weston-debug(1), weston-drm(7), weston-rdp(7), weston.ini(5)
Weston 9.0.90 2019-03-23 WESTON(1)
==========
man weston.ini
weston.ini(5) File Formats Manual 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 con‐
figuration 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
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-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 /home/maze/Wayland/in‐
stall/lib/x86_64-linux-gnu/weston directory are:
desktop-shell.so
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 /home/maze/Wayland/install/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 /home/maze/Wayland/install/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 com‐
positor 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:
remoting-plugin.so
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.
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 track‐
balls, 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, de‐
faults 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 ap‐
plication 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 syn‐
chronously 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=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. 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).
lockscreen-icon=path
sets the path to lock screen icon image (string). (tablet shell only)
lockscreen=path
sets the path to lock screen background image (string). (tablet shell only)
homescreen=path
sets the path to home screen background image (string). (tablet shell only)
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.
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.
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
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 physi‐
cal 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 appli‐
cations 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.
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 pro‐
tocol. 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.
INPUT-METHOD SECTION
path=/home/maze/Wayland/install/libexec/weston-keyboard
sets the path of the on screen keyboard input method (string).
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-con‐
fig(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=/home/maze/Wayland/install/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize
sets the command to start a fullscreen-shell server for screen sharing (string).
SEE ALSO
weston(1), weston-bindings(7), weston-drm(7), xkeyboard-config(7)
Weston 9.0.90 2019-03-26 weston.ini(5)
man weston-drm
WESTON-DRM(7) Miscellaneous Information Manual WESTON-DRM(7)
NAME
weston-drm - the DRM backend for Weston
SYNOPSIS
weston-launch
weston --backend=drm-backend.so
DESCRIPTION
The DRM backend is the native Weston backend for systems that support the Linux kernel DRM, kernel mode setting (KMS), and evdev input devices. It is the recommended backend for desktop
PCs, and aims to provide the full Wayland experience with the "every frame is perfect" concept. It also relies on the Mesa GBM interface.
With the DRM backend, weston runs without any underlying windowing system. The backend uses the Linux KMS API to detect connected monitors. Monitor hot-plugging is supported. Input devices
are found automatically by udev(7). Compositing happens mainly in GL ES 2, initialized through EGL. It is also possible to take advantage of hardware cursors and overlays, when they exist
and are functional. Full-screen surfaces will be scanned out directly without compositing, when possible. Hardware accelerated clients are supported via EGL.
The backend chooses the DRM graphics device first based on seat id. If seat identifiers are not set, it looks for the graphics device that was used in boot. If that is not found, it finally
chooses the first DRM device returned by udev(7). Combining multiple graphics devices is not supported yet.
The DRM backend relies on weston-launch for managing input device access and DRM master status, so that weston can be run without root privileges. On switching away from the virtual terminal
(VT) hosting Weston, all input devices are closed and the DRM master capability is dropped, so that other servers, including Xorg(1), can run on other VTs. On switching back to Weston's VT,
input devices and DRM master are re-acquired through the parent process weston-launch.
The DRM backend also supports virtual outputs that are transmitted over an RTP session as a series of JPEG images (RTP payload type 26) to a remote client. Virtual outputs are configured in
the remote-output section of weston.ini.
CONFIGURATION
The DRM backend uses the following entries from weston.ini.
Section output
name=connector
The KMS connector name identifying the output, for instance LVDS1.
mode=mode
Specify the video mode for the output. The argument mode can be one of the words off to turn the output off, preferred to use the monitor's preferred video mode, or current to use the
current video mode and avoid a mode switch. It can also be a resolution as:
mode=widthxheight
mode=widthxheight@refresh_rate
Specify a mode with a given refresh-rate measured in Hz.
mode=widthxheight@refresh_rate ratio
Here ratio is Picture Aspect-Ratio which can have values as 4:3, 16:9, 64:27, and 256:135. This resolution-format helps to select a CEA mode, if such a video mode is present in the
mode-list of the output.
CEA defines the timing of a video mode, which is considered as a standard for HDMI spcification and compliance testing. It defines each and every parameter of a video mode, like hac‐
tive, vactive, vfront, vback etc., including aspect-ratio information. For CEA modes, the drm layer, stores this aspect-ratio information in user-mode (drmModeModeInfo) flag bits
19-22. For the non-CEA modes a value of 0 is stored in the aspect-ratio flag bits.
Each CEA-mode is identified by a unique, Video Identification Code (VIC). For example, VIC=4 is 1280x720@60 aspect-ratio 16:9. This mode will be different than a non-CEA mode
1280x720@60 0:0. When the video mode 1280x720@60 0:0 is applied, since its timing doesn't exactly match with the CEA information for VIC=4, it would be treated as a non-CEA mode.
Also, while setting the HDMI-AVI-Inforframe, VIC parameter will be given as '0'. If video mode 1280x720@60 16:9 is applied, its CEA timimgs matches with that of video mode with VIC=4,
so the VIC parameter in HDMI-AVI-Infoframe will be set to 4.
Many a times, an output may have both CEA and non-CEA modes, which are similar in all resepct, differing only in the aspect-ratio. A user can select a CEA mode by giving the aspect-
ratio, along with the other arguments for the mode. By omitting the aspect-ratio, user can specify the non-CEA modes. This helps when certification testing is done, in tests like
7-27, the HDMI-analyzer applies a particular CEA mode, and expects the applied mode to be with exactly same timings, including the aspect-ratio and VIC field.
The resolution can also be a detailed mode line as below.
mode=dotclock hdisp hsyncstart hsyncend htotal vdisp vsyncstart vsyncend vtotal hflag vflag
Use the given detailed mode line as the video mode for this output. The definition is the same as in xorg.conf(5), and cvt(1) can generate detailed mode lines.
transform=transform
Transform for the output, which can be rotated in 90-degree steps and possibly flipped. Possible values are normal, rotate-90, rotate-180, rotate-270, flipped, flipped-rotate-90,
flipped-rotate-180, and flipped-rotate-270.
pixman-shadow=boolean
If using the Pixman-renderer, use shadow framebuffers. Defaults to true.
same-as=name
Make this output (connector) a clone of another. The argument name is the name value of another output section. The referred to output section must exist. When this key is present in
an output section, all other keys have no effect on the configuration.
NOTE: cms-colord plugin does not work correctly with this option. The plugin chooses an arbitrary monitor to load the color profile for, but the profile is applied equally to all
cloned monitors regardless of their properties.
force-on=true
Force the output to be enabled even if the connector is disconnected. Defaults to false. Note that mode=off will override force-on=true. When a connector is disconnected, there is
no EDID information to provide a list of video modes. Therefore a forced output should also have a detailed mode line specified.
Section remote-output
name=name
Specify unique name for the output.
mode=mode
Specify the video mode for the output. The argument mode is a resolution setting, such as:
mode=widthxheight
mode=widthxheight@refresh_rate
If refresh_rate is not specified it will default to a 60Hz.
host=host
Specify the host name or IP Address that the remote output will be transmitted to.
port=port
Specify the port number to transmit the remote output to. Usable port range is 1-65533.
gst-pipeline=pipeline
Specify the gstreamer pipeline. It is necessary that source is appsrc, its name is "src", and sink name is "sink" in pipeline. Ignore port and host configuration if the gst-pipeline
is specified.
OPTIONS
When the DRM backend is loaded, weston will understand the following additional command line options.
--current-mode
By default, use the current video mode of all outputs, instead of switching to the monitor preferred mode.
--drm-device=cardN
Use the DRM device cardN instead of the default heuristics based on seat assignments and boot VGA status. For example, use card0.
--seat=seatid
Use graphics and input devices designated for seat seatid instead of the seat defined in the environment variable XDG_SEAT. If neither is specified, seat0 will be assumed.
--tty=x
Launch Weston on tty x instead of using the current tty.
--continue-without-input
Allow Weston to start without input devices. Used for testing purposes.
ENVIRONMENT
WESTON_LIBINPUT_LOG_PRIORITY
The minimum libinput verbosity level to be printed to Weston's log. Valid values are debug, info, and error. Default is info.
WESTON_TTY_FD
The file descriptor (integer) of the opened tty where weston will run. Set by weston-launch.
WESTON_LAUNCHER_SOCK
The file descriptor (integer) where weston-launch is listening. Automatically set by weston-launch.
XDG_SEAT
The seat Weston will start on, unless overridden on the command line.
SEE ALSO
weston(1)
Weston 9.0.90 2012-11-27 WESTON-DRM(7)
里面的same-as功能值得深究;seatid到底对应什么
--drm-device=cardN实现多个card对应多个weston
man weston-debug
WESTON-DEBUG(1) General Commands Manual WESTON-DEBUG(1)
NAME
weston-debug - a tool for getting debug messages from compositor.
SYNOPSIS
weston-debug [options] [names]
DESCRIPTION
weston-debug is a debugging tool which uses weston_debug_v1 interface to get the debug messages from the compositor. The debug messages are categorized into different debug streams by the
compositor (example: logs, proto, list, etc.,) and the compositor requires a file descriptor to stream the messages.
This tool accepts a file name or a file descriptor (not both) and any desired debug stream names from the user as command line arguments and subscribes the desired streams from the composi‐
tor by using the weston_debug_v1 interface. After the subscription, the compositor will start to write the debug messages to the shared file descriptor.
If no file name or file descriptor argument is given, the tool will use the stdout file descriptor.
OPTIONS
weston-debug accepts the following command line options.
-h, --help
Print the help text and exit with success.
-l, --list
List the available debug streams supported by the compositor. May be used together with --all or a list of debug stream names.
-a, --all
Bind all debug streams offered by the compositor. Mututally exclusive with explicitly specifying stream names.
-o FILE, --output FILE
Direct output to file named FILE. Use - for stdout. Stdout is the default. Mutually exclusive with -f.
-f FD, --outfd FD
Direct output to the file descriptor FD. Stdout (1) is the default. Mutually exclusive with -o.
[names]
A list of debug streams to bind to. Mutually exclusive with --all.
Weston 9.0.90 2018-09-11 WESTON-DEBUG(1)
weston-debug是一个非常非常详细的debug工具,要依赖于weston启动的时候是否开启debug功能。
Weston scene graph at 4876172.824156981:
Output 0 (VGA-1):
position: (0, 0) -> (1920, 975)
mode: 1920x975@59.964Hz
scale: 1
repaint status: no repaint
Head 0 (VGA-1): connected
Layer 0 (pos 0xffffffff):
[no views]
Layer 1 (pos 0xfffffffe):
[no views]
Layer 2 (pos 0xb0000000):
[no views]
Layer 3 (pos 0x80000000):
View 0 (role (null), PID 441375, surface ID 18, panel for output VGA-1, 0x5623c003c630):
position: (0, 0) -> (1920, 32)
[not opaque]
outputs: 0 (VGA-1) (primary)
[buffer not available]
Layer 4 (pos 0x50000001):
[no views]
Layer 5 (pos 0x50000000):
View 0 (role xdg_toplevel, PID 441382, surface ID 16, top-level window 'maze@maze-VirtualBox: ~/Wayland/install/bin', 0x5623c00b65f0):
position: (397, 70) -> (1203, 929)
[not opaque]
outputs: 0 (VGA-1) (primary)
[buffer not available]
Layer 6 (pos 0x2):
View 0 (role (null), PID 441375, surface ID 19, background for output VGA-1, 0x5623c00f2ca0):
position: (0, 0) -> (1920, 975)
[not opaque]
outputs: 0 (VGA-1) (primary)
[buffer not available]
[2021-01-13 19:27:46.813][proto] client 0x5623bfab4830 rq weston_debug_v1@4.subscribe("drm-backend", fd 46, new id weston_debug_stream_v1@8)
[2021-01-13 19:27:46.813][proto] client 0x5623bfab4830 rq weston_debug_v1@4.subscribe("content-protection-debug", fd 47, new id weston_debug_stream_v1@9)
[2021-01-13 19:27:46.813][proto] client 0x5623bfab4830 rq weston_debug_v1@4.destroy()
[2021-01-13 19:27:46.813][proto] client 0x5623bfab4830 ev wl_display@1.delete_id(4)
[2021-01-13 19:27:46.813][proto] client 0x5623bfab4830 rq weston_debug_stream_v1@5.destroy()
[2021-01-13 19:27:46.813][proto] client 0x5623bfab4830 ev wl_display@1.delete_id(5)
[2021-01-13 19:27:46.814][proto] client 0x5623c0049420 rq wl_surface@16.frame(new id wl_callback@23)
[2021-01-13 19:27:46.814][proto] client 0x5623c0049420 rq wl_surface@16.attach(wl_buffer@28, 0, 0)
[2021-01-13 19:27:46.814][proto] client 0x5623c0049420 rq wl_surface@16.damage(0, 0, 806, 859)
[2021-01-13 19:27:46.814][proto] client 0x5623c0049420 rq wl_surface@16.commit()
{ "id":1, "type":"weston_surface", "desc":"top-level window 'maze@maze-VirtualBox: ~/Wayland/install/bin'" }
{ "T":[4876172, 824797508], "N":"core_commit_damage", "ws":1 }
{ "id":2, "type":"weston_output", "name":"VGA-1" }
{ "T":[4876172, 824816554], "N":"core_repaint_req", "wo":2 }
{ "T":[4876172, 824828386], "N":"core_repaint_enter_loop", "wo":2 }
[atomic] applying output 0 (VGA-1) state
[CRTC:33] 23 (MODE_ID) -> 45 (0x2d)
[CRTC:33] 22 (ACTIVE) -> 1 (0x1)
[CONN:35] 20 (CRTC_ID) -> 33 (0x21)
[PLANE:31] 17 (FB_ID) -> 46 (0x2e)
[PLANE:31] 20 (CRTC_ID) -> 33 (0x21)
[PLANE:31] 9 (SRC_X) -> 0 (0x0)
[PLANE:31] 10 (SRC_Y) -> 0 (0x0)
[PLANE:31] 11 (SRC_W) -> 125829120 (0x7800000)
[PLANE:31] 12 (SRC_H) -> 63897600 (0x3cf0000)
[PLANE:31] 13 (CRTC_X) -> 0 (0x0)
[PLANE:31] 14 (CRTC_Y) -> 0 (0x0)
[PLANE:31] 15 (CRTC_W) -> 1920 (0x780)
[PLANE:31] 16 (CRTC_H) -> 975 (0x3cf)
[PLANE:31] FORMAT: XRGB8888
[atomic] drmModeAtomicCommit
[CRTC:33] setting pending flip
[atomic][CRTC:33] flip processing started
{ "T":[4876172, 825052396], "N":"core_repaint_finished", "wo":2, "vblank_monotonic":[4876172, 825017000] }
[atomic][CRTC:33] flip processing completed
[repaint] Beginning repaint; pending_state 0x5623c004a6a0
Weston scene graph at 4876172.834122804:
Output 0 (VGA-1):
position: (0, 0) -> (1920, 975)
mode: 1920x975@59.964Hz
scale: 1
repaint status: repaint scheduled
next repaint: 4876172.834693672
Head 0 (VGA-1): connected
Layer 0 (pos 0xffffffff):
[no views]
Layer 1 (pos 0xfffffffe):
[no views]
Layer 2 (pos 0xb0000000):
[no views]
Layer 3 (pos 0x80000000):
View 0 (role (null), PID 441375, surface ID 18, panel for output VGA-1, 0x5623c003c630):
position: (0, 0) -> (1920, 32)
[not opaque]
outputs: 0 (VGA-1) (primary)
[buffer not available]
Layer 4 (pos 0x50000001):
[no views]
Layer 5 (pos 0x50000000):
View 0 (role xdg_toplevel, PID 441382, surface ID 16, top-level window 'maze@maze-VirtualBox: ~/Wayland/install/bin', 0x5623c00b65f0):
position: (397, 70) -> (1203, 929)
[not opaque]
outputs: 0 (VGA-1) (primary)
SHM buffer
format: 0x0 ARGB8888
Layer 6 (pos 0x2):
View 0 (role (null), PID 441375, surface ID 19, background for output VGA-1, 0x5623c00f2ca0):
position: (0, 0) -> (1920, 975)
[not opaque]
outputs: 0 (VGA-1) (primary)
[buffer not available]
{ "T":[4876172, 834166720], "N":"core_repaint_begin", "wo":2 }
[repaint] preparing state for output VGA-1 (0)
[repaint] trying planes-only build state
[view] evaluating view 0x5623c003c630 for output VGA-1 (0)
[view] not assigning view 0x5623c003c630 to plane (no buffer available)
[view] failing state generation: placing view 0x5623c003c630 to renderer not allowed
[repaint] could not build planes-only state, trying mixed
[state] using renderer FB ID 46 for mixed mode for output VGA-1 (0)
[state] scanout will use for zpos 0
[view] evaluating view 0x5623c003c630 for output VGA-1 (0)
[view] not assigning view 0x5623c003c630 to plane (no buffer available)
[view] view 0x5623c003c630 will be placed on the renderer
[view] evaluating view 0x5623c00b65f0 for output VGA-1 (0)
[plane] started with zpos 18446744073709551615
[plane] plane 32 added to candidate list
[plane] not adding plane 31 to candidate list: view already assigned to a plane
[plane] plane 32 picked from candidate list, type: cursor
[cursor] not assigning view 0x5623c00b65f0 to cursor plane (positioning requires cropping or scaling)
[view] view 0x5623c00b65f0 will be placed on the renderer
[view] evaluating view 0x5623c00f2ca0 for output VGA-1 (0)
[view] not assigning view 0x5623c00f2ca0 to plane (no buffer available)
[view] not assigning view 0x5623c00f2ca0 to plane (occluded by renderer views)
[view] view 0x5623c00f2ca0 will be placed on the renderer
[atomic] testing output 0 (VGA-1) state
[CRTC:33] 23 (MODE_ID) -> 45 (0x2d)
[CRTC:33] 22 (ACTIVE) -> 1 (0x1)
[CONN:35] 20 (CRTC_ID) -> 33 (0x21)
[PLANE:31] 17 (FB_ID) -> 46 (0x2e)
[PLANE:31] 20 (CRTC_ID) -> 33 (0x21)
[PLANE:31] 9 (SRC_X) -> 0 (0x0)
[PLANE:31] 10 (SRC_Y) -> 0 (0x0)
[PLANE:31] 11 (SRC_W) -> 125829120 (0x7800000)
[PLANE:31] 12 (SRC_H) -> 63897600 (0x3cf0000)
[PLANE:31] 13 (CRTC_X) -> 0 (0x0)
[PLANE:31] 14 (CRTC_Y) -> 0 (0x0)
[PLANE:31] 15 (CRTC_W) -> 1920 (0x780)
[PLANE:31] 16 (CRTC_H) -> 975 (0x3cf)
[PLANE:31] FORMAT: XRGB8888
[atomic] drmModeAtomicCommit
[repaint] Using mixed state composition
[repaint] view 0x5623c003c630 using renderer composition
[repaint] view 0x5623c00b65f0 using renderer composition
[repaint] view 0x5623c00f2ca0 using renderer composition
{ "T":[4876172, 834611643], "N":"core_flush_damage", "ws":1, "wo":2 }
[2021-01-13 19:27:46.824][proto] client 0x5623c0049420 ev wl_buffer@28.release()
[2021-01-13 19:27:46.831][proto] client 0x5623c0049420 ev wl_callback@23.done(581205529)
[2021-01-13 19:27:46.831][proto] client 0x5623c0049420 ev wl_display@1.delete_id(23)
{ "T":[4876172, 841675375], "N":"core_repaint_posted", "wo":2 }
[atomic] applying output 0 (VGA-1) state
[CRTC:33] 23 (MODE_ID) -> 45 (0x2d)
[CRTC:33] 22 (ACTIVE) -> 1 (0x1)
[CONN:35] 20 (CRTC_ID) -> 33 (0x21)
[PLANE:31] 17 (FB_ID) -> 44 (0x2c)
[PLANE:31] 20 (CRTC_ID) -> 33 (0x21)
[PLANE:31] 9 (SRC_X) -> 0 (0x0)
[PLANE:31] 10 (SRC_Y) -> 0 (0x0)
[PLANE:31] 11 (SRC_W) -> 125829120 (0x7800000)
[PLANE:31] 12 (SRC_H) -> 63897600 (0x3cf0000)
[PLANE:31] 13 (CRTC_X) -> 0 (0x0)
[PLANE:31] 14 (CRTC_Y) -> 0 (0x0)
[PLANE:31] 15 (CRTC_W) -> 1920 (0x780)
[PLANE:31] 16 (CRTC_H) -> 975 (0x3cf)
[PLANE:31] FORMAT: XRGB8888
[atomic] drmModeAtomicCommit
[CRTC:33] setting pending flip
[repaint] flushed pending_state 0x5623c004a6a0
[atomic][CRTC:33] flip processing started
{ "T":[4876172, 841982869], "N":"core_repaint_finished", "wo":2, "vblank_monotonic":[4876172, 841897000] }
[atomic][CRTC:33] flip processing completed
[repaint] Beginning repaint; pending_state 0x5623bfa81f10
Weston scene graph at 4876172.851671100:
Output 0 (VGA-1):
position: (0, 0) -> (1920, 975)
mode: 1920x975@59.964Hz
scale: 1
repaint status: repaint scheduled
next repaint: 4876172.851573672
Head 0 (VGA-1): connected
Layer 0 (pos 0xffffffff):
[no views]
Layer 1 (pos 0xfffffffe):
[no views]
Layer 2 (pos 0xb0000000):
[no views]
Layer 3 (pos 0x80000000):
View 0 (role (null), PID 441375, surface ID 18, panel for output VGA-1, 0x5623c003c630):
position: (0, 0) -> (1920, 32)
[not opaque]
outputs: 0 (VGA-1) (primary)
[buffer not available]
Layer 4 (pos 0x50000001):
[no views]
Layer 5 (pos 0x50000000):
View 0 (role xdg_toplevel, PID 441382, surface ID 16, top-level window 'maze@maze-VirtualBox: ~/Wayland/install/bin', 0x5623c00b65f0):
position: (397, 70) -> (1203, 929)
[not opaque]
outputs: 0 (VGA-1) (primary)
[buffer not available]
Layer 6 (pos 0x2):
View 0 (role (null), PID 441375, surface ID 19, background for output VGA-1, 0x5623c00f2ca0):
position: (0, 0) -> (1920, 975)
[not opaque]
outputs: 0 (VGA-1) (primary)
[buffer not available]
{ "T":[4876172, 851712019], "N":"core_repaint_exit_loop", "wo":2 }
[atomic] drmModeAtomicCommit
[repaint] flushed pending_state 0x5623bfa81f10
[2021-01-13 19:27:46.905][proto] client 0x5623c0049420 ev wl_keyboard@19.key(911, 581205620, 28, 0)
[2021-01-13 19:27:47.936][proto] client 0x5623c0049420 ev wl_keyboard@19.key(912, 581206650, 29, 1)
[2021-01-13 19:27:47.936][proto] client 0x5623c0049420 ev wl_keyboard@19.modifiers(912, 4, 0, 0, 0)
[2021-01-13 19:27:48.031][proto] client 0x5623c0049420 ev wl_keyboard@19.key(913, 581206746, 46, 1)
./weston-debug -h
Usage: weston-debug [options] [names]
Where options may be:
-h, --help
This help text, and exit with success.
-l, --list
Print a list of available debug streams to stderr.
-a, --all-streams
Bind to all available streams.
-o FILE, --output FILE
Direct output to file named FILE. Use - for stdout.
Stdout is the default. Mutually exclusive with -f.
-f FD, --outfd FD
Direct output to the file descriptor FD.
Stdout (1) is the default. Mutually exclusive with -o.
Names are whatever debug stream names the compositor supports.
./weston-debug -l
log
scene-graph
timeline
proto
gl-shader-generator
https://fossies.org/dox/all.html //weston源码相关的结构体,强大