diff --git a/build.zig b/build.zig index c017e6a..0f446d5 100644 --- a/build.zig +++ b/build.zig @@ -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(.{}); diff --git a/res/lang/ar.ini b/res/lang/ar.ini index 3a0ae3b..6e1f3f5 100644 --- a/res/lang/ar.ini +++ b/res/lang/ar.ini @@ -13,6 +13,7 @@ err_dgn_oob = رسالة سجل (Log) err_domain = اسم نطاق غير صالح err_empty_password = لا يُسمح بكلمة مرور فارغة err_envlist = فشل في جلب قائمة المتغيرات البيئية + err_hostname = فشل في جلب اسم المضيف (Hostname) diff --git a/res/lang/cat.ini b/res/lang/cat.ini index 985cb55..c736153 100644 --- a/res/lang/cat.ini +++ b/res/lang/cat.ini @@ -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ó diff --git a/res/lang/cs.ini b/res/lang/cs.ini index 2798e18..d9b9ae8 100644 --- a/res/lang/cs.ini +++ b/res/lang/cs.ini @@ -13,6 +13,7 @@ err_dgn_oob = zpráva protokolu err_domain = neplatná doména + err_hostname = nelze získat název hostitele diff --git a/res/lang/de.ini b/res/lang/de.ini index bf70ace..7d5e405 100644 --- a/res/lang/de.ini +++ b/res/lang/de.ini @@ -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 diff --git a/res/lang/en.ini b/res/lang/en.ini index 11219b5..dfe60f3 100644 --- a/res/lang/en.ini +++ b/res/lang/en.ini @@ -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 diff --git a/res/lang/es.ini b/res/lang/es.ini index 9676c0e..c249c20 100644 --- a/res/lang/es.ini +++ b/res/lang/es.ini @@ -13,6 +13,7 @@ err_dgn_oob = mensaje de registro err_domain = dominio inválido + err_hostname = error al obtener el nombre de host diff --git a/res/lang/fr.ini b/res/lang/fr.ini index 4ee547e..1a5faba 100644 --- a/res/lang/fr.ini +++ b/res/lang/fr.ini @@ -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 diff --git a/res/lang/it.ini b/res/lang/it.ini index ada3999..b366c4f 100644 --- a/res/lang/it.ini +++ b/res/lang/it.ini @@ -13,6 +13,7 @@ err_dgn_oob = messaggio log err_domain = dominio non valido + err_hostname = impossibile ottenere hostname diff --git a/res/lang/ja_JP.ini b/res/lang/ja_JP.ini index 27f6083..9a9555e 100644 --- a/res/lang/ja_JP.ini +++ b/res/lang/ja_JP.ini @@ -13,6 +13,7 @@ err_dgn_oob = ログメッセージ err_domain = 無効なドメイン err_empty_password = 空のパスワードは許可されていません err_envlist = 環境変数リストの取得に失敗しました + err_hostname = ホスト名の取得に失敗しました diff --git a/res/lang/pl.ini b/res/lang/pl.ini index a35a38e..7bf0a33 100644 --- a/res/lang/pl.ini +++ b/res/lang/pl.ini @@ -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 diff --git a/res/lang/pt.ini b/res/lang/pt.ini index a94257e..f8c9bd7 100644 --- a/res/lang/pt.ini +++ b/res/lang/pt.ini @@ -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 diff --git a/res/lang/pt_BR.ini b/res/lang/pt_BR.ini index 66d990c..0c64ca4 100644 --- a/res/lang/pt_BR.ini +++ b/res/lang/pt_BR.ini @@ -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 diff --git a/res/lang/ro.ini b/res/lang/ro.ini index 008def0..a90c54d 100644 --- a/res/lang/ro.ini +++ b/res/lang/ro.ini @@ -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 diff --git a/res/lang/ru.ini b/res/lang/ru.ini index bb6f98e..95116f1 100644 --- a/res/lang/ru.ini +++ b/res/lang/ru.ini @@ -13,6 +13,7 @@ err_dgn_oob = отладочное сообщение (log) err_domain = неверный домен err_empty_password = пустой пароль не допустим err_envlist = не удалось получить список переменных среды + err_hostname = не удалось получить имя хоста diff --git a/res/lang/sr.ini b/res/lang/sr.ini index 7dc54bf..c99bf9e 100644 --- a/res/lang/sr.ini +++ b/res/lang/sr.ini @@ -13,6 +13,7 @@ err_dgn_oob = log poruka err_domain = nevazeci domen + err_hostname = neuspijesno trazenje hostname-a diff --git a/res/lang/sv.ini b/res/lang/sv.ini index 6b72ada..81233fe 100644 --- a/res/lang/sv.ini +++ b/res/lang/sv.ini @@ -13,6 +13,7 @@ err_dgn_oob = loggmeddelande err_domain = okänd domän + err_hostname = misslyckades att hämta värdnamn diff --git a/res/lang/tr.ini b/res/lang/tr.ini index 9c7b7a5..6759701 100644 --- a/res/lang/tr.ini +++ b/res/lang/tr.ini @@ -13,6 +13,7 @@ err_dgn_oob = log mesaji err_domain = gecersiz etki alani + err_hostname = ana bilgisayar adi alinamadi diff --git a/res/lang/uk.ini b/res/lang/uk.ini index 20ad6c4..af96e1f 100644 --- a/res/lang/uk.ini +++ b/res/lang/uk.ini @@ -13,6 +13,7 @@ err_dgn_oob = повідомлення журналу (log) err_domain = недійсний домен + err_hostname = не вдалося отримати ім'я хосту diff --git a/res/lang/zh_CN.ini b/res/lang/zh_CN.ini index 639c224..2d70f3f 100644 --- a/res/lang/zh_CN.ini +++ b/res/lang/zh_CN.ini @@ -13,6 +13,7 @@ err_dgn_oob = 日志消息 err_domain = 无效的域 + err_hostname = 获取主机名失败 diff --git a/src/config/Lang.zig b/src/config/Lang.zig index 2e664f2..0e9b840 100644 --- a/src/config/Lang.zig +++ b/src/config/Lang.zig @@ -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", diff --git a/src/main.zig b/src/main.zig index 01047ff..fff3857 100644 --- a/src/main.zig +++ b/src/main.zig @@ -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)});