diff options
author | Philipp Zabel <philipp.zabel@gmail.com> | 2022-12-05 17:28:23 +0100 |
---|---|---|
committer | Philipp Zabel <p.zabel@pengutronix.de> | 2022-12-08 17:39:12 +0100 |
commit | 84c10124cdb71a913751d60040f3ae0802e28a8e (patch) | |
tree | d17f1bb81d4d7344a85be31df3d87a3ac465459c | |
parent | 06eb28ba6282a34175bcd6e02c302416925386d1 (diff) | |
download | weston-84c10124cdb71a913751d60040f3ae0802e28a8e.tar.gz |
compositor: support loading backend via shortened name
While the --backend parameter looks like it takes a file name, it really
is selected from a list of supported strings that are then funneled
through a translation to enum weston_compositor_backend [1].
Because all backend parameters are of the form "...-backend.so", and
writing "--backend=...-backend.so" is boring, allow the --backend option
to match the backend name without "-backend.so" suffix instead.
For example, this allows to use "--backend=headless" instead of
"--backend=headless-backend.so".
Update help text and documentation. Keep the old way working for
backwards compatibility.
[1] 50dbf385140b ("libweston: use enum to choose the backend")
Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
-rw-r--r-- | compositor/main.c | 48 | ||||
-rw-r--r-- | doc/sphinx/toc/running-weston.rst | 4 | ||||
-rw-r--r-- | man/meson.build | 2 | ||||
-rw-r--r-- | man/weston-drm.man | 2 | ||||
-rw-r--r-- | man/weston-rdp.man | 2 | ||||
-rw-r--r-- | man/weston-vnc.man | 2 | ||||
-rw-r--r-- | man/weston.ini.man | 19 | ||||
-rw-r--r-- | man/weston.man | 26 | ||||
-rw-r--r-- | meson.build | 3 | ||||
-rw-r--r-- | tests/weston-test-fixture-compositor.c | 11 | ||||
-rw-r--r-- | weston.ini.in | 2 |
11 files changed, 64 insertions, 57 deletions
diff --git a/compositor/main.c b/compositor/main.c index de20fc12..49d505c4 100644 --- a/compositor/main.c +++ b/compositor/main.c @@ -645,24 +645,24 @@ usage(int error_code) "Core options:\n\n" " --version\t\tPrint weston version\n" - " -B, --backend=MODULE\tBackend module, one of\n" + " -B, --backend=BACKEND\tBackend module, one of\n" #if defined(BUILD_DRM_COMPOSITOR) - "\t\t\t\tdrm-backend.so\n" + "\t\t\t\tdrm\n" #endif #if defined(BUILD_HEADLESS_COMPOSITOR) - "\t\t\t\theadless-backend.so\n" + "\t\t\t\theadless\n" #endif #if defined(BUILD_RDP_COMPOSITOR) - "\t\t\t\trdp-backend.so\n" + "\t\t\t\trdp\n" #endif #if defined(BUILD_VNC_COMPOSITOR) - "\t\t\t\tvnc-backend.so\n" + "\t\t\t\tvnc\n" #endif #if defined(BUILD_WAYLAND_COMPOSITOR) - "\t\t\t\twayland-backend.so\n" + "\t\t\t\twayland\n" #endif #if defined(BUILD_X11_COMPOSITOR) - "\t\t\t\tx11-backend.so\n" + "\t\t\t\tx11\n" #endif " --shell=MODULE\tShell module, defaults to desktop-shell.so\n" " -S, --socket=NAME\tName of socket to listen on\n" @@ -686,7 +686,7 @@ usage(int error_code) #if defined(BUILD_DRM_COMPOSITOR) fprintf(out, - "Options for drm-backend.so:\n\n" + "Options for drm:\n\n" " --seat=SEAT\t\tThe seat that weston should run on, instead of the seat defined in XDG_SEAT\n" " --drm-device=CARD\tThe DRM device to use, e.g. \"card0\".\n" " --use-pixman\t\tUse the pixman (CPU) renderer\n" @@ -696,7 +696,7 @@ usage(int error_code) #if defined(BUILD_HEADLESS_COMPOSITOR) fprintf(out, - "Options for headless-backend.so:\n\n" + "Options for headless:\n\n" " --width=WIDTH\t\tWidth of memory surface\n" " --height=HEIGHT\tHeight of memory surface\n" " --scale=SCALE\t\tScale factor of output\n" @@ -710,7 +710,7 @@ usage(int error_code) #if defined(BUILD_RDP_COMPOSITOR) fprintf(out, - "Options for rdp-backend.so:\n\n" + "Options for rdp:\n\n" " --width=WIDTH\t\tWidth of desktop\n" " --height=HEIGHT\tHeight of desktop\n" " --env-socket\t\tUse socket defined in RDP_FD env variable as peer connection\n" @@ -726,7 +726,7 @@ usage(int error_code) #if defined(BUILD_VNC_COMPOSITOR) fprintf(out, - "Options for vnc-backend.so:\n\n" + "Options for vnc:\n\n" " --width=WIDTH\t\tWidth of desktop\n" " --height=HEIGHT\tHeight of desktop\n" " --port=PORT\t\tThe port to listen on\n" @@ -737,7 +737,7 @@ usage(int error_code) #if defined(BUILD_WAYLAND_COMPOSITOR) fprintf(out, - "Options for wayland-backend.so:\n\n" + "Options for wayland:\n\n" " --width=WIDTH\t\tWidth of Wayland surface\n" " --height=HEIGHT\tHeight of Wayland surface\n" " --scale=SCALE\t\tScale factor of output\n" @@ -750,7 +750,7 @@ usage(int error_code) #if defined(BUILD_X11_COMPOSITOR) fprintf(out, - "Options for x11-backend.so:\n\n" + "Options for x11:\n\n" " --width=WIDTH\t\tWidth of X window\n" " --height=HEIGHT\tHeight of X window\n" " --scale=SCALE\t\tScale factor of output\n" @@ -1123,9 +1123,9 @@ weston_choose_default_backend(void) char *backend = NULL; if (getenv("WAYLAND_DISPLAY") || getenv("WAYLAND_SOCKET")) - backend = strdup("wayland-backend.so"); + backend = strdup("wayland"); else if (getenv("DISPLAY")) - backend = strdup("x11-backend.so"); + backend = strdup("x11"); else backend = strdup(WESTON_NATIVE_BACKEND); @@ -3452,17 +3452,23 @@ static int load_backend(struct weston_compositor *compositor, const char *backend, int *argc, char **argv, struct weston_config *config) { - if (strstr(backend, "headless-backend.so")) + if (strcmp(backend, "headless") == 0 || + strstr(backend, "headless-backend.so")) return load_headless_backend(compositor, argc, argv, config); - else if (strstr(backend, "rdp-backend.so")) + else if (strcmp(backend, "rdp") == 0 || + strstr(backend, "rdp-backend.so")) return load_rdp_backend(compositor, argc, argv, config); - else if (strstr(backend, "vnc-backend.so")) + else if (strcmp(backend, "vnc") == 0 || + strstr(backend, "vnc-backend.so")) return load_vnc_backend(compositor, argc, argv, config); - else if (strstr(backend, "drm-backend.so")) + else if (strcmp(backend, "drm") == 0 || + strstr(backend, "drm-backend.so")) return load_drm_backend(compositor, argc, argv, config); - else if (strstr(backend, "x11-backend.so")) + else if (strcmp(backend, "x11") == 0 || + strstr(backend, "x11-backend.so")) return load_x11_backend(compositor, argc, argv, config); - else if (strstr(backend, "wayland-backend.so")) + else if (strcmp(backend, "wayland") == 0 || + strstr(backend, "wayland-backend.so")) return load_wayland_backend(compositor, argc, argv, config); weston_log("Error: unknown backend \"%s\"\n", backend); diff --git a/doc/sphinx/toc/running-weston.rst b/doc/sphinx/toc/running-weston.rst index 39e95f1b..7ea3ed00 100644 --- a/doc/sphinx/toc/running-weston.rst +++ b/doc/sphinx/toc/running-weston.rst @@ -14,7 +14,7 @@ Weston on a machine that already has another graphical environment running, being either another wayland compositor (e.g. Weston) or on a X11 server. You should only specify the backend manually if you know that what Weston picks is not the best, or the one you intended to use is different than the one -loaded. In that case, the backend can be selected by using ``-B [backend.so]`` +loaded. In that case, the backend can be selected by using ``-B [backend]`` command line option. As each back-end uses a different way to get input and produce output, it means that the most suitable back-end depends on the environment being used. @@ -173,7 +173,7 @@ Then, weston can be run by selecting the DRM-backend and the seat ``seat-insecur :: - SEATD_VTBOUND=0 ./weston -Bdrm-backend.so --seat=seat-insecure + SEATD_VTBOUND=0 ./weston -Bdrm --seat=seat-insecure This assumes you are using the libseat launcher of Weston with the "builtin" backend of libseat. Libseat automatically falls back to the builtin backend if diff --git a/man/meson.build b/man/meson.build index 5d3b8d8f..aad90dce 100644 --- a/man/meson.build +++ b/man/meson.build @@ -1,5 +1,5 @@ man_conf = configuration_data() -man_conf.set('weston_native_backend', opt_backend_native) +man_conf.set('weston_native_backend', backend_default) man_conf.set('weston_modules_dir', dir_module_weston) man_conf.set('libweston_modules_dir', dir_module_libweston) man_conf.set('weston_shell_client', get_option('desktop-shell-client-default')) diff --git a/man/weston-drm.man b/man/weston-drm.man index 383715d3..ec8f035d 100644 --- a/man/weston-drm.man +++ b/man/weston-drm.man @@ -2,7 +2,7 @@ .SH NAME weston-drm \- the DRM backend for Weston .SH SYNOPSIS -.B weston --backend=drm-backend.so +.B weston --backend=drm . .\" *************************************************************** .SH DESCRIPTION diff --git a/man/weston-rdp.man b/man/weston-rdp.man index a596826f..b2f84afc 100644 --- a/man/weston-rdp.man +++ b/man/weston-rdp.man @@ -2,7 +2,7 @@ .SH NAME weston-rdp \- the RDP backend for Weston .SH SYNOPSIS -.B weston --backend=rdp-backend.so +.B weston --backend=rdp . .\" *************************************************************** .SH DESCRIPTION diff --git a/man/weston-vnc.man b/man/weston-vnc.man index 5232aacb..a4225fda 100644 --- a/man/weston-vnc.man +++ b/man/weston-vnc.man @@ -2,7 +2,7 @@ .SH NAME weston-vnc \- the VNC backend for Weston .SH SYNOPSIS -.B weston --backend=vnc-backend.so +.B weston --backend=vnc . .\" *************************************************************** .SH DESCRIPTION diff --git a/man/weston.ini.man b/man/weston.ini.man index 1cb63f96..9dff1d46 100644 --- a/man/weston.ini.man +++ b/man/weston.ini.man @@ -124,18 +124,17 @@ directory are: .fi .RE .TP 7 -.BI "backend=" headless-backend.so -overrides defaults backend. Available backend modules in the -.IR "@libweston_modules_dir@" -directory are: +.BI "backend=" headless +overrides defaults backend. Available backends are: .PP .RS 10 .nf -.BR drm-backend.so -.BR headless-backend.so -.BR rdp-backend.so -.BR wayland-backend.so -.BR x11-backend.so +.BR drm +.BR headless +.BR rdp +.BR vnc +.BR wayland +.BR x11 .fi .RE .TP 7 @@ -660,7 +659,7 @@ sets the path to the xserver to run (string). .\"--------------------------------------------------------------------- .SH "SCREEN-SHARE SECTION" .TP 7 -.BI "command=" "@weston_bindir@/weston --backend=rdp-backend.so \ +.BI "command=" "@weston_bindir@/weston --backend=rdp \ --shell=fullscreen-shell.so --no-clients-resize --no-config" sets the command to start a fullscreen-shell server for screen sharing (string). .TP 7 diff --git a/man/weston.man b/man/weston.man index 0c6e5c56..e6d839d2 100644 --- a/man/weston.man +++ b/man/weston.man @@ -23,30 +23,30 @@ Weston also supports X clients via .\" *************************************************************** .SH BACKENDS .TP -.I drm-backend.so +.I drm The DRM backend uses Linux KMS for output and evdev devices for input. It supports multiple monitors in a unified desktop with DPMS. See .BR weston-drm (7), if installed. .TP -.I wayland-backend.so +.I wayland 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. .TP -.I x11-backend.so +.I x11 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. .TP -.I rdp-backend.so +.I rdp 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 .BR weston-rdp (7), if installed. .TP -.I vnc-backend.so +.I vnc The VNC backend runs in memory without the need of graphical hardware. Access to the desktop is done by using the RFB protocol. Currently only one connecting client is supported. See @@ -110,12 +110,14 @@ and . .SS Weston core options: .TP -\fB\-\^B\fR\fIbackend.so\fR, \fB\-\-backend\fR=\fIbackend.so\fR +\fB\-\^B\fR\fIbackend\fR, \fB\-\-backend\fR=\fIbackend\fR Load -.I backend.so -instead of the default backend. The file is searched for in -.IR "@weston_modules_dir@" , -or you can pass an absolute path. The default backend is +.I backend +instead of the default backend, see +.IR BACKENDS . +The backend module is searched for in +.IR "@weston_modules_dir@" . +The default backend is .I @weston_native_backend@ unless the environment suggests otherwise, see .IR DISPLAY " and " WAYLAND_DISPLAY . @@ -297,7 +299,7 @@ The X display. If is set, and .B WAYLAND_DISPLAY is not set, the default backend becomes -.IR x11-backend.so . +.IR x11 . .TP .B WAYLAND_DEBUG If set to any value, causes libwayland to print the live protocol @@ -314,7 +316,7 @@ is not set, the socket name is "wayland-0". If .B WAYLAND_DISPLAY is already set, the default backend becomes -.IR wayland-backend.so . +.IR wayland . This allows launching Weston as a nested server. .TP .B WAYLAND_SOCKET diff --git a/meson.build b/meson.build index 237d1058..bf769cf4 100644 --- a/meson.build +++ b/meson.build @@ -124,8 +124,7 @@ if backend_default == 'auto' endif endforeach endif -opt_backend_native = backend_default + '-backend.so' -config_h.set_quoted('WESTON_NATIVE_BACKEND', opt_backend_native) +config_h.set_quoted('WESTON_NATIVE_BACKEND', backend_default) message('The default backend is ' + backend_default) if not get_option('backend-' + backend_default) error('Backend @0@ was chosen as native but is not being built.'.format(backend_default)) diff --git a/tests/weston-test-fixture-compositor.c b/tests/weston-test-fixture-compositor.c index 8e0eb6c5..64046c11 100644 --- a/tests/weston-test-fixture-compositor.c +++ b/tests/weston-test-fixture-compositor.c @@ -206,11 +206,12 @@ static const char * backend_to_str(enum weston_compositor_backend b) { static const char * const names[] = { - [WESTON_BACKEND_DRM] = "drm-backend.so", - [WESTON_BACKEND_HEADLESS] = "headless-backend.so", - [WESTON_BACKEND_RDP] = "rdp-backend.so", - [WESTON_BACKEND_WAYLAND] = "wayland-backend.so", - [WESTON_BACKEND_X11] = "X11-backend.so", + [WESTON_BACKEND_DRM] = "drm", + [WESTON_BACKEND_HEADLESS] = "headless", + [WESTON_BACKEND_RDP] = "rdp", + [WESTON_BACKEND_VNC] = "vnc", + [WESTON_BACKEND_WAYLAND] = "wayland", + [WESTON_BACKEND_X11] = "x11", }; assert(b >= 0 && b < ARRAY_LENGTH(names)); return names[b]; diff --git a/weston.ini.in b/weston.ini.in index bb53f377..e8ba78f4 100644 --- a/weston.ini.in +++ b/weston.ini.in @@ -82,7 +82,7 @@ path=@libexecdir@/weston-keyboard #max_accel_factor = 1.0 [screen-share] -command=@bindir@/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize +command=@bindir@/weston --backend=rdp --shell=fullscreen-shell.so --no-clients-resize #start-on-startup=false #[xwayland] |