Add fallback TTY option (closes #838)

Signed-off-by: AnErrupTion <anerruption@disroot.org>
This commit is contained in:
AnErrupTion 2025-09-29 21:30:51 +02:00
parent cee0e0ca4b
commit 7a0520687d
No known key found for this signature in database
22 changed files with 27 additions and 1 deletions

View File

@ -41,6 +41,7 @@ pub fn build(b: *std.Build) !void {
const version_str = try getVersionStr(b, "ly", ly_version);
const enable_x11_support = b.option(bool, "enable_x11_support", "Enable X11 support (default is on)") orelse true;
const default_tty = b.option(u8, "default_tty", "Set the TTY (default is 2)") orelse 2;
const fallback_tty = b.option(u8, "fallback_tty", "Set the fallback TTY (default is 1). This value gets embedded into the binary") orelse 1;
default_tty_str = try std.fmt.allocPrint(b.allocator, "{d}", .{default_tty});
@ -48,6 +49,7 @@ pub fn build(b: *std.Build) !void {
build_options.addOption([]const u8, "prefix_directory", prefix_directory);
build_options.addOption([]const u8, "version", version_str);
build_options.addOption(u8, "tty", default_tty);
build_options.addOption(u8, "fallback_tty", fallback_tty);
build_options.addOption(bool, "enable_x11_support", enable_x11_support);
const target = b.standardTargetOptions(.{});

View File

@ -13,6 +13,7 @@ err_dgn_oob = رسالة سجل (Log)
err_domain = اسم نطاق غير صالح
err_empty_password = لا يُسمح بكلمة مرور فارغة
err_envlist = فشل في جلب قائمة المتغيرات البيئية
err_hostname = فشل في جلب اسم المضيف (Hostname)

View File

@ -13,6 +13,7 @@ err_dgn_oob = missatge de registre
err_domain = domini invàlid
err_envlist = error en obtenir l'envlist
err_hostname = error en obtenir el nom de l'amfitrió

View File

@ -13,6 +13,7 @@ err_dgn_oob = zpráva protokolu
err_domain = neplatná doména
err_hostname = nelze získat název hostitele

View File

@ -13,6 +13,7 @@ err_dgn_oob = Diagnose-Nachricht
err_domain = Ungueltige Domain
err_empty_password = Leeres Passwort nicht zugelassen
err_envlist = Fehler beim Abrufen der Umgebungs-Variablen
err_hostname = Abrufen des Hostnames fehlgeschlagen

View File

@ -13,6 +13,7 @@ err_dgn_oob = log message
err_domain = invalid domain
err_empty_password = empty password not allowed
err_envlist = failed to get envlist
err_get_active_tty = failed to get active tty
err_hostname = failed to get hostname
err_lock_state = failed to get lock state
err_log = failed to open log file

View File

@ -13,6 +13,7 @@ err_dgn_oob = mensaje de registro
err_domain = dominio inválido
err_hostname = error al obtener el nombre de host

View File

@ -13,6 +13,7 @@ err_dgn_oob = message
err_domain = domaine invalide
err_empty_password = mot de passe vide non autorisé
err_envlist = échec de lecture de la liste d'environnement
err_get_active_tty = échec de lecture du terminal actif
err_hostname = échec de lecture du nom d'hôte
err_lock_state = échec de lecture de l'état de verrouillage
err_log = échec de l'ouverture du fichier de journal

View File

@ -13,6 +13,7 @@ err_dgn_oob = messaggio log
err_domain = dominio non valido
err_hostname = impossibile ottenere hostname

View File

@ -13,6 +13,7 @@ err_dgn_oob = ログメッセージ
err_domain = 無効なドメイン
err_empty_password = 空のパスワードは許可されていません
err_envlist = 環境変数リストの取得に失敗しました
err_hostname = ホスト名の取得に失敗しました

View File

@ -13,6 +13,7 @@ err_dgn_oob = wiadomość loga
err_domain = niepoprawna domena
err_empty_password = puste hasło jest niedozwolone
err_envlist = nie udało się pobrać listy zmiennych środowiskowych
err_hostname = nie udało się uzyskać nazwy hosta

View File

@ -13,6 +13,7 @@ err_dgn_oob = mensagem de registo
err_domain = domínio inválido
err_hostname = erro ao obter o nome do host

View File

@ -13,6 +13,7 @@ err_dgn_oob = mensagem de log
err_domain = domínio inválido
err_hostname = não foi possível obter o nome do host

View File

@ -20,6 +20,7 @@ capslock = capslock
err_pam_abort = tranzacţie pam anulată
err_pam_acct_expired = cont expirat
err_pam_auth = eroare de autentificare

View File

@ -13,6 +13,7 @@ err_dgn_oob = отладочное сообщение (log)
err_domain = неверный домен
err_empty_password = пустой пароль не допустим
err_envlist = не удалось получить список переменных среды
err_hostname = не удалось получить имя хоста

View File

@ -13,6 +13,7 @@ err_dgn_oob = log poruka
err_domain = nevazeci domen
err_hostname = neuspijesno trazenje hostname-a

View File

@ -13,6 +13,7 @@ err_dgn_oob = loggmeddelande
err_domain = okänd domän
err_hostname = misslyckades att hämta värdnamn

View File

@ -13,6 +13,7 @@ err_dgn_oob = log mesaji
err_domain = gecersiz etki alani
err_hostname = ana bilgisayar adi alinamadi

View File

@ -13,6 +13,7 @@ err_dgn_oob = повідомлення журналу (log)
err_domain = недійсний домен
err_hostname = не вдалося отримати ім'я хосту

View File

@ -13,6 +13,7 @@ err_dgn_oob = 日志消息
err_domain = 无效的域
err_hostname = 获取主机名失败

View File

@ -18,6 +18,7 @@ err_dgn_oob: []const u8 = "log message",
err_domain: []const u8 = "invalid domain",
err_empty_password: []const u8 = "empty password not allowed",
err_envlist: []const u8 = "failed to get envlist",
err_get_active_tty: []const u8 = "failed to get active tty",
err_hostname: []const u8 = "failed to get hostname",
err_lock_state: []const u8 = "failed to get lock state",
err_log: []const u8 = "failed to open log file",

View File

@ -509,7 +509,11 @@ pub fn main() !void {
var auth_fails: u64 = 0;
// Switch to selected TTY
const active_tty = try interop.getActiveTty(allocator);
const active_tty = interop.getActiveTty(allocator) catch |err| no_tty_found: {
try info_line.addMessage(lang.err_get_active_tty, config.error_bg, config.error_fg);
try log_writer.print("failed to get active tty: {s}\n", .{@errorName(err)});
break :no_tty_found build_options.fallback_tty;
};
interop.switchTty(active_tty) catch |err| {
try info_line.addMessage(lang.err_switch_tty, config.error_bg, config.error_fg);
try log_writer.print("failed to switch tty: {s}\n", .{@errorName(err)});