Merge branch 'master' into winlith/colormix

This commit is contained in:
AnErrupTion 2025-03-05 20:53:53 +00:00
commit c9a416b8a2
26 changed files with 338 additions and 44 deletions

View File

@ -3,7 +3,7 @@ const builtin = @import("builtin");
const PatchMap = std.StringHashMap([]const u8); const PatchMap = std.StringHashMap([]const u8);
const min_zig_string = "0.12.0"; const min_zig_string = "0.14.0";
const current_zig = builtin.zig_version; const current_zig = builtin.zig_version;
// Implementing zig version detection through compile time // Implementing zig version detection through compile time
@ -22,8 +22,6 @@ var prefix_directory: []const u8 = undefined;
var executable_name: []const u8 = undefined; var executable_name: []const u8 = undefined;
var default_tty_str: []const u8 = undefined; var default_tty_str: []const u8 = undefined;
const ProgressNode = if (current_zig.minor == 12) *std.Progress.Node else std.Progress.Node;
pub fn build(b: *std.Build) !void { pub fn build(b: *std.Build) !void {
dest_directory = b.option([]const u8, "dest_directory", "Specify a destination directory for installation") orelse ""; dest_directory = b.option([]const u8, "dest_directory", "Specify a destination directory for installation") orelse "";
config_directory = b.option([]const u8, "config_directory", "Specify a default config directory (default is /etc). This path gets embedded into the binary") orelse "/etc"; config_directory = b.option([]const u8, "config_directory", "Specify a default config directory (default is /etc). This path gets embedded into the binary") orelse "/etc";
@ -31,7 +29,6 @@ pub fn build(b: *std.Build) !void {
executable_name = b.option([]const u8, "name", "Specify installed executable file name (default is ly)") orelse "ly"; executable_name = b.option([]const u8, "name", "Specify installed executable file name (default is ly)") orelse "ly";
const bin_directory = try b.allocator.dupe(u8, config_directory); const bin_directory = try b.allocator.dupe(u8, config_directory);
config_directory = try std.fs.path.join(b.allocator, &[_][]const u8{ dest_directory, config_directory });
const build_options = b.addOptions(); const build_options = b.addOptions();
const version_str = try getVersionStr(b, "ly", ly_version); const version_str = try getVersionStr(b, "ly", ly_version);
@ -123,7 +120,7 @@ pub fn build(b: *std.Build) !void {
pub fn ExeInstaller(install_conf: bool) type { pub fn ExeInstaller(install_conf: bool) type {
return struct { return struct {
pub fn make(step: *std.Build.Step, _: ProgressNode) !void { pub fn make(step: *std.Build.Step, _: std.Build.Step.MakeOptions) !void {
try install_ly(step.owner.allocator, install_conf); try install_ly(step.owner.allocator, install_conf);
} }
}; };
@ -139,7 +136,7 @@ const InitSystem = enum {
pub fn ServiceInstaller(comptime init_system: InitSystem) type { pub fn ServiceInstaller(comptime init_system: InitSystem) type {
return struct { return struct {
pub fn make(step: *std.Build.Step, _: ProgressNode) !void { pub fn make(step: *std.Build.Step, _: std.Build.Step.MakeOptions) !void {
const allocator = step.owner.allocator; const allocator = step.owner.allocator;
var patch_map = PatchMap.init(allocator); var patch_map = PatchMap.init(allocator);
@ -222,22 +219,22 @@ pub fn ServiceInstaller(comptime init_system: InitSystem) type {
} }
fn install_ly(allocator: std.mem.Allocator, install_config: bool) !void { fn install_ly(allocator: std.mem.Allocator, install_config: bool) !void {
const ly_config_directory = try std.fs.path.join(allocator, &[_][]const u8{ config_directory, "/ly" }); const ly_config_directory = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, config_directory, "/ly" });
std.fs.cwd().makePath(ly_config_directory) catch { std.fs.cwd().makePath(ly_config_directory) catch {
std.debug.print("warn: {s} already exists as a directory.\n", .{ly_config_directory}); std.debug.print("warn: {s} already exists as a directory.\n", .{ly_config_directory});
}; };
const ly_lang_path = try std.fs.path.join(allocator, &[_][]const u8{ config_directory, "/ly/lang" }); const ly_lang_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, config_directory, "/ly/lang" });
std.fs.cwd().makePath(ly_lang_path) catch { std.fs.cwd().makePath(ly_lang_path) catch {
std.debug.print("warn: {s} already exists as a directory.\n", .{config_directory}); std.debug.print("warn: {s} already exists as a directory.\n", .{ ly_lang_path });
}; };
{ {
const exe_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, prefix_directory, "/bin" }); const exe_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, prefix_directory, "/bin" });
if (!std.mem.eql(u8, dest_directory, "")) { if (!std.mem.eql(u8, dest_directory, "")) {
std.fs.cwd().makePath(exe_path) catch { std.fs.cwd().makePath(exe_path) catch {
std.debug.print("warn: {s} already exists as a directory.\n", .{exe_path}); std.debug.print("warn: {s} already exists as a directory.\n", .{ exe_path });
}; };
} }
@ -311,7 +308,7 @@ fn install_ly(allocator: std.mem.Allocator, install_config: bool) !void {
} }
} }
pub fn uninstallall(step: *std.Build.Step, _: ProgressNode) !void { pub fn uninstallall(step: *std.Build.Step, _: std.Build.Step.MakeOptions) !void {
const allocator = step.owner.allocator; const allocator = step.owner.allocator;
try deleteTree(allocator, config_directory, "/ly", "ly config directory not found"); try deleteTree(allocator, config_directory, "/ly", "ly config directory not found");

View File

@ -1,15 +1,16 @@
.{ .{
.name = "ly", .name = .ly,
.version = "1.0.0", .version = "1.1.0",
.minimum_zig_version = "0.12.0", .fingerprint = 0xa148ffcc5dc2cb59,
.minimum_zig_version = "0.14.0",
.dependencies = .{ .dependencies = .{
.clap = .{ .clap = .{
.url = "https://github.com/Hejsil/zig-clap/archive/refs/tags/0.9.1.tar.gz", .url = "https://github.com/Hejsil/zig-clap/archive/refs/tags/0.10.0.tar.gz",
.hash = "122062d301a203d003547b414237229b09a7980095061697349f8bef41be9c30266b", .hash = "clap-0.10.0-oBajB434AQBDh-Ei3YtoKIRxZacVPF1iSwp3IX_ZB8f0",
}, },
.zigini = .{ .zigini = .{
.url = "https://github.com/Kawaii-Ash/zigini/archive/0bba97a12582928e097f4074cc746c43351ba4c8.tar.gz", .url = "https://github.com/AnErrupTion/zigini/archive/e61d31b2b7db3365993a20cc90e491d0cb0b7282.tar.gz",
.hash = "12209b971367b4066d40ecad4728e6fdffc4cc4f19356d424c2de57f5b69ac7a619a", .hash = "zigini-0.3.1-BSkB7XJGAAB2E-sKyzhTaQCBlYBL8yqzE4E_jmSY99sC",
}, },
}, },
.paths = .{""}, .paths = .{""},

View File

@ -1,12 +1,14 @@
# Ly - a TUI display manager # Ly - a TUI display manager
## Development is now continuing on [Codeberg](https://codeberg.org/AnErrupTion/ly), with the [GitHub](https://github.com/fairyglade/ly) repository becoming a mirror. Issues & pull requests on GitHub will be ignored from now on.
![Ly screenshot](.github/screenshot.png "Ly screenshot") ![Ly screenshot](.github/screenshot.png "Ly screenshot")
Ly is a lightweight TUI (ncurses-like) display manager for Linux and BSD. Ly is a lightweight TUI (ncurses-like) display manager for Linux and BSD.
## Dependencies ## Dependencies
- Compile-time: - Compile-time:
- zig >=0.12.0 - zig 0.14.0
- libc - libc
- pam - pam
- xcb (optional, required by default; needed for X11 support) - xcb (optional, required by default; needed for X11 support)
@ -252,4 +254,3 @@ disable the main box borders with `hide_borders = true`.
## Additional Information ## Additional Information
The name "Ly" is a tribute to the fairy from the game Rayman. The name "Ly" is a tribute to the fairy from the game Rayman.
Ly was tested by oxodao, who is some seriously awesome dude. Ly was tested by oxodao, who is some seriously awesome dude.

View File

@ -6,6 +6,7 @@ err_alloc = assignació de memòria fallida
err_bounds = índex fora de límits err_bounds = índex fora de límits
err_brightness_change = error en canviar la brillantor err_brightness_change = error en canviar la brillantor
err_chdir = error en obrir la carpeta home err_chdir = error en obrir la carpeta home
err_console_dev = error en accedir a la consola err_console_dev = error en accedir a la consola
err_dgn_oob = missatge de registre err_dgn_oob = missatge de registre
err_domain = domini invàlid err_domain = domini invàlid
@ -35,6 +36,7 @@ err_perm_dir = error en canviar el directori actual
err_perm_group = error en degradar els permisos de grup err_perm_group = error en degradar els permisos de grup
err_perm_user = error en degradar els permisos de l'usuari err_perm_user = error en degradar els permisos de l'usuari
err_pwnam = error en obtenir la informació de l'usuari err_pwnam = error en obtenir la informació de l'usuari
err_unknown = ha ocorregut un error desconegut err_unknown = ha ocorregut un error desconegut
err_user_gid = error en establir el GID de l'usuari err_user_gid = error en establir el GID de l'usuari
err_user_init = error en inicialitzar usuari err_user_init = error en inicialitzar usuari
@ -46,10 +48,10 @@ err_xsessions_open = error en obrir la carpeta de sessions
insert = inserir insert = inserir
login = iniciar sessió login = iniciar sessió
logout = sessió tancada logout = sessió tancada
no_x11_support = x11 support disabled at compile-time
no_x11_support = el suport per x11 ha estat desactivat en la compilació no_x11_support = el suport per x11 ha estat desactivat en la compilació
normal = normal normal = normal
numlock = Bloq Num numlock = Bloq Num
password = Clau password = Clau
restart = reiniciar restart = reiniciar
shell = shell shell = shell

View File

@ -1,13 +1,20 @@
capslock = capslock capslock = capslock
err_alloc = alokace paměti selhala err_alloc = alokace paměti selhala
err_bounds = index je mimo hranice pole err_bounds = index je mimo hranice pole
err_chdir = nelze otevřít domovský adresář err_chdir = nelze otevřít domovský adresář
err_console_dev = chyba při přístupu do konzole err_console_dev = chyba při přístupu do konzole
err_dgn_oob = zpráva protokolu err_dgn_oob = zpráva protokolu
err_domain = neplatná doména err_domain = neplatná doména
err_hostname = nelze získat název hostitele err_hostname = nelze získat název hostitele
err_mlock = uzamčení paměti hesel selhalo err_mlock = uzamčení paměti hesel selhalo
err_null = nulový ukazatel err_null = nulový ukazatel
err_pam = pam transakce selhala err_pam = pam transakce selhala
err_pam_abort = pam transakce přerušena err_pam_abort = pam transakce přerušena
err_pam_acct_expired = platnost účtu vypršela err_pam_acct_expired = platnost účtu vypršela
@ -29,17 +36,27 @@ err_perm_dir = nepodařilo se změnit adresář
err_perm_group = nepodařilo se snížit skupinová oprávnění err_perm_group = nepodařilo se snížit skupinová oprávnění
err_perm_user = nepodařilo se snížit uživatelská oprávnění err_perm_user = nepodařilo se snížit uživatelská oprávnění
err_pwnam = nelze získat informace o uživateli err_pwnam = nelze získat informace o uživateli
err_user_gid = nastavení GID uživatele selhalo err_user_gid = nastavení GID uživatele selhalo
err_user_init = inicializace uživatele selhala err_user_init = inicializace uživatele selhala
err_user_uid = nastavení UID uživateli selhalo err_user_uid = nastavení UID uživateli selhalo
err_xsessions_dir = nepodařilo se najít složku relací err_xsessions_dir = nepodařilo se najít složku relací
err_xsessions_open = nepodařilo se otevřít složku relací err_xsessions_open = nepodařilo se otevřít složku relací
login = uživatel login = uživatel
logout = odhlášen logout = odhlášen
numlock = numlock numlock = numlock
password = heslo password = heslo
restart = restartovat restart = restartovat
shell = příkazový řádek shell = příkazový řádek
shutdown = vypnout shutdown = vypnout
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -1,13 +1,20 @@
capslock = Feststelltaste capslock = Feststelltaste
err_alloc = Speicherzuweisung fehlgeschlagen err_alloc = Speicherzuweisung fehlgeschlagen
err_bounds = Listenindex ist außerhalb des Bereichs err_bounds = Listenindex ist außerhalb des Bereichs
err_chdir = Fehler beim oeffnen des home-ordners err_chdir = Fehler beim oeffnen des home-ordners
err_console_dev = Zugriff auf die Konsole fehlgeschlagen err_console_dev = Zugriff auf die Konsole fehlgeschlagen
err_dgn_oob = Protokoll Nachricht err_dgn_oob = Protokoll Nachricht
err_domain = Unzulaessige domain err_domain = Unzulaessige domain
err_hostname = Holen des Hostnames fehlgeschlagen err_hostname = Holen des Hostnames fehlgeschlagen
err_mlock = Abschließen des Passwortspeichers fehlgeschlagen err_mlock = Abschließen des Passwortspeichers fehlgeschlagen
err_null = Null Zeiger err_null = Null Zeiger
err_pam = pam Transaktion fehlgeschlagen err_pam = pam Transaktion fehlgeschlagen
err_pam_abort = pam Transaktion abgebrochen err_pam_abort = pam Transaktion abgebrochen
err_pam_acct_expired = Benutzerkonto abgelaufen err_pam_acct_expired = Benutzerkonto abgelaufen
@ -29,17 +36,27 @@ err_perm_dir = Fehler beim wechseln des Ordners
err_perm_group = Fehler beim heruntersetzen der Gruppen Berechtigungen err_perm_group = Fehler beim heruntersetzen der Gruppen Berechtigungen
err_perm_user = Fehler beim heruntersetzen der Nutzer Berechtigungen err_perm_user = Fehler beim heruntersetzen der Nutzer Berechtigungen
err_pwnam = Holen der Benutzerinformationen fehlgeschlagen err_pwnam = Holen der Benutzerinformationen fehlgeschlagen
err_user_gid = Fehler beim setzen der Gruppen Id des Nutzers err_user_gid = Fehler beim setzen der Gruppen Id des Nutzers
err_user_init = Initialisierung des Nutzers fehlgeschlagen err_user_init = Initialisierung des Nutzers fehlgeschlagen
err_user_uid = Setzen der Benutzer Id fehlgeschlagen err_user_uid = Setzen der Benutzer Id fehlgeschlagen
err_xsessions_dir = Fehler beim finden des Sitzungsordners err_xsessions_dir = Fehler beim finden des Sitzungsordners
err_xsessions_open = Fehler beim öffnen des Sitzungsordners err_xsessions_open = Fehler beim öffnen des Sitzungsordners
login = Anmelden login = Anmelden
logout = Abgemeldet logout = Abgemeldet
numlock = Numtaste numlock = Numtaste
password = Passwort password = Passwort
restart = Neustarten restart = Neustarten
shell = shell shell = shell
shutdown = Herunterfahren shutdown = Herunterfahren
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -6,6 +6,7 @@ err_alloc = failed memory allocation
err_bounds = out-of-bounds index err_bounds = out-of-bounds index
err_brightness_change = failed to change brightness err_brightness_change = failed to change brightness
err_chdir = failed to open home folder err_chdir = failed to open home folder
err_console_dev = failed to access console err_console_dev = failed to access console
err_dgn_oob = log message err_dgn_oob = log message
err_domain = invalid domain err_domain = invalid domain
@ -47,14 +48,15 @@ err_xsessions_open = failed to open sessions folder
insert = insert insert = insert
login = login login = login
logout = logged out logout = logged out
normal = normal
no_x11_support = x11 support disabled at compile-time no_x11_support = x11 support disabled at compile-time
normal = normal
numlock = numlock numlock = numlock
password = password password = password
restart = reboot restart = reboot
shell = shell shell = shell
shutdown = shutdown shutdown = shutdown
sleep = sleep sleep = sleep
wayland = wayland wayland = wayland
xinitrc = xinitrc
x11 = x11 x11 = x11
xinitrc = xinitrc

View File

@ -4,13 +4,17 @@ brightness_up = subir brillo
capslock = Bloq Mayús capslock = Bloq Mayús
err_alloc = asignación de memoria fallida err_alloc = asignación de memoria fallida
err_bounds = índice fuera de límites err_bounds = índice fuera de límites
err_chdir = error al abrir la carpeta home err_chdir = error al abrir la carpeta home
err_console_dev = error al acceder a la consola err_console_dev = error al acceder a la consola
err_dgn_oob = mensaje de registro err_dgn_oob = mensaje de registro
err_domain = dominio inválido err_domain = dominio inválido
err_hostname = error al obtener el nombre de host err_hostname = error al obtener el nombre de host
err_mlock = error al bloquear la contraseña de memoria err_mlock = error al bloquear la contraseña de memoria
err_null = puntero nulo err_null = puntero nulo
err_pam = error en la transacción pam err_pam = error en la transacción pam
err_pam_abort = transacción pam abortada err_pam_abort = transacción pam abortada
err_pam_acct_expired = cuenta expirada err_pam_acct_expired = cuenta expirada
@ -32,9 +36,13 @@ err_perm_dir = error al cambiar el directorio actual
err_perm_group = error al degradar los permisos del grupo err_perm_group = error al degradar los permisos del grupo
err_perm_user = error al degradar los permisos del usuario err_perm_user = error al degradar los permisos del usuario
err_pwnam = error al obtener la información del usuario err_pwnam = error al obtener la información del usuario
err_user_gid = error al establecer el GID del usuario err_user_gid = error al establecer el GID del usuario
err_user_init = error al inicializar usuario err_user_init = error al inicializar usuario
err_user_uid = error al establecer el UID del usuario err_user_uid = error al establecer el UID del usuario
err_xsessions_dir = error al buscar la carpeta de sesiones err_xsessions_dir = error al buscar la carpeta de sesiones
err_xsessions_open = error al abrir la carpeta de sesiones err_xsessions_open = error al abrir la carpeta de sesiones
insert = insertar insert = insertar
@ -50,4 +58,5 @@ shell = shell
shutdown = apagar shutdown = apagar
sleep = suspender sleep = suspender
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -1,4 +1,4 @@
authenticating = authentification...
brightness_down = diminuer la luminosité brightness_down = diminuer la luminosité
brightness_up = augmenter la luminosité brightness_up = augmenter la luminosité
capslock = verr.maj capslock = verr.maj
@ -6,6 +6,7 @@ err_alloc = échec d'allocation mémoire
err_bounds = indice hors-limite err_bounds = indice hors-limite
err_brightness_change = échec du changement de luminosité err_brightness_change = échec du changement de luminosité
err_chdir = échec de l'ouverture du répertoire home err_chdir = échec de l'ouverture du répertoire home
err_console_dev = échec d'accès à la console err_console_dev = échec d'accès à la console
err_dgn_oob = message err_dgn_oob = message
err_domain = domaine invalide err_domain = domaine invalide
@ -35,6 +36,7 @@ err_perm_dir = échec de changement de répertoire
err_perm_group = échec du déclassement des permissions de groupe err_perm_group = échec du déclassement des permissions de groupe
err_perm_user = échec du déclassement des permissions utilisateur err_perm_user = échec du déclassement des permissions utilisateur
err_pwnam = échec de lecture des infos utilisateur err_pwnam = échec de lecture des infos utilisateur
err_unknown = une erreur inconnue est survenue err_unknown = une erreur inconnue est survenue
err_user_gid = échec de modification du GID err_user_gid = échec de modification du GID
err_user_init = échec d'initialisation de l'utilisateur err_user_init = échec d'initialisation de l'utilisateur
@ -46,14 +48,15 @@ err_xsessions_open = échec de l'ouverture du dossier de sessions
insert = insertion insert = insertion
login = identifiant login = identifiant
logout = déconnecté logout = déconnecté
normal = normal
no_x11_support = support pour x11 désactivé lors de la compilation no_x11_support = support pour x11 désactivé lors de la compilation
normal = normal
numlock = verr.num numlock = verr.num
password = mot de passe password = mot de passe
restart = redémarrer restart = redémarrer
shell = shell shell = shell
shutdown = éteindre shutdown = éteindre
sleep = veille sleep = veille
wayland = wayland wayland = wayland
xinitrc = xinitrc
x11 = x11 x11 = x11
xinitrc = xinitrc

View File

@ -1,13 +1,20 @@
capslock = capslock capslock = capslock
err_alloc = impossibile allocare memoria err_alloc = impossibile allocare memoria
err_bounds = indice fuori limite err_bounds = indice fuori limite
err_chdir = impossibile aprire home directory err_chdir = impossibile aprire home directory
err_console_dev = impossibile aprire console err_console_dev = impossibile aprire console
err_dgn_oob = messaggio log err_dgn_oob = messaggio log
err_domain = dominio non valido err_domain = dominio non valido
err_hostname = impossibile ottenere hostname err_hostname = impossibile ottenere hostname
err_mlock = impossibile ottenere lock per la password in memoria err_mlock = impossibile ottenere lock per la password in memoria
err_null = puntatore nullo err_null = puntatore nullo
err_pam = transazione PAM fallita err_pam = transazione PAM fallita
err_pam_abort = transazione PAM interrotta err_pam_abort = transazione PAM interrotta
err_pam_acct_expired = account scaduto err_pam_acct_expired = account scaduto
@ -29,17 +36,27 @@ err_perm_dir = impossibile cambiare directory corrente
err_perm_group = impossibile ridurre permessi gruppo err_perm_group = impossibile ridurre permessi gruppo
err_perm_user = impossibile ridurre permessi utente err_perm_user = impossibile ridurre permessi utente
err_pwnam = impossibile ottenere dati utente err_pwnam = impossibile ottenere dati utente
err_user_gid = impossibile impostare GID utente err_user_gid = impossibile impostare GID utente
err_user_init = impossibile inizializzare utente err_user_init = impossibile inizializzare utente
err_user_uid = impossible impostare UID utente err_user_uid = impossible impostare UID utente
err_xsessions_dir = impossibile localizzare cartella sessioni err_xsessions_dir = impossibile localizzare cartella sessioni
err_xsessions_open = impossibile aprire cartella sessioni err_xsessions_open = impossibile aprire cartella sessioni
login = username login = username
logout = scollegato logout = scollegato
numlock = numlock numlock = numlock
password = password password = password
restart = riavvio restart = riavvio
shell = shell shell = shell
shutdown = arresto shutdown = arresto
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -0,0 +1,49 @@
#!/usr/bin/env python3
from pathlib import Path
from sys import stderr
def process_lang_file(path: Path, lang_keys: list[str]) -> None:
# read key-value-pairs from lang file into dict
existing_entries = {}
with open(path, "r", encoding="UTF-8") as fh:
while line := fh.readline():
try:
key, value = line.split("=", 1)
existing_entries[key.strip()] = value.strip()
except ValueError: # line does not contain '='
continue
# re-write current lang file with entries in order of occurence in `lang_keys`
# and with empty lines for missing translations
with open(path, "w", encoding="UTF-8") as fh:
for item in lang_keys:
try:
fh.write(f"{item} = {existing_entries[item]}\n")
except KeyError: # no translation for `item` yet
fh.write("\n")
def main() -> None:
zig_lang_file = Path(__file__).parent.joinpath("../../src/config/Lang.zig").resolve()
if not zig_lang_file.exists():
print(f"ERROR: File '{zig_lang_file.as_posix()}' does not exist. Exiting.", file=stderr)
exit(1)
# read "language keys" from `zig_lang_file` into list
lang_keys = []
with open(zig_lang_file, "r", encoding="UTF-8") as fh:
while line := fh.readline():
# only process lines that are not empty or no comments
if not (line.strip() == "" or line.startswith("//")):
lang_keys.append(line.split(":")[0].strip())
lang_files = [f for f in Path.iterdir(Path(__file__).parent) if f.name.endswith(".ini") and f.is_file()]
for file in lang_files:
process_lang_file(file, lang_keys)
if __name__ == "__main__":
main()

View File

@ -1,13 +1,20 @@
capslock = capslock capslock = capslock
err_alloc = nieudana alokacja pamięci err_alloc = nieudana alokacja pamięci
err_bounds = indeks poza granicami err_bounds = indeks poza granicami
err_chdir = nie udało się otworzyć folderu domowego err_chdir = nie udało się otworzyć folderu domowego
err_console_dev = nie udało się uzyskać dostępu do konsoli err_console_dev = nie udało się uzyskać dostępu do konsoli
err_dgn_oob = wiadomość loga err_dgn_oob = wiadomość loga
err_domain = niepoprawna domena err_domain = niepoprawna domena
err_hostname = nie udało się uzyskać nazwy hosta err_hostname = nie udało się uzyskać nazwy hosta
err_mlock = nie udało się zablokować pamięci haseł err_mlock = nie udało się zablokować pamięci haseł
err_null = wskaźnik zerowy err_null = wskaźnik zerowy
err_pam = transakcja pam nieudana err_pam = transakcja pam nieudana
err_pam_abort = transakcja pam przerwana err_pam_abort = transakcja pam przerwana
err_pam_acct_expired = konto wygasło err_pam_acct_expired = konto wygasło
@ -29,17 +36,27 @@ err_perm_dir = nie udało się zmienić obecnego katalogu
err_perm_group = nie udało się obniżyć uprawnień grupy err_perm_group = nie udało się obniżyć uprawnień grupy
err_perm_user = nie udało się obniżyć uprawnień użytkownika err_perm_user = nie udało się obniżyć uprawnień użytkownika
err_pwnam = nie udało się uzyskać informacji o użytkowniku err_pwnam = nie udało się uzyskać informacji o użytkowniku
err_user_gid = nie udało się ustawić GID użytkownika err_user_gid = nie udało się ustawić GID użytkownika
err_user_init = nie udało się zainicjalizować użytkownika err_user_init = nie udało się zainicjalizować użytkownika
err_user_uid = nie udało się ustawić UID użytkownika err_user_uid = nie udało się ustawić UID użytkownika
err_xsessions_dir = nie udało się znaleźć folderu sesji err_xsessions_dir = nie udało się znaleźć folderu sesji
err_xsessions_open = nie udało się otworzyć folderu sesji err_xsessions_open = nie udało się otworzyć folderu sesji
login = login login = login
logout = wylogowano logout = wylogowano
numlock = numlock numlock = numlock
password = hasło password = hasło
restart = uruchom ponownie restart = uruchom ponownie
shell = powłoka shell = powłoka
shutdown = wyłącz shutdown = wyłącz
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -1,13 +1,20 @@
capslock = capslock capslock = capslock
err_alloc = erro na atribuição de memória err_alloc = erro na atribuição de memória
err_bounds = índice fora de limites err_bounds = índice fora de limites
err_chdir = erro ao abrir a pasta home err_chdir = erro ao abrir a pasta home
err_console_dev = erro ao aceder à consola err_console_dev = erro ao aceder à consola
err_dgn_oob = mensagem de registo err_dgn_oob = mensagem de registo
err_domain = domínio inválido err_domain = domínio inválido
err_hostname = erro ao obter o nome do host err_hostname = erro ao obter o nome do host
err_mlock = erro de bloqueio de memória err_mlock = erro de bloqueio de memória
err_null = ponteiro nulo err_null = ponteiro nulo
err_pam = erro na transação pam err_pam = erro na transação pam
err_pam_abort = transação pam abortada err_pam_abort = transação pam abortada
err_pam_acct_expired = conta expirada err_pam_acct_expired = conta expirada
@ -29,17 +36,27 @@ err_perm_dir = erro ao alterar o diretório atual
err_perm_group = erro ao reduzir as permissões do grupo err_perm_group = erro ao reduzir as permissões do grupo
err_perm_user = erro ao reduzir as permissões do utilizador err_perm_user = erro ao reduzir as permissões do utilizador
err_pwnam = erro ao obter informação do utilizador err_pwnam = erro ao obter informação do utilizador
err_user_gid = erro ao definir o GID do utilizador err_user_gid = erro ao definir o GID do utilizador
err_user_init = erro ao iniciar o utilizador err_user_init = erro ao iniciar o utilizador
err_user_uid = erro ao definir o UID do utilizador err_user_uid = erro ao definir o UID do utilizador
err_xsessions_dir = erro ao localizar a pasta das sessões err_xsessions_dir = erro ao localizar a pasta das sessões
err_xsessions_open = erro ao abrir a pasta das sessões err_xsessions_open = erro ao abrir a pasta das sessões
login = iniciar sessão login = iniciar sessão
logout = terminar sessão logout = terminar sessão
numlock = numlock numlock = numlock
password = palavra-passe password = palavra-passe
restart = reiniciar restart = reiniciar
shell = shell shell = shell
shutdown = encerrar shutdown = encerrar
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -1,13 +1,20 @@
capslock = caixa alta capslock = caixa alta
err_alloc = alocação de memória malsucedida err_alloc = alocação de memória malsucedida
err_bounds = índice fora de limites err_bounds = índice fora de limites
err_chdir = não foi possível abrir o diretório home err_chdir = não foi possível abrir o diretório home
err_console_dev = não foi possível acessar o console err_console_dev = não foi possível acessar o console
err_dgn_oob = mensagem de log err_dgn_oob = mensagem de log
err_domain = domínio inválido err_domain = domínio inválido
err_hostname = não foi possível obter o nome do host err_hostname = não foi possível obter o nome do host
err_mlock = bloqueio da memória de senha malsucedido err_mlock = bloqueio da memória de senha malsucedido
err_null = ponteiro nulo err_null = ponteiro nulo
err_pam = transação pam malsucedida err_pam = transação pam malsucedida
err_pam_abort = transação pam abortada err_pam_abort = transação pam abortada
err_pam_acct_expired = conta expirada err_pam_acct_expired = conta expirada
@ -29,17 +36,27 @@ err_perm_dir = não foi possível alterar o diretório atual
err_perm_group = não foi possível reduzir as permissões de grupo err_perm_group = não foi possível reduzir as permissões de grupo
err_perm_user = não foi possível reduzir as permissões de usuário err_perm_user = não foi possível reduzir as permissões de usuário
err_pwnam = não foi possível obter informações do usuário err_pwnam = não foi possível obter informações do usuário
err_user_gid = não foi possível definir o GID do usuário err_user_gid = não foi possível definir o GID do usuário
err_user_init = não foi possível iniciar o usuário err_user_init = não foi possível iniciar o usuário
err_user_uid = não foi possível definir o UID do usuário err_user_uid = não foi possível definir o UID do usuário
err_xsessions_dir = não foi possível encontrar a pasta das sessões err_xsessions_dir = não foi possível encontrar a pasta das sessões
err_xsessions_open = não foi possível abrir a pasta das sessões err_xsessions_open = não foi possível abrir a pasta das sessões
login = conectar login = conectar
logout = desconectado logout = desconectado
numlock = numlock numlock = numlock
password = senha password = senha
restart = reiniciar restart = reiniciar
shell = shell shell = shell
shutdown = desligar shutdown = desligar
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -1,7 +1,12 @@
capslock = capslock capslock = capslock
err_console_dev = nu s-a putut accesa consola err_console_dev = nu s-a putut accesa consola
@ -9,6 +14,8 @@ err_console_dev = nu s-a putut accesa consola
err_pam_abort = tranzacţie pam anulată err_pam_abort = tranzacţie pam anulată
err_pam_acct_expired = cont expirat err_pam_acct_expired = cont expirat
err_pam_auth = eroare de autentificare err_pam_auth = eroare de autentificare
@ -34,12 +41,22 @@ err_perm_user = nu s-a putut face downgrade permisiunilor de utilizator
login = utilizator login = utilizator
logout = opreşte sesiunea logout = opreşte sesiunea
numlock = numlock numlock = numlock
password = parolă password = parolă
restart = resetează restart = resetează
shell = shell shell = shell
shutdown = opreşte sistemul shutdown = opreşte sistemul
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -1,13 +1,20 @@
capslock = capslock capslock = capslock
err_alloc = не удалось выделить память err_alloc = не удалось выделить память
err_bounds = за пределами индекса err_bounds = за пределами индекса
err_chdir = не удалось открыть домашнюю папку err_chdir = не удалось открыть домашнюю папку
err_console_dev = не удалось получить доступ к консоли err_console_dev = не удалось получить доступ к консоли
err_dgn_oob = отладочное сообщение (log) err_dgn_oob = отладочное сообщение (log)
err_domain = неверный домен err_domain = неверный домен
err_hostname = не удалось получить имя хоста err_hostname = не удалось получить имя хоста
err_mlock = сбой блокировки памяти err_mlock = сбой блокировки памяти
err_null = нулевой указатель err_null = нулевой указатель
err_pam = pam транзакция не удалась err_pam = pam транзакция не удалась
err_pam_abort = pam транзакция прервана err_pam_abort = pam транзакция прервана
err_pam_acct_expired = срок действия аккаунта истёк err_pam_acct_expired = срок действия аккаунта истёк
@ -29,17 +36,27 @@ err_perm_dir = не удалось изменить текущий катало
err_perm_group = не удалось понизить права доступа группы err_perm_group = не удалось понизить права доступа группы
err_perm_user = не удалось понизить права доступа пользователя err_perm_user = не удалось понизить права доступа пользователя
err_pwnam = не удалось получить информацию о пользователе err_pwnam = не удалось получить информацию о пользователе
err_user_gid = не удалось установить GID пользователя err_user_gid = не удалось установить GID пользователя
err_user_init = не удалось инициализировать пользователя err_user_init = не удалось инициализировать пользователя
err_user_uid = не удалось установить UID пользователя err_user_uid = не удалось установить UID пользователя
err_xsessions_dir = не удалось найти сессионную папку err_xsessions_dir = не удалось найти сессионную папку
err_xsessions_open = не удалось открыть сессионную папку err_xsessions_open = не удалось открыть сессионную папку
login = логин login = логин
logout = logged out logout = logged out
numlock = numlock numlock = numlock
password = пароль password = пароль
restart = перезагрузить restart = перезагрузить
shell = shell shell = shell
shutdown = выключить shutdown = выключить
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -1,13 +1,20 @@
capslock = capslock capslock = capslock
err_alloc = neuspijesna alokacija memorije err_alloc = neuspijesna alokacija memorije
err_bounds = izvan granica indeksa err_bounds = izvan granica indeksa
err_chdir = neuspijesno otvaranje home foldera err_chdir = neuspijesno otvaranje home foldera
err_console_dev = neuspijesno pristupanje konzoli err_console_dev = neuspijesno pristupanje konzoli
err_dgn_oob = log poruka err_dgn_oob = log poruka
err_domain = nevazeci domen err_domain = nevazeci domen
err_hostname = neuspijesno trazenje hostname-a err_hostname = neuspijesno trazenje hostname-a
err_mlock = neuspijesno zakljucavanje memorije lozinke err_mlock = neuspijesno zakljucavanje memorije lozinke
err_null = null pokazivac err_null = null pokazivac
err_pam = pam transakcija neuspijesna err_pam = pam transakcija neuspijesna
err_pam_abort = pam transakcija prekinuta err_pam_abort = pam transakcija prekinuta
err_pam_acct_expired = nalog istekao err_pam_acct_expired = nalog istekao
@ -25,21 +32,31 @@ err_pam_session = greska sesije
err_pam_sys = greska sistema err_pam_sys = greska sistema
err_pam_user_unknown = nepoznat korisnik err_pam_user_unknown = nepoznat korisnik
err_path = neuspjelo postavljanje path-a err_path = neuspjelo postavljanje path-a
err_perm_dir = neuspjelo mijenjanje foldera err_perm_dir = neuspjelo mijenjanje foldera
err_perm_group = neuspjesno snizavanje dozvola grupe err_perm_group = neuspjesno snizavanje dozvola grupe
err_perm_user = neuspijesno snizavanje dozvola korisnika err_perm_user = neuspijesno snizavanje dozvola korisnika
err_pwnam = neuspijesno skupljanje informacija o korisniku err_pwnam = neuspijesno skupljanje informacija o korisniku
err_user_gid = neuspijesno postavljanje korisničkog GID-a err_user_gid = neuspijesno postavljanje korisničkog GID-a
err_user_init = neuspijensa inicijalizacija korisnika err_user_init = neuspijensa inicijalizacija korisnika
err_user_uid = neuspijesno postavljanje UID-a korisnika err_user_uid = neuspijesno postavljanje UID-a korisnika
err_xsessions_dir = neuspijesno pronalazenje foldera sesija err_xsessions_dir = neuspijesno pronalazenje foldera sesija
err_xsessions_open = neuspijesno otvaranje foldera sesija err_xsessions_open = neuspijesno otvaranje foldera sesija
login = korisnik login = korisnik
logout = izlogovan logout = izlogovan
numlock = numlock numlock = numlock
password = lozinka password = lozinka
restart = ponovo pokreni restart = ponovo pokreni
shell = shell shell = shell
shutdown = ugasi shutdown = ugasi
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -1,13 +1,20 @@
capslock = capslock capslock = capslock
err_alloc = misslyckad minnesallokering err_alloc = misslyckad minnesallokering
err_bounds = utanför banan index err_bounds = utanför banan index
err_chdir = misslyckades att öppna hemkatalog err_chdir = misslyckades att öppna hemkatalog
err_console_dev = misslyckades att komma åt konsol err_console_dev = misslyckades att komma åt konsol
err_dgn_oob = loggmeddelande err_dgn_oob = loggmeddelande
err_domain = okänd domän err_domain = okänd domän
err_hostname = misslyckades att hämta värdnamn err_hostname = misslyckades att hämta värdnamn
err_mlock = misslyckades att låsa lösenordsminne err_mlock = misslyckades att låsa lösenordsminne
err_null = nullpekare err_null = nullpekare
err_pam = pam-transaktion misslyckades err_pam = pam-transaktion misslyckades
err_pam_abort = pam-transaktion avbröts err_pam_abort = pam-transaktion avbröts
err_pam_acct_expired = konto upphört err_pam_acct_expired = konto upphört
@ -29,17 +36,27 @@ err_perm_dir = misslyckades att ändra aktuell katalog
err_perm_group = misslyckades att nergradera gruppbehörigheter err_perm_group = misslyckades att nergradera gruppbehörigheter
err_perm_user = misslyckades att nergradera användarbehörigheter err_perm_user = misslyckades att nergradera användarbehörigheter
err_pwnam = misslyckades att hämta användarinfo err_pwnam = misslyckades att hämta användarinfo
err_user_gid = misslyckades att ställa in användar-GID err_user_gid = misslyckades att ställa in användar-GID
err_user_init = misslyckades att initialisera användaren err_user_init = misslyckades att initialisera användaren
err_user_uid = misslyckades att ställa in användar-UID err_user_uid = misslyckades att ställa in användar-UID
err_xsessions_dir = misslyckades att hitta sessionskatalog err_xsessions_dir = misslyckades att hitta sessionskatalog
err_xsessions_open = misslyckades att öppna sessionskatalog err_xsessions_open = misslyckades att öppna sessionskatalog
login = inloggning login = inloggning
logout = utloggad logout = utloggad
numlock = numlock numlock = numlock
password = lösenord password = lösenord
restart = starta om restart = starta om
shell = skal shell = skal
shutdown = stäng av shutdown = stäng av
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -1,13 +1,20 @@
capslock = capslock capslock = capslock
err_alloc = basarisiz bellek ayirma err_alloc = basarisiz bellek ayirma
err_bounds = sinirlarin disinda dizin err_bounds = sinirlarin disinda dizin
err_chdir = ev klasoru acilamadi err_chdir = ev klasoru acilamadi
err_console_dev = konsola erisilemedi err_console_dev = konsola erisilemedi
err_dgn_oob = log mesaji err_dgn_oob = log mesaji
err_domain = gecersiz etki alani err_domain = gecersiz etki alani
err_hostname = ana bilgisayar adi alinamadi err_hostname = ana bilgisayar adi alinamadi
err_mlock = parola bellegi kilitlenemedi err_mlock = parola bellegi kilitlenemedi
err_null = bos isaretci hatasi err_null = bos isaretci hatasi
err_pam = pam islemi basarisiz oldu err_pam = pam islemi basarisiz oldu
err_pam_abort = pam islemi durduruldu err_pam_abort = pam islemi durduruldu
err_pam_acct_expired = hesabin suresi dolmus err_pam_acct_expired = hesabin suresi dolmus
@ -29,17 +36,27 @@ err_perm_dir = gecerli dizin degistirilemedi
err_perm_group = grup izinleri dusurulemedi err_perm_group = grup izinleri dusurulemedi
err_perm_user = kullanici izinleri dusurulemedi err_perm_user = kullanici izinleri dusurulemedi
err_pwnam = kullanici bilgileri alinamadi err_pwnam = kullanici bilgileri alinamadi
err_user_gid = kullanici icin GID ayarlanamadi err_user_gid = kullanici icin GID ayarlanamadi
err_user_init = kullanici oturumu baslatilamadi err_user_init = kullanici oturumu baslatilamadi
err_user_uid = kullanici icin UID ayarlanamadi err_user_uid = kullanici icin UID ayarlanamadi
err_xsessions_dir = oturumlar klasoru bulunamadi err_xsessions_dir = oturumlar klasoru bulunamadi
err_xsessions_open = oturumlar klasoru acilamadi err_xsessions_open = oturumlar klasoru acilamadi
login = kullanici login = kullanici
logout = oturumdan cikis yapildi logout = oturumdan cikis yapildi
numlock = numlock numlock = numlock
password = sifre password = sifre
restart = yeniden baslat restart = yeniden baslat
shell = shell shell = shell
shutdown = makineyi kapat shutdown = makineyi kapat
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -1,13 +1,20 @@
capslock = capslock capslock = capslock
err_alloc = невдале виділення пам'яті err_alloc = невдале виділення пам'яті
err_bounds = поза межами індексу err_bounds = поза межами індексу
err_chdir = не вдалося відкрити домашній каталог err_chdir = не вдалося відкрити домашній каталог
err_console_dev = невдалий доступ до консолі err_console_dev = невдалий доступ до консолі
err_dgn_oob = повідомлення журналу (log) err_dgn_oob = повідомлення журналу (log)
err_domain = недійсний домен err_domain = недійсний домен
err_hostname = не вдалося отримати ім'я хосту err_hostname = не вдалося отримати ім'я хосту
err_mlock = збій блокування пам'яті err_mlock = збій блокування пам'яті
err_null = нульовий вказівник err_null = нульовий вказівник
err_pam = невдала pam транзакція err_pam = невдала pam транзакція
err_pam_abort = pam транзакція перервана err_pam_abort = pam транзакція перервана
err_pam_acct_expired = термін дії акаунту вичерпано err_pam_acct_expired = термін дії акаунту вичерпано
@ -29,17 +36,27 @@ err_perm_dir = не вдалося змінити поточний катало
err_perm_group = не вдалося понизити права доступу групи err_perm_group = не вдалося понизити права доступу групи
err_perm_user = не вдалося понизити права доступу користувача err_perm_user = не вдалося понизити права доступу користувача
err_pwnam = не вдалося отримати дані користувача err_pwnam = не вдалося отримати дані користувача
err_user_gid = не вдалося змінити GID користувача err_user_gid = не вдалося змінити GID користувача
err_user_init = не вдалося ініціалізувати користувача err_user_init = не вдалося ініціалізувати користувача
err_user_uid = не вдалося змінити UID користувача err_user_uid = не вдалося змінити UID користувача
err_xsessions_dir = не вдалося знайти каталог сесій err_xsessions_dir = не вдалося знайти каталог сесій
err_xsessions_open = не вдалося відкрити каталог сесій err_xsessions_open = не вдалося відкрити каталог сесій
login = логін login = логін
logout = вийти logout = вийти
numlock = numlock numlock = numlock
password = пароль password = пароль
restart = перезавантажити restart = перезавантажити
shell = оболонка shell = оболонка
shutdown = вимкнути shutdown = вимкнути
wayland = wayland wayland = wayland
xinitrc = xinitrc xinitrc = xinitrc

View File

@ -9,7 +9,7 @@ const ErrorHandler = packed struct {
const SharedError = @This(); const SharedError = @This();
data: []align(std.mem.page_size) u8, data: []align(std.heap.page_size_min) u8,
pub fn init() !SharedError { pub fn init() !SharedError {
const data = try std.posix.mmap(null, @sizeOf(ErrorHandler), std.posix.PROT.READ | std.posix.PROT.WRITE, .{ .TYPE = .SHARED, .ANONYMOUS = true }, -1, 0); const data = try std.posix.mmap(null, @sizeOf(ErrorHandler), std.posix.PROT.READ | std.posix.PROT.WRITE, .{ .TYPE = .SHARED, .ANONYMOUS = true }, -1, 0);

View File

@ -1,6 +1,6 @@
const std = @import("std"); const std = @import("std");
const Allocator = std.mem.Allocator; const Allocator = std.mem.Allocator;
const Random = std.rand.Random; const Random = std.Random;
const TerminalBuffer = @import("../tui/TerminalBuffer.zig"); const TerminalBuffer = @import("../tui/TerminalBuffer.zig");
const interop = @import("../interop.zig"); const interop = @import("../interop.zig");

View File

@ -108,7 +108,7 @@ pub fn authenticate(config: Config, current_environment: Session.Environment, lo
.mask = std.posix.empty_sigset, .mask = std.posix.empty_sigset,
.flags = 0, .flags = 0,
}; };
try std.posix.sigaction(std.posix.SIG.TERM, &act, null); std.posix.sigaction(std.posix.SIG.TERM, &act, null);
try addUtmpEntry(&entry, pwd.pw_name.?, child_pid); try addUtmpEntry(&entry, pwd.pw_name.?, child_pid);
} }
@ -439,7 +439,7 @@ fn executeX11Cmd(shell: [*:0]const u8, pw_dir: [*:0]const u8, config: Config, de
.mask = std.posix.empty_sigset, .mask = std.posix.empty_sigset,
.flags = 0, .flags = 0,
}; };
try std.posix.sigaction(std.posix.SIG.TERM, &act, null); std.posix.sigaction(std.posix.SIG.TERM, &act, null);
_ = std.posix.waitpid(xorg_pid, 0); _ = std.posix.waitpid(xorg_pid, 0);
interop.xcb.xcb_disconnect(xcb); interop.xcb.xcb_disconnect(xcb);

View File

@ -1,3 +1,8 @@
//
// NOTE: After editing this file, please run `/res/lang/normalize_lang_files.py`
// to update all the language files accordingly.
//
authenticating: []const u8 = "authenticating...", authenticating: []const u8 = "authenticating...",
brightness_down: []const u8 = "decrease brightness", brightness_down: []const u8 = "decrease brightness",
brightness_up: []const u8 = "increase brightness", brightness_up: []const u8 = "increase brightness",
@ -48,8 +53,8 @@ err_xsessions_open: []const u8 = "failed to open sessions folder",
insert: []const u8 = "insert", insert: []const u8 = "insert",
login: []const u8 = "login:", login: []const u8 = "login:",
logout: []const u8 = "logged out", logout: []const u8 = "logged out",
normal: []const u8 = "normal",
no_x11_support: []const u8 = "x11 support disabled at compile-time", no_x11_support: []const u8 = "x11 support disabled at compile-time",
normal: []const u8 = "normal",
numlock: []const u8 = "numlock", numlock: []const u8 = "numlock",
other: []const u8 = "other", other: []const u8 = "other",
password: []const u8 = "password:", password: []const u8 = "password:",
@ -58,5 +63,5 @@ shell: [:0]const u8 = "shell",
shutdown: []const u8 = "shutdown", shutdown: []const u8 = "shutdown",
sleep: []const u8 = "sleep", sleep: []const u8 = "sleep",
wayland: []const u8 = "wayland", wayland: []const u8 = "wayland",
xinitrc: [:0]const u8 = "xinitrc",
x11: []const u8 = "x11", x11: []const u8 = "x11",
xinitrc: [:0]const u8 = "xinitrc",

View File

@ -128,7 +128,10 @@ pub fn main() !void {
const config_path = try std.fmt.allocPrint(allocator, "{s}{s}config.ini", .{ s, trailing_slash }); const config_path = try std.fmt.allocPrint(allocator, "{s}{s}config.ini", .{ s, trailing_slash });
defer allocator.free(config_path); defer allocator.free(config_path);
config = config_ini.readFileToStruct(config_path, comment_characters, migrator.configFieldHandler) catch _config: { config = config_ini.readFileToStruct(config_path, .{
.fieldHandler = migrator.configFieldHandler,
.comment_characters = comment_characters,
}) catch _config: {
config_load_failed = true; config_load_failed = true;
break :_config Config{}; break :_config Config{};
}; };
@ -136,21 +139,30 @@ pub fn main() !void {
const lang_path = try std.fmt.allocPrint(allocator, "{s}{s}lang/{s}.ini", .{ s, trailing_slash, config.lang }); const lang_path = try std.fmt.allocPrint(allocator, "{s}{s}lang/{s}.ini", .{ s, trailing_slash, config.lang });
defer allocator.free(lang_path); defer allocator.free(lang_path);
lang = lang_ini.readFileToStruct(lang_path, comment_characters, null) catch Lang{}; lang = lang_ini.readFileToStruct(lang_path, .{
.fieldHandler = null,
.comment_characters = comment_characters,
}) catch Lang{};
if (config.load) { if (config.load) {
save_path = try std.fmt.allocPrint(allocator, "{s}{s}save.ini", .{ s, trailing_slash }); save_path = try std.fmt.allocPrint(allocator, "{s}{s}save.ini", .{ s, trailing_slash });
save_path_alloc = true; save_path_alloc = true;
var user_buf: [32]u8 = undefined; var user_buf: [32]u8 = undefined;
save = save_ini.readFileToStruct(save_path, comment_characters, null) catch migrator.tryMigrateSaveFile(&user_buf); save = save_ini.readFileToStruct(save_path, .{
.fieldHandler = null,
.comment_characters = comment_characters,
}) catch migrator.tryMigrateSaveFile(&user_buf);
} }
migrator.lateConfigFieldHandler(&config.animation); migrator.lateConfigFieldHandler(&config.animation);
} else { } else {
const config_path = build_options.config_directory ++ "/ly/config.ini"; const config_path = build_options.config_directory ++ "/ly/config.ini";
config = config_ini.readFileToStruct(config_path, comment_characters, migrator.configFieldHandler) catch _config: { config = config_ini.readFileToStruct(config_path, .{
.fieldHandler = migrator.configFieldHandler,
.comment_characters = comment_characters,
}) catch _config: {
config_load_failed = true; config_load_failed = true;
break :_config Config{}; break :_config Config{};
}; };
@ -158,11 +170,17 @@ pub fn main() !void {
const lang_path = try std.fmt.allocPrint(allocator, "{s}/ly/lang/{s}.ini", .{ build_options.config_directory, config.lang }); const lang_path = try std.fmt.allocPrint(allocator, "{s}/ly/lang/{s}.ini", .{ build_options.config_directory, config.lang });
defer allocator.free(lang_path); defer allocator.free(lang_path);
lang = lang_ini.readFileToStruct(lang_path, comment_characters, null) catch Lang{}; lang = lang_ini.readFileToStruct(lang_path, .{
.fieldHandler = null,
.comment_characters = comment_characters,
}) catch Lang{};
if (config.load) { if (config.load) {
var user_buf: [32]u8 = undefined; var user_buf: [32]u8 = undefined;
save = save_ini.readFileToStruct(save_path, comment_characters, null) catch migrator.tryMigrateSaveFile(&user_buf); save = save_ini.readFileToStruct(save_path, .{
.fieldHandler = null,
.comment_characters = comment_characters,
}) catch migrator.tryMigrateSaveFile(&user_buf);
} }
migrator.lateConfigFieldHandler(&config.animation); migrator.lateConfigFieldHandler(&config.animation);
@ -192,7 +210,7 @@ pub fn main() !void {
.mask = std.posix.empty_sigset, .mask = std.posix.empty_sigset,
.flags = 0, .flags = 0,
}; };
try std.posix.sigaction(std.posix.SIG.TERM, &act, null); std.posix.sigaction(std.posix.SIG.TERM, &act, null);
_ = termbox.tb_set_output_mode(termbox.TB_OUTPUT_NORMAL); _ = termbox.tb_set_output_mode(termbox.TB_OUTPUT_NORMAL);
_ = termbox.tb_clear(); _ = termbox.tb_clear();
@ -677,7 +695,7 @@ pub fn main() !void {
.user = login.text.items, .user = login.text.items,
.session_index = session.label.current, .session_index = session.label.current,
}; };
ini.writeFromStruct(save_data, file.writer(), null, true, .{}) catch break :save_last_settings; ini.writeFromStruct(save_data, file.writer(), null, .{}) catch break :save_last_settings;
// Delete previous save file if it exists // Delete previous save file if it exists
if (migrator.maybe_save_file) |path| std.fs.cwd().deleteFile(path) catch {}; if (migrator.maybe_save_file) |path| std.fs.cwd().deleteFile(path) catch {};

View File

@ -110,7 +110,10 @@ pub fn crawl(self: *Session, path: []const u8, display_server: DisplayServer) !v
const entry_path = try std.fmt.allocPrint(self.label.allocator, "{s}/{s}", .{ path, item.name }); const entry_path = try std.fmt.allocPrint(self.label.allocator, "{s}/{s}", .{ path, item.name });
defer self.label.allocator.free(entry_path); defer self.label.allocator.free(entry_path);
var entry_ini = Ini(Entry).init(self.label.allocator); var entry_ini = Ini(Entry).init(self.label.allocator);
_ = try entry_ini.readFileToStruct(entry_path, "#", null); _ = try entry_ini.readFileToStruct(entry_path, .{
.fieldHandler = null,
.comment_characters = "#",
});
errdefer entry_ini.deinit(); errdefer entry_ini.deinit();
var xdg_session_desktop: []const u8 = undefined; var xdg_session_desktop: []const u8 = undefined;