libweston: set the seat automatically based on the XDG_SEAT environment variable

This will allow the seat to be set by the environment as pam_systemd typically
sets the XDG_SEAT variable

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
dev
nerdopolis 7 years ago committed by Pekka Paalanen
parent efdebbc4e8
commit b16c4ac55b
  1. 2
      compositor/main.c
  2. 11
      libweston/compositor-drm.c
  3. 3
      libweston/compositor-drm.h
  4. 7
      man/weston-drm.man

@ -513,7 +513,7 @@ usage(int error_code)
#if defined(BUILD_DRM_COMPOSITOR) #if defined(BUILD_DRM_COMPOSITOR)
fprintf(out, fprintf(out,
"Options for drm-backend.so:\n\n" "Options for drm-backend.so:\n\n"
" --seat=SEAT\t\tThe seat that weston should run on\n" " --seat=SEAT\t\tThe seat that weston should run on, instead of the seat defined in XDG_SEAT\n"
" --tty=TTY\t\tThe tty to use\n" " --tty=TTY\t\tThe tty to use\n"
" --drm-device=CARD\tThe DRM device to use, e.g. \"card0\".\n" " --drm-device=CARD\tThe DRM device to use, e.g. \"card0\".\n"
" --use-pixman\t\tUse the pixman (CPU) renderer\n" " --use-pixman\t\tUse the pixman (CPU) renderer\n"

@ -6029,8 +6029,16 @@ drm_backend_create(struct weston_compositor *compositor,
struct udev_device *drm_device; struct udev_device *drm_device;
struct wl_event_loop *loop; struct wl_event_loop *loop;
const char *seat_id = default_seat; const char *seat_id = default_seat;
const char *session_seat;
int ret; int ret;
session_seat = getenv("XDG_SEAT");
if (session_seat)
seat_id = session_seat;
if (config->seat_id)
seat_id = config->seat_id;
weston_log("initializing drm backend\n"); weston_log("initializing drm backend\n");
b = zalloc(sizeof *b); b = zalloc(sizeof *b);
@ -6062,9 +6070,6 @@ drm_backend_create(struct weston_compositor *compositor,
if (parse_gbm_format(config->gbm_format, GBM_FORMAT_XRGB8888, &b->gbm_format) < 0) if (parse_gbm_format(config->gbm_format, GBM_FORMAT_XRGB8888, &b->gbm_format) < 0)
goto err_compositor; goto err_compositor;
if (config->seat_id)
seat_id = config->seat_id;
/* Check if we run drm-backend using weston-launch */ /* Check if we run drm-backend using weston-launch */
compositor->launcher = weston_launcher_connect(compositor, config->tty, compositor->launcher = weston_launcher_connect(compositor, config->tty,
seat_id, true); seat_id, true);

@ -106,7 +106,8 @@ struct weston_drm_backend_config {
/** The seat to be used for input and output. /** The seat to be used for input and output.
* *
* If NULL the default "seat0" will be used. The backend will * If seat_id is NULL, the seat is taken from XDG_SEAT environment
* variable. If neither is set, "seat0" is used. The backend will
* take ownership of the seat_id pointer and will free it on * take ownership of the seat_id pointer and will free it on
* backend destruction. * backend destruction.
*/ */

@ -125,8 +125,8 @@ status. For example, use
\fB\-\-seat\fR=\fIseatid\fR \fB\-\-seat\fR=\fIseatid\fR
Use graphics and input devices designated for seat Use graphics and input devices designated for seat
.I seatid .I seatid
instead of the default seat instead of the seat defined in the environment variable
.BR seat0 . .BR XDG_SEAT ". If neither is specifed, seat0 will be assumed."
.TP .TP
\fB\-\-tty\fR=\fIx\fR \fB\-\-tty\fR=\fIx\fR
Launch Weston on tty Launch Weston on tty
@ -153,6 +153,9 @@ The file descriptor (integer) where
.B weston-launch .B weston-launch
is listening. Automatically set by is listening. Automatically set by
.BR weston-launch . .BR weston-launch .
.TP
.B XDG_SEAT
The seat Weston will start on, unless overridden on the command line.
. .
.\" *************************************************************** .\" ***************************************************************
.SH "SEE ALSO" .SH "SEE ALSO"

Loading…
Cancel
Save