commit ad198dd

Michael Forney  ·  2015-08-30 08:21:32 +0000 UTC
parent d509875
launch: Always use a new VT when DISPLAY or WAYLAND_DISPLAY is set
1 files changed,  +7, -5
+7, -5
 1@@ -305,12 +305,11 @@ done:
 2 static void
 3 find_vt(char *vt, size_t size)
 4 {
 5-	char *vt_num_string;
 6+	char *vtnr;
 7 
 8-	if ((vt_num_string = getenv("XDG_VTNR"))) {
 9-		if (snprintf(vt, size, "/dev/tty%s", vt_num_string) >= size)
10-			die("XDG_VTNR is too long");
11-	} else {
12+	/* If we are running from an existing X or wayland session, always open a new
13+	 * VT instead of using the current one. */
14+	if (getenv("DISPLAY") || getenv("WAYLAND_DISPLAY") || !(vtnr = getenv("XDG_VTNR"))) {
15 		int tty0_fd, vt_num;
16 
17 		tty0_fd = open("/dev/tty0", O_RDWR);
18@@ -321,6 +320,9 @@ find_vt(char *vt, size_t size)
19 		close(tty0_fd);
20 		if (snprintf(vt, size, "/dev/tty%d", vt_num) >= size)
21 			die("VT number is too large");
22+	} else {
23+		if (snprintf(vt, size, "/dev/tty%s", vtnr) >= size)
24+			die("XDG_VTNR is too long");
25 	}
26 }
27