summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornerdopolis <bluescreen_avenger@verizon.net>2018-06-29 08:17:46 -0400
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2018-07-02 15:29:38 +0300
commitb16c4ac55bf795d65d42e907ab11219dd652307a (patch)
tree10da93e510f0d2c8fa50ef519ca67d1fb51b7b64
parentefdebbc4e82b2b43318383c5959d82fdb0dd5840 (diff)
downloadweston-b16c4ac55bf795d65d42e907ab11219dd652307a.tar.gz
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>
-rw-r--r--compositor/main.c2
-rw-r--r--libweston/compositor-drm.c11
-rw-r--r--libweston/compositor-drm.h3
-rw-r--r--man/weston-drm.man7
4 files changed, 16 insertions, 7 deletions
diff --git a/compositor/main.c b/compositor/main.c
index 147485e5..04d8ff01 100644
--- a/compositor/main.c
+++ b/compositor/main.c
@@ -513,7 +513,7 @@ usage(int error_code)
#if defined(BUILD_DRM_COMPOSITOR)
fprintf(out,
"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"
" --drm-device=CARD\tThe DRM device to use, e.g. \"card0\".\n"
" --use-pixman\t\tUse the pixman (CPU) renderer\n"
diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
index 8b1ea66d..4a352132 100644
--- a/libweston/compositor-drm.c
+++ b/libweston/compositor-drm.c
@@ -6029,8 +6029,16 @@ drm_backend_create(struct weston_compositor *compositor,
struct udev_device *drm_device;
struct wl_event_loop *loop;
const char *seat_id = default_seat;
+ const char *session_seat;
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");
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)
goto err_compositor;
- if (config->seat_id)
- seat_id = config->seat_id;
-
/* Check if we run drm-backend using weston-launch */
compositor->launcher = weston_launcher_connect(compositor, config->tty,
seat_id, true);
diff --git a/libweston/compositor-drm.h b/libweston/compositor-drm.h
index 53222293..9c37c153 100644
--- a/libweston/compositor-drm.h
+++ b/libweston/compositor-drm.h
@@ -106,7 +106,8 @@ struct weston_drm_backend_config {
/** 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
* backend destruction.
*/
diff --git a/man/weston-drm.man b/man/weston-drm.man
index 6988eb6a..ae794423 100644
--- a/man/weston-drm.man
+++ b/man/weston-drm.man
@@ -125,8 +125,8 @@ status. For example, use
\fB\-\-seat\fR=\fIseatid\fR
Use graphics and input devices designated for seat
.I seatid
-instead of the default seat
-.BR seat0 .
+instead of the seat defined in the environment variable
+.BR XDG_SEAT ". If neither is specifed, seat0 will be assumed."
.TP
\fB\-\-tty\fR=\fIx\fR
Launch Weston on tty
@@ -153,6 +153,9 @@ The file descriptor (integer) where
.B weston-launch
is listening. Automatically set by
.BR weston-launch .
+.TP
+.B XDG_SEAT
+The seat Weston will start on, unless overridden on the command line.
.
.\" ***************************************************************
.SH "SEE ALSO"