aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiklas Schulze <me@jns.io>2019-03-06 12:46:35 +0100
committeremersion <contact@emersion.fr>2019-03-06 13:20:51 +0100
commit2baad6eba6c7f4edd3bc1ca266503920e9789ad0 (patch)
tree424cf70b0987a0126719a57854f259f61e4b2c99
parenta3c31bb875b10cda6e795588ef111d8e17fb83a7 (diff)
backend/session: Allow setting a custom tty via WLR_DIRECT_TTY
-rw-r--r--backend/session/direct.c16
-rw-r--r--docs/env_vars.md1
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
------------------