diff options
author | Niklas Schulze <me@jns.io> | 2019-03-06 12:46:35 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2019-03-06 13:20:51 +0100 |
commit | 2baad6eba6c7f4edd3bc1ca266503920e9789ad0 (patch) | |
tree | 424cf70b0987a0126719a57854f259f61e4b2c99 | |
parent | a3c31bb875b10cda6e795588ef111d8e17fb83a7 (diff) |
backend/session: Allow setting a custom tty via WLR_DIRECT_TTY
-rw-r--r-- | backend/session/direct.c | 16 | ||||
-rw-r--r-- | docs/env_vars.md | 1 |
2 files changed, 14 insertions, 3 deletions
diff --git a/backend/session/direct.c b/backend/session/direct.c index 7225bff0..c634575a 100644 --- a/backend/session/direct.c +++ b/backend/session/direct.c @@ -155,9 +155,19 @@ static int vt_handler(int signo, void *data) { } static bool setup_tty(struct direct_session *session, struct wl_display *display) { - int fd = open("/dev/tty", O_RDWR | O_CLOEXEC); + + bool default_tty = false; + + const char *tty_path = getenv("WLR_DIRECT_TTY"); + + if (!tty_path) { + tty_path = "/dev/tty"; + default_tty = true; + } + + int fd = open(tty_path, O_RDWR | O_CLOEXEC); if (fd == -1) { - wlr_log_errno(WLR_ERROR, "Cannot open /dev/tty"); + wlr_log_errno(WLR_ERROR, "Cannot open %s", tty_path); return false; } @@ -176,7 +186,7 @@ static bool setup_tty(struct direct_session *session, struct wl_display *display goto error; } - if (kd_mode != KD_TEXT) { + if (default_tty && kd_mode != KD_TEXT) { wlr_log(WLR_ERROR, "tty already in graphics mode; is another display server running?"); goto error; diff --git a/docs/env_vars.md b/docs/env_vars.md index fd8fcbac..04c5aa85 100644 --- a/docs/env_vars.md +++ b/docs/env_vars.md @@ -20,6 +20,7 @@ wlroots specific hardware cursors * *WLR_SESSION*: specifies the wlr\_session to be used (available sessions: logind/systemd, direct) +* *WLR_DIRECT_TTY*: specifies the tty to be used (instead of using /dev/tty) rootston specific ------------------ |