From a158098df05efa7057485e35dbcb366269659faf Mon Sep 17 00:00:00 2001 From: AnErrupTion Date: Mon, 26 Jan 2026 20:45:33 +0100 Subject: [PATCH] Add config.x_vt option (fixes #910) Signed-off-by: AnErrupTion --- res/config.ini | 5 +++++ src/auth.zig | 3 ++- src/config/Config.zig | 1 + src/main.zig | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/res/config.ini b/res/config.ini index 7a29aa6..cbebcde 100644 --- a/res/config.ini +++ b/res/config.ini @@ -359,6 +359,11 @@ waylandsessions = $PREFIX_DIRECTORY/share/wayland-sessions # Xorg server command x_cmd = $PREFIX_DIRECTORY/bin/X +# Xorg virtual terminal number +# Mostly useful for FreeBSD where choosing the current TTY causes issues +# If null, the current TTY will be chosen +x_vt = null + # Xorg xauthority edition tool xauth_cmd = $PREFIX_DIRECTORY/bin/xauth diff --git a/src/auth.zig b/src/auth.zig index 4c885e0..a70f5da 100644 --- a/src/auth.zig +++ b/src/auth.zig @@ -20,6 +20,7 @@ pub const AuthOptions = struct { setup_cmd: []const u8, login_cmd: ?[]const u8, x_cmd: []const u8, + x_vt: ?u8, session_pid: std.posix.pid_t, }; @@ -189,7 +190,7 @@ fn startSession( .wayland, .shell, .custom => try executeCmd(log_file, allocator, user_entry.shell.?, options, current_environment.is_terminal, current_environment.cmd), .xinitrc, .x11 => if (build_options.enable_x11_support) { var vt_buf: [5]u8 = undefined; - const vt = try std.fmt.bufPrint(&vt_buf, "vt{d}", .{options.tty}); + const vt = try std.fmt.bufPrint(&vt_buf, "vt{d}", .{options.x_vt orelse options.tty}); try executeX11Cmd(log_file, allocator, user_entry.shell.?, user_entry.home.?, options, current_environment.cmd orelse "", vt); }, } diff --git a/src/config/Config.zig b/src/config/Config.zig index 3e0cf1e..d48bf09 100644 --- a/src/config/Config.zig +++ b/src/config/Config.zig @@ -92,6 +92,7 @@ vi_default_mode: ViMode = .normal, vi_mode: bool = false, waylandsessions: []const u8 = build_options.prefix_directory ++ "/share/wayland-sessions", x_cmd: []const u8 = build_options.prefix_directory ++ "/bin/X", +x_vt: ?u8 = null, xauth_cmd: []const u8 = build_options.prefix_directory ++ "/bin/xauth", xinitrc: ?[]const u8 = "~/.xinitrc", xsessions: []const u8 = build_options.prefix_directory ++ "/share/xsessions", diff --git a/src/main.zig b/src/main.zig index 3d8e0cb..918c5f1 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1086,6 +1086,7 @@ pub fn main() !void { .setup_cmd = config.setup_cmd, .login_cmd = config.login_cmd, .x_cmd = config.x_cmd, + .x_vt = config.x_vt, .session_pid = session_pid, };