mirror of
https://codeberg.org/fairyglade/ly.git
synced 2026-08-20 20:44:19 +02:00
Merge branch 'master' into refac
This commit is contained in:
commit
f0343b79e4
29 changed files with 298 additions and 73 deletions
2
.github/ISSUE_TEMPLATE/bug.yml
vendored
2
.github/ISSUE_TEMPLATE/bug.yml
vendored
|
|
@ -11,6 +11,8 @@ body:
|
|||
options:
|
||||
- label: I have looked for any other duplicate issues
|
||||
required: true
|
||||
- label: I have reproduced the issue on a fresh install of my OS & Ly with default settings, except ones I will mention
|
||||
required: true
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
|
|
|
|||
11
.github/pull_request_template.md
vendored
Normal file
11
.github/pull_request_template.md
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
## What are the changes about?
|
||||
|
||||
_Replace this with a brief description of your changes_
|
||||
|
||||
## What existing issue does this resolve?
|
||||
|
||||
_Replace this with a reference to an existing issue, or N/A if there is none_
|
||||
|
||||
## Pre-requisites
|
||||
|
||||
- [ ] I have tested & confirmed the changes work locally
|
||||
|
|
@ -44,6 +44,8 @@ pub fn build(b: *std.Build) !void {
|
|||
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 2). This value gets embedded into the binary") orelse 2;
|
||||
const fallback_uid_min = b.option(std.posix.uid_t, "fallback_uid_min", "Set the fallback minimum UID (default is 1000). This value gets embedded into the binary") orelse 1000;
|
||||
const fallback_uid_max = b.option(std.posix.uid_t, "fallback_uid_max", "Set the fallback maximum UID (default is 60000). This value gets embedded into the binary") orelse 60000;
|
||||
|
||||
default_tty_str = try std.fmt.allocPrint(b.allocator, "{d}", .{default_tty});
|
||||
|
||||
|
|
@ -52,6 +54,8 @@ pub fn build(b: *std.Build) !void {
|
|||
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(std.posix.uid_t, "fallback_uid_min", fallback_uid_min);
|
||||
build_options.addOption(std.posix.uid_t, "fallback_uid_max", fallback_uid_max);
|
||||
build_options.addOption(bool, "enable_x11_support", enable_x11_support);
|
||||
|
||||
const target = b.standardTargetOptions(.{});
|
||||
|
|
|
|||
|
|
@ -5,12 +5,12 @@
|
|||
.minimum_zig_version = "0.15.0",
|
||||
.dependencies = .{
|
||||
.clap = .{
|
||||
.url = "https://github.com/Hejsil/zig-clap/archive/refs/tags/0.11.0.tar.gz",
|
||||
.url = "git+https://github.com/Hejsil/zig-clap?ref=0.11.0",
|
||||
.hash = "clap-0.11.0-oBajB-HnAQDPCKYzwF7rO3qDFwRcD39Q0DALlTSz5H7e",
|
||||
},
|
||||
.zigini = .{
|
||||
.url = "https://github.com/AnErrupTion/zigini/archive/96ca1d9f1a7ec741f07ceb104dae2b3a7bdfd48a.tar.gz",
|
||||
.hash = "zigini-0.3.2-BSkB7WJJAADybd5DGd9MLCp6ikGGUq9wicxsjv0HF1Qc",
|
||||
.url = "git+https://github.com/AnErrupTion/zigini?ref=zig-0.15.0#9281f47702b57779e831d7618e158abb8eb4d4a2",
|
||||
.hash = "zigini-0.3.3-36M0FRJJAADZVq5HPm-hYKMpFFTr0OgjbEYcK2ijKZ5n",
|
||||
},
|
||||
.termbox2 = .{
|
||||
.url = "git+https://github.com/AnErrupTion/termbox2?ref=master#290ac6b8225aacfd16851224682b851b65fcb918",
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ animation_timeout_sec = 0
|
|||
asterisk = *
|
||||
|
||||
# The number of failed authentications before a special animation is played... ;)
|
||||
# If set to 0, the animation will never be played
|
||||
auth_fails = 10
|
||||
|
||||
# Identifier for battery whose charge to display at top left
|
||||
|
|
@ -162,7 +163,7 @@ doom_middle_color = 0x00C78F17
|
|||
# DOOM animation custom bottom color (high intensity flames)
|
||||
doom_bottom_color = 0x00FFFFFF
|
||||
|
||||
# Set margin to the edges of the DM (useful for curved monitors)
|
||||
# Set margin to the edges of the DM (useful for curved monitors)
|
||||
edge_margin = 0
|
||||
|
||||
# Error background color id
|
||||
|
|
@ -213,7 +214,7 @@ gameoflife_frame_delay = 6
|
|||
gameoflife_initial_density = 0.4
|
||||
|
||||
# Command executed when pressing hibernate key (can be null)
|
||||
hibernate_cmd = null
|
||||
hibernate_cmd = null
|
||||
|
||||
# Specifies the key used for hibernate (F1-F12)
|
||||
hibernate_key = F4
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = capslock
|
|||
|
||||
err_alloc = فشل في تخصيص الذاكرة
|
||||
|
||||
|
||||
err_bounds = out-of-bounds index
|
||||
err_brightness_change = فشل في تغيير سطوع الشاشة
|
||||
err_chdir = فشل في فتح مجلد المنزل
|
||||
|
||||
err_config = فشل في تفسير ملف الإعدادات
|
||||
|
||||
err_dgn_oob = رسالة سجل (Log)
|
||||
err_domain = اسم نطاق غير صالح
|
||||
err_empty_password = لا يُسمح بكلمة مرور فارغة
|
||||
err_envlist = فشل في جلب قائمة المتغيرات البيئية
|
||||
|
||||
|
||||
err_hostname = فشل في جلب اسم المضيف (Hostname)
|
||||
|
||||
|
||||
|
|
@ -42,12 +45,12 @@ err_perm_dir = فشل في تغيير المجلد الحالي
|
|||
err_perm_group = فشل في تخفيض صلاحيات المجموعة (Group permissions)
|
||||
err_perm_user = فشل في تخفيض صلاحيات المستخدم (User permissions)
|
||||
err_pwnam = فشل في جلب معلومات المستخدم
|
||||
|
||||
err_sleep = فشل في تنفيذ أمر sleep
|
||||
|
||||
|
||||
err_tty_ctrl = فشل في نقل تحكم الطرفية (TTY)
|
||||
|
||||
|
||||
err_user_gid = فشل في تعيين معرّف المجموعة (GID) للمستخدم
|
||||
err_user_init = فشل في تهيئة بيانات المستخدم
|
||||
err_user_uid = فشل في تعيين معرّف المستخدم (UID)
|
||||
|
|
@ -55,6 +58,7 @@ err_xauth = فشل في تنفيذ أمر xauth
|
|||
err_xcb_conn = فشل في الاتصال بمكتبة XCB
|
||||
err_xsessions_dir = فشل في العثور على مجلد Xsessions
|
||||
err_xsessions_open = فشل في فتح مجلد Xsessions
|
||||
|
||||
insert = ادخال
|
||||
login = تسجيل الدخول
|
||||
logout = تم تسجيل خروجك
|
||||
|
|
@ -67,7 +71,6 @@ restart = اعادة التشغيل
|
|||
shell = shell
|
||||
shutdown = ايقاف التشغيل
|
||||
sleep = وضع السكون
|
||||
|
||||
wayland = wayland
|
||||
x11 = x11
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
76
res/lang/bg.ini
Normal file
76
res/lang/bg.ini
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
authenticating = удостоверяване...
|
||||
brightness_down = намаляване на яркостта
|
||||
brightness_up = увеличаване на яркостта
|
||||
capslock = caps lock
|
||||
custom = персонализирано
|
||||
err_alloc = неуспешно заделяне на памет
|
||||
err_args = неуспешен анализ на аргументите от командния ред
|
||||
err_autologin_session = сесията за автоматично влизане не е намерена
|
||||
err_bounds = индексът е извън границите
|
||||
err_brightness_change = неуспешна промяна на яркостта
|
||||
err_chdir = неуспешно отваряне на домашната папка
|
||||
err_clock_too_long = низът на часовника е твърде дълъг
|
||||
err_config = неуспешен анализ на конфигурационния файл
|
||||
err_crawl = неуспешно обхождане на папките със сесии
|
||||
err_dgn_oob = съобщение в дневника
|
||||
err_domain = невалиден домейн
|
||||
err_empty_password = не е позволена празна парола
|
||||
err_envlist = неуспешно получаване на списъка с променливи на средата
|
||||
err_get_active_tty = неуспешно откриване на активния TTY
|
||||
err_hibernate = неуспешно изпълнение на командата за хибернация
|
||||
err_hostname = неуспешно получаване на името на хоста
|
||||
err_lock_state = неуспешно получаване на състоянието на заключване
|
||||
err_log = неуспешно отваряне на файла с дневника
|
||||
err_mlock = неуспешно заключване на паметта за паролата
|
||||
err_null = нулев указател
|
||||
err_numlock = неуспешно задаване на num lock
|
||||
err_pam = неуспешна транзакция
|
||||
err_pam_abort = прекратена транзакция
|
||||
err_pam_acct_expired = изтекъл профил
|
||||
err_pam_auth = грешка при удостоверяването
|
||||
err_pam_authinfo_unavail = неуспешно получаване на информация за потребителя
|
||||
err_pam_authok_reqd = изтекъл жетон
|
||||
err_pam_buf = грешка в буфера на паметта
|
||||
err_pam_cred_err = неуспешно задаване на удостоверения
|
||||
err_pam_cred_expired = изтекли удостоверения
|
||||
err_pam_cred_insufficient = недостатъчни удостоверения
|
||||
err_pam_cred_unavail = неуспешно получаване на удостоверения
|
||||
err_pam_maxtries = достигнат е максималният лимит на опитите
|
||||
err_pam_perm_denied = достъпът е отказан
|
||||
err_pam_session = грешка в сесията
|
||||
err_pam_sys = системна грешка
|
||||
err_pam_user_unknown = непознат потребител
|
||||
err_path = неуспешно задаване на пътя
|
||||
err_perm_dir = неуспешна смяна на текущата папка
|
||||
err_perm_group = неуспешно понижаване на правата на групата
|
||||
err_perm_user = неуспешно понижаване на правата на потребителя
|
||||
err_pwnam = неуспешно получаване на информация за потребителя
|
||||
err_sleep = неуспешно изпълнение на командата за заспиване
|
||||
err_battery = неуспешно зареждане на състоянието на батерията
|
||||
err_switch_tty = неуспешна смяна на TTY
|
||||
err_tty_ctrl = неуспешно прехвърляне на контрола над TTY
|
||||
err_no_users = не са намерени потребители
|
||||
err_uid_range = неуспешно динамично получаване на UID обхват
|
||||
err_user_gid = неуспешно задаване на потребителския GID
|
||||
err_user_init = неуспешна стартиране на потребителя
|
||||
err_user_uid = неуспешно задаване на потребителския UID
|
||||
err_xauth = неуспешна команда xauth
|
||||
err_xcb_conn = неуспешна xcb връзка
|
||||
err_xsessions_dir = папката със сесии не е намерена
|
||||
err_xsessions_open = неуспешно отваряне на папката със сесии
|
||||
hibernate = хибернация
|
||||
insert = вмъкване
|
||||
login = вход
|
||||
logout = излизане
|
||||
no_x11_support = поддръжката на x11 е изключена при компилирането
|
||||
normal = нормално
|
||||
numlock = num lock
|
||||
other = друго
|
||||
password = парола
|
||||
restart = рестартиране
|
||||
shell = обвивка
|
||||
shutdown = изключване
|
||||
sleep = заспиване
|
||||
wayland = wayland
|
||||
x11 = x11
|
||||
xinitrc = xinitrc
|
||||
|
|
@ -5,16 +5,19 @@ capslock = Bloq Majús
|
|||
|
||||
err_alloc = assignació de memòria fallida
|
||||
|
||||
|
||||
err_bounds = índex fora de límits
|
||||
err_brightness_change = error en canviar la brillantor
|
||||
err_chdir = error en obrir la carpeta home
|
||||
|
||||
|
||||
|
||||
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ó
|
||||
|
||||
|
||||
|
|
@ -55,6 +58,7 @@ err_xauth = error en la comanda xauth
|
|||
err_xcb_conn = error en la connexió xcb
|
||||
err_xsessions_dir = error en trobar la carpeta de sessions
|
||||
err_xsessions_open = error en obrir la carpeta de sessions
|
||||
|
||||
insert = inserir
|
||||
login = iniciar sessió
|
||||
logout = sessió tancada
|
||||
|
|
@ -67,7 +71,6 @@ restart = reiniciar
|
|||
shell = shell
|
||||
shutdown = aturar
|
||||
sleep = suspendre
|
||||
|
||||
wayland = wayland
|
||||
x11 = x11
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = capslock
|
|||
|
||||
err_alloc = alokace paměti selhala
|
||||
|
||||
|
||||
err_bounds = index je mimo hranice pole
|
||||
|
||||
err_chdir = nelze otevřít domovský adresář
|
||||
|
||||
|
||||
|
||||
err_dgn_oob = zpráva protokolu
|
||||
err_domain = neplatná doména
|
||||
|
||||
|
||||
|
||||
|
||||
err_hostname = nelze získat název hostitele
|
||||
|
||||
|
||||
|
|
@ -56,6 +59,7 @@ err_user_uid = nastavení UID uživateli selhalo
|
|||
err_xsessions_dir = nepodařilo se najít složku relací
|
||||
err_xsessions_open = nepodařilo se otevřít složku relací
|
||||
|
||||
|
||||
login = uživatel
|
||||
logout = odhlášen
|
||||
|
||||
|
|
@ -67,7 +71,6 @@ restart = restartovat
|
|||
shell = příkazový řádek
|
||||
shutdown = vypnout
|
||||
|
||||
|
||||
wayland = wayland
|
||||
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = Feststelltaste
|
|||
|
||||
err_alloc = Speicherzuweisung fehlgeschlagen
|
||||
|
||||
|
||||
err_bounds = Index ausserhalb des Bereichs
|
||||
err_brightness_change = Helligkeitsänderung fehlgeschlagen
|
||||
err_chdir = Fehler beim Oeffnen des Home-Ordners
|
||||
|
||||
err_config = Fehler beim Verarbeiten der Konfigurationsdatei
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
|
@ -42,12 +45,12 @@ err_perm_dir = Ordnerwechsel fehlgeschlagen
|
|||
err_perm_group = Fehler beim Heruntersetzen der Gruppenberechtigungen
|
||||
err_perm_user = Fehler beim Heruntersetzen der Nutzerberechtigungen
|
||||
err_pwnam = Abrufen der Benutzerinformationen fehlgeschlagen
|
||||
|
||||
err_sleep = Sleep-Befehl fehlgeschlagen
|
||||
|
||||
|
||||
err_tty_ctrl = Fehler bei der TTY-Uebergabe
|
||||
|
||||
|
||||
err_user_gid = Fehler beim Setzen der Gruppen-ID
|
||||
err_user_init = Nutzer-Initialisierung fehlgeschlagen
|
||||
err_user_uid = Setzen der Benutzer-ID fehlgeschlagen
|
||||
|
|
@ -55,6 +58,7 @@ err_xauth = Xauth-Befehl fehlgeschlagen
|
|||
err_xcb_conn = xcb-Verbindung fehlgeschlagen
|
||||
err_xsessions_dir = Fehler beim Finden des Sitzungsordners
|
||||
err_xsessions_open = Fehler beim Oeffnen des Sitzungsordners
|
||||
|
||||
insert = Einfügen
|
||||
login = Nutzer
|
||||
logout = Abmelden
|
||||
|
|
@ -67,7 +71,6 @@ restart = Neustarten
|
|||
shell = Shell
|
||||
shutdown = Herunterfahren
|
||||
sleep = Sleep
|
||||
|
||||
wayland = wayland
|
||||
x11 = X11
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -4,17 +4,20 @@ brightness_up = increase brightness
|
|||
capslock = capslock
|
||||
custom = custom
|
||||
err_alloc = failed memory allocation
|
||||
err_args = unable to parse command line arguments
|
||||
err_autologin_session = autologin session not found
|
||||
err_bounds = out-of-bounds index
|
||||
err_brightness_change = failed to change brightness
|
||||
err_chdir = failed to open home folder
|
||||
err_clock_too_long = clock string too long
|
||||
err_config = unable to parse config file
|
||||
err_crawl = failed to crawl session directories
|
||||
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_hibernate = failed to execute hibernate command
|
||||
err_hostname = failed to get hostname
|
||||
err_lock_state = failed to get lock state
|
||||
err_log = failed to open log file
|
||||
|
|
@ -42,12 +45,12 @@ err_perm_dir = failed to change current directory
|
|||
err_perm_group = failed to downgrade group permissions
|
||||
err_perm_user = failed to downgrade user permissions
|
||||
err_pwnam = failed to get user info
|
||||
|
||||
|
||||
err_sleep = failed to execute sleep command
|
||||
err_battery = failed to load battery status
|
||||
err_switch_tty = failed to switch tty
|
||||
err_tty_ctrl = tty control transfer failed
|
||||
err_no_users = no users found
|
||||
err_uid_range = failed to dynamically get uid range
|
||||
err_user_gid = failed to set user GID
|
||||
err_user_init = failed to initialize user
|
||||
err_user_uid = failed to set user UID
|
||||
|
|
@ -55,6 +58,7 @@ err_xauth = xauth command failed
|
|||
err_xcb_conn = xcb connection failed
|
||||
err_xsessions_dir = failed to find sessions folder
|
||||
err_xsessions_open = failed to open sessions folder
|
||||
hibernate = hibernate
|
||||
insert = insert
|
||||
login = login
|
||||
logout = logged out
|
||||
|
|
@ -67,7 +71,6 @@ restart = reboot
|
|||
shell = shell
|
||||
shutdown = shutdown
|
||||
sleep = sleep
|
||||
|
||||
wayland = wayland
|
||||
x11 = x11
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = Bloq Mayús
|
|||
|
||||
err_alloc = asignación de memoria fallida
|
||||
|
||||
|
||||
err_bounds = índice fuera de límites
|
||||
|
||||
err_chdir = error al abrir la carpeta home
|
||||
|
||||
|
||||
|
||||
err_dgn_oob = mensaje de registro
|
||||
err_domain = dominio inválido
|
||||
|
||||
|
||||
|
||||
|
||||
err_hostname = error al obtener el nombre de host
|
||||
|
||||
|
||||
|
|
@ -55,6 +58,7 @@ err_user_uid = error al establecer el UID del usuario
|
|||
|
||||
err_xsessions_dir = error al buscar la carpeta de sesiones
|
||||
err_xsessions_open = error al abrir la carpeta de sesiones
|
||||
|
||||
insert = insertar
|
||||
login = usuario
|
||||
logout = cerrar sesión
|
||||
|
|
@ -67,7 +71,6 @@ restart = reiniciar
|
|||
shell = shell
|
||||
shutdown = apagar
|
||||
sleep = suspender
|
||||
|
||||
wayland = wayland
|
||||
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -4,17 +4,20 @@ brightness_up = augmenter la luminosité
|
|||
capslock = verr.maj
|
||||
custom = customisé
|
||||
err_alloc = échec d'allocation mémoire
|
||||
|
||||
err_args = échec de l'analyse des arguments en lignes de commande
|
||||
err_autologin_session = session de connexion automatique introuvable
|
||||
err_bounds = indice hors-limite
|
||||
err_brightness_change = échec du changement de luminosité
|
||||
err_chdir = échec de l'ouverture du répertoire home
|
||||
err_clock_too_long = chaîne de formattage de l'horloge trop longue
|
||||
err_config = échec de lecture du fichier de configuration
|
||||
err_crawl = échec de la navigation des répertoires de session
|
||||
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_hibernate = échec de l'exécution de la commande de veille prolongée
|
||||
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
|
||||
|
|
@ -42,12 +45,12 @@ err_perm_dir = échec de changement de répertoire
|
|||
err_perm_group = échec du déclassement des permissions de groupe
|
||||
err_perm_user = échec du déclassement des permissions utilisateur
|
||||
err_pwnam = échec de lecture des infos utilisateur
|
||||
|
||||
err_sleep = échec de l'exécution de la commande de veille
|
||||
err_battery = échec de lecture de l'état de la batterie
|
||||
err_switch_tty = échec du changement de terminal
|
||||
err_tty_ctrl = échec du transfert de contrôle du terminal
|
||||
err_no_users = aucun utilisateur trouvé
|
||||
err_uid_range = échec de récupération dynamique de la plage d'UID
|
||||
err_user_gid = échec de modification du GID
|
||||
err_user_init = échec d'initialisation de l'utilisateur
|
||||
err_user_uid = échec de modification du UID
|
||||
|
|
@ -55,6 +58,7 @@ err_xauth = échec de la commande xauth
|
|||
err_xcb_conn = échec de la connexion xcb
|
||||
err_xsessions_dir = échec de la recherche du dossier de sessions
|
||||
err_xsessions_open = échec de l'ouverture du dossier de sessions
|
||||
hibernate = veille prolongée
|
||||
insert = insertion
|
||||
login = identifiant
|
||||
logout = déconnecté
|
||||
|
|
@ -67,7 +71,6 @@ restart = redémarrer
|
|||
shell = shell
|
||||
shutdown = éteindre
|
||||
sleep = veille
|
||||
|
||||
wayland = wayland
|
||||
x11 = x11
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = capslock
|
|||
|
||||
err_alloc = impossibile allocare memoria
|
||||
|
||||
|
||||
err_bounds = indice fuori limite
|
||||
|
||||
err_chdir = impossibile aprire home directory
|
||||
|
||||
|
||||
|
||||
err_dgn_oob = messaggio log
|
||||
err_domain = dominio non valido
|
||||
|
||||
|
||||
|
||||
|
||||
err_hostname = impossibile ottenere hostname
|
||||
|
||||
|
||||
|
|
@ -56,6 +59,7 @@ err_user_uid = impossible impostare UID utente
|
|||
err_xsessions_dir = impossibile localizzare cartella sessioni
|
||||
err_xsessions_open = impossibile aprire cartella sessioni
|
||||
|
||||
|
||||
login = username
|
||||
logout = scollegato
|
||||
|
||||
|
|
@ -67,7 +71,6 @@ restart = riavvio
|
|||
shell = shell
|
||||
shutdown = arresto
|
||||
|
||||
|
||||
wayland = wayland
|
||||
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = CapsLock
|
|||
|
||||
err_alloc = メモリ割り当て失敗
|
||||
|
||||
|
||||
err_bounds = 境界外インデックス
|
||||
err_brightness_change = 明るさの変更に失敗しました
|
||||
err_chdir = ホームフォルダを開けませんでした
|
||||
|
||||
err_config = 設定ファイルを解析できません
|
||||
|
||||
err_dgn_oob = ログメッセージ
|
||||
err_domain = 無効なドメイン
|
||||
err_empty_password = 空のパスワードは許可されていません
|
||||
err_envlist = 環境変数リストの取得に失敗しました
|
||||
|
||||
|
||||
err_hostname = ホスト名の取得に失敗しました
|
||||
|
||||
|
||||
|
|
@ -42,12 +45,12 @@ err_perm_dir = カレントディレクトリの変更に失敗しました
|
|||
err_perm_group = グループ権限のダウングレードに失敗しました
|
||||
err_perm_user = ユーザー権限のダウングレードに失敗しました
|
||||
err_pwnam = ユーザー情報の取得に失敗しました
|
||||
|
||||
err_sleep = スリープコマンドの実行に失敗しました
|
||||
|
||||
|
||||
err_tty_ctrl = TTY制御の転送に失敗しました
|
||||
|
||||
|
||||
err_user_gid = ユーザーGIDの設定に失敗しました
|
||||
err_user_init = ユーザーの初期化に失敗しました
|
||||
err_user_uid = ユーザーUIDの設定に失敗しました
|
||||
|
|
@ -55,6 +58,7 @@ err_xauth = xauthコマンドの実行に失敗しました
|
|||
err_xcb_conn = XCB接続に失敗しました
|
||||
err_xsessions_dir = セッションフォルダが見つかりませんでした
|
||||
err_xsessions_open = セッションフォルダを開けませんでした
|
||||
|
||||
insert = 挿入
|
||||
login = ログイン
|
||||
logout = ログアウト済み
|
||||
|
|
@ -67,7 +71,6 @@ restart = 再起動
|
|||
shell = シェル
|
||||
shutdown = シャットダウン
|
||||
sleep = スリープ
|
||||
|
||||
wayland = Wayland
|
||||
x11 = X11
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = caps lock
|
|||
custom = pielāgots
|
||||
err_alloc = neizdevās atmiņas piešķiršana
|
||||
|
||||
|
||||
err_bounds = indekss ārpus robežām
|
||||
err_brightness_change = neizdevās mainīt spilgtumu
|
||||
err_chdir = neizdevās atvērt mājas mapi
|
||||
err_clock_too_long = pulksteņa virkne pārāk gara
|
||||
err_config = neizdevās parsēt konfigurācijas failu
|
||||
|
||||
err_dgn_oob = žurnāla ziņojums
|
||||
err_domain = nederīgs domēns
|
||||
err_empty_password = tukša parole nav atļauta
|
||||
err_envlist = neizdevās iegūt vides mainīgo sarakstu
|
||||
err_get_active_tty = neizdevās iegūt aktīvo tty
|
||||
|
||||
err_hostname = neizdevās iegūt hostname
|
||||
err_lock_state = neizdevās iegūt bloķēšanas stāvokli
|
||||
err_log = neizdevās atvērt žurnāla failu
|
||||
|
|
@ -42,12 +45,12 @@ err_perm_dir = neizdevās mainīt pašreizējo mapi
|
|||
err_perm_group = neizdevās pazemināt grupas atļaujas
|
||||
err_perm_user = neizdevās pazemināt lietotāja atļaujas
|
||||
err_pwnam = neizdevās iegūt lietotāja informāciju
|
||||
|
||||
err_sleep = neizdevās izpildīt miega komandu
|
||||
err_battery = neizdevās ielādēt akumulatora stāvokli
|
||||
err_switch_tty = neizdevās pārslēgt tty
|
||||
err_tty_ctrl = tty vadības nodošana neizdevās
|
||||
err_no_users = lietotāji nav atrasti
|
||||
|
||||
err_user_gid = neizdevās iestatīt lietotāja GID
|
||||
err_user_init = neizdevās inicializēt lietotāju
|
||||
err_user_uid = neizdevās iestatīt lietotāja UID
|
||||
|
|
@ -55,6 +58,7 @@ err_xauth = xauth komanda neizdevās
|
|||
err_xcb_conn = xcb savienojums neizdevās
|
||||
err_xsessions_dir = neizdevās atrast sesiju mapi
|
||||
err_xsessions_open = neizdevās atvērt sesiju mapi
|
||||
|
||||
insert = ievietot
|
||||
login = lietotājs
|
||||
logout = iziet
|
||||
|
|
@ -67,7 +71,6 @@ restart = restartēt
|
|||
shell = terminālis
|
||||
shutdown = izslēgt
|
||||
sleep = snauda
|
||||
|
||||
wayland = wayland
|
||||
x11 = x11
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -4,17 +4,20 @@ brightness_up = zwiększ jasność
|
|||
capslock = capslock
|
||||
custom = własny
|
||||
err_alloc = nieudana alokacja pamięci
|
||||
|
||||
err_autologin_session = nie znaleziono sesji autologowania
|
||||
err_bounds = indeks poza zakresem
|
||||
err_brightness_change = nie udało się zmienić jasności
|
||||
err_chdir = nie udało się otworzyć folderu domowego
|
||||
err_clock_too_long = ciąg znaków zegara jest za długi
|
||||
err_config = nie można przetworzyć pliku konfiguracyjnego
|
||||
|
||||
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_get_active_tty = nie udało się uzyskać aktywnego tty
|
||||
|
||||
err_hostname = nie udało się uzyskać nazwy hosta
|
||||
err_lock_state = nie udało się uzyskać stanu blokady
|
||||
err_log = nie udało się otworzyć pliku logu
|
||||
|
|
@ -42,12 +45,12 @@ err_perm_dir = nie udało się zmienić obecnego katalogu
|
|||
err_perm_group = nie udało się obniżyć uprawnień grupy
|
||||
err_perm_user = nie udało się obniżyć uprawnień użytkownika
|
||||
err_pwnam = nie udało się uzyskać informacji o użytkowniku
|
||||
|
||||
err_sleep = nie udało się wykonać polecenia sleep
|
||||
err_battery = nie udało się sprawdzić statusu baterii
|
||||
err_switch_tty = nie można przełączyć tty
|
||||
err_tty_ctrl = nie udało się przekazać kontroli tty
|
||||
err_no_users = nie znaleziono żadnego 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_uid = nie udało się ustawić UID użytkownika
|
||||
|
|
@ -55,6 +58,7 @@ err_xauth = polecenie xauth nie powiodło się
|
|||
err_xcb_conn = połączenie xcb nie powiodło się
|
||||
err_xsessions_dir = nie udało się znaleźć folderu sesji
|
||||
err_xsessions_open = nie udało się otworzyć folderu sesji
|
||||
|
||||
insert = wstaw
|
||||
login = login
|
||||
logout = wylogowano
|
||||
|
|
@ -67,7 +71,6 @@ restart = uruchom ponownie
|
|||
shell = powłoka
|
||||
shutdown = wyłącz
|
||||
sleep = uśpij
|
||||
|
||||
wayland = wayland
|
||||
x11 = x11
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = capslock
|
|||
|
||||
err_alloc = erro na atribuição de memória
|
||||
|
||||
|
||||
err_bounds = índice fora de limites
|
||||
|
||||
err_chdir = erro ao abrir a pasta home
|
||||
|
||||
|
||||
|
||||
err_dgn_oob = mensagem de registo
|
||||
err_domain = domínio inválido
|
||||
|
||||
|
||||
|
||||
|
||||
err_hostname = erro ao obter o nome do host
|
||||
|
||||
|
||||
|
|
@ -56,6 +59,7 @@ err_user_uid = erro ao definir o UID do utilizador
|
|||
err_xsessions_dir = erro ao localizar a pasta das sessões
|
||||
err_xsessions_open = erro ao abrir a pasta das sessões
|
||||
|
||||
|
||||
login = iniciar sessão
|
||||
logout = terminar sessão
|
||||
|
||||
|
|
@ -67,7 +71,6 @@ restart = reiniciar
|
|||
shell = shell
|
||||
shutdown = encerrar
|
||||
|
||||
|
||||
wayland = wayland
|
||||
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = caixa alta
|
|||
|
||||
err_alloc = alocação de memória malsucedida
|
||||
|
||||
|
||||
err_bounds = índice fora de limites
|
||||
|
||||
err_chdir = não foi possível abrir o diretório home
|
||||
|
||||
|
||||
|
||||
err_dgn_oob = mensagem de log
|
||||
err_domain = domínio inválido
|
||||
|
||||
|
||||
|
||||
|
||||
err_hostname = não foi possível obter o nome do host
|
||||
|
||||
|
||||
|
|
@ -56,6 +59,7 @@ 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_open = não foi possível abrir a pasta das sessões
|
||||
|
||||
|
||||
login = conectar
|
||||
logout = desconectado
|
||||
|
||||
|
|
@ -67,7 +71,6 @@ restart = reiniciar
|
|||
shell = shell
|
||||
shutdown = desligar
|
||||
|
||||
|
||||
wayland = wayland
|
||||
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -19,6 +19,9 @@ capslock = capslock
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -56,6 +59,7 @@ err_perm_user = nu s-a putut face downgrade permisiunilor de utilizator
|
|||
|
||||
|
||||
|
||||
|
||||
login = utilizator
|
||||
logout = opreşte sesiunea
|
||||
|
||||
|
|
@ -67,7 +71,6 @@ restart = resetează
|
|||
shell = shell
|
||||
shutdown = opreşte sistemul
|
||||
|
||||
|
||||
wayland = wayland
|
||||
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -4,17 +4,20 @@ brightness_up = увеличить яркость
|
|||
capslock = capslock
|
||||
custom = пользовательский
|
||||
err_alloc = не удалось выделить память
|
||||
|
||||
err_autologin_session = не найдена сессия с автологином
|
||||
err_bounds = за пределами индекса
|
||||
err_brightness_change = не удалось изменить яркость
|
||||
err_chdir = не удалось открыть домашнюю папку
|
||||
err_clock_too_long = строка часов слишком длинная
|
||||
err_config = не удалось разобрать файл конфигурации
|
||||
|
||||
err_dgn_oob = отладочное сообщение (log)
|
||||
err_domain = неверный домен
|
||||
err_empty_password = пустой пароль не допустим
|
||||
err_envlist = не удалось получить список переменных среды
|
||||
err_get_active_tty = не удалось получить активный tty
|
||||
|
||||
err_hostname = не удалось получить имя хоста
|
||||
err_lock_state = не удалось получить состояние lock
|
||||
err_log = не удалось открыть файл log
|
||||
|
|
@ -42,12 +45,12 @@ err_perm_dir = не удалось изменить текущий катало
|
|||
err_perm_group = не удалось понизить права доступа группы
|
||||
err_perm_user = не удалось понизить права доступа пользователя
|
||||
err_pwnam = не удалось получить информацию о пользователе
|
||||
|
||||
err_sleep = не удалось выполнить команду sleep
|
||||
err_battery = не удалось получить статус батареи
|
||||
err_switch_tty = не удалось переключить tty
|
||||
err_tty_ctrl = передача управления tty не удалась
|
||||
err_no_users = пользователи не найдены
|
||||
|
||||
err_user_gid = не удалось установить GID пользователя
|
||||
err_user_init = не удалось инициализировать пользователя
|
||||
err_user_uid = не удалось установить UID пользователя
|
||||
|
|
@ -55,6 +58,7 @@ err_xauth = команда xauth не выполнена
|
|||
err_xcb_conn = ошибка подключения xcb
|
||||
err_xsessions_dir = не удалось найти сессионную папку
|
||||
err_xsessions_open = не удалось открыть сессионную папку
|
||||
|
||||
insert = вставка
|
||||
login = логин
|
||||
logout = вышел из системы
|
||||
|
|
@ -67,7 +71,6 @@ restart = перезагрузить
|
|||
shell = оболочка
|
||||
shutdown = выключить
|
||||
sleep = сон
|
||||
|
||||
wayland = wayland
|
||||
x11 = x11
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = capslock
|
|||
|
||||
err_alloc = neuspijesna alokacija memorije
|
||||
|
||||
|
||||
err_bounds = izvan granica indeksa
|
||||
|
||||
err_chdir = neuspijesno otvaranje home foldera
|
||||
|
||||
|
||||
|
||||
err_dgn_oob = log poruka
|
||||
err_domain = nevazeci domen
|
||||
|
||||
|
||||
|
||||
|
||||
err_hostname = neuspijesno trazenje hostname-a
|
||||
|
||||
|
||||
|
|
@ -56,6 +59,7 @@ err_user_uid = neuspijesno postavljanje UID-a korisnika
|
|||
err_xsessions_dir = neuspijesno pronalazenje foldera sesija
|
||||
err_xsessions_open = neuspijesno otvaranje foldera sesija
|
||||
|
||||
|
||||
login = korisnik
|
||||
logout = izlogovan
|
||||
|
||||
|
|
@ -67,7 +71,6 @@ restart = ponovo pokreni
|
|||
shell = shell
|
||||
shutdown = ugasi
|
||||
|
||||
|
||||
wayland = wayland
|
||||
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = capslock
|
|||
|
||||
err_alloc = misslyckad minnesallokering
|
||||
|
||||
|
||||
err_bounds = utanför banan index
|
||||
|
||||
err_chdir = misslyckades att öppna hemkatalog
|
||||
|
||||
|
||||
|
||||
err_dgn_oob = loggmeddelande
|
||||
err_domain = okänd domän
|
||||
|
||||
|
||||
|
||||
|
||||
err_hostname = misslyckades att hämta värdnamn
|
||||
|
||||
|
||||
|
|
@ -56,6 +59,7 @@ err_user_uid = misslyckades att ställa in användar-UID
|
|||
err_xsessions_dir = misslyckades att hitta sessionskatalog
|
||||
err_xsessions_open = misslyckades att öppna sessionskatalog
|
||||
|
||||
|
||||
login = inloggning
|
||||
logout = utloggad
|
||||
|
||||
|
|
@ -67,7 +71,6 @@ restart = starta om
|
|||
shell = skal
|
||||
shutdown = stäng av
|
||||
|
||||
|
||||
wayland = wayland
|
||||
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = capslock
|
|||
|
||||
err_alloc = basarisiz bellek ayirma
|
||||
|
||||
|
||||
err_bounds = sinirlarin disinda dizin
|
||||
|
||||
err_chdir = ev klasoru acilamadi
|
||||
|
||||
|
||||
|
||||
err_dgn_oob = log mesaji
|
||||
err_domain = gecersiz etki alani
|
||||
|
||||
|
||||
|
||||
|
||||
err_hostname = ana bilgisayar adi alinamadi
|
||||
|
||||
|
||||
|
|
@ -56,6 +59,7 @@ err_user_uid = kullanici icin UID ayarlanamadi
|
|||
err_xsessions_dir = oturumlar klasoru bulunamadi
|
||||
err_xsessions_open = oturumlar klasoru acilamadi
|
||||
|
||||
|
||||
login = kullanici
|
||||
logout = oturumdan cikis yapildi
|
||||
|
||||
|
|
@ -67,7 +71,6 @@ restart = yeniden baslat
|
|||
shell = shell
|
||||
shutdown = makineyi kapat
|
||||
|
||||
|
||||
wayland = wayland
|
||||
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = capslock
|
|||
|
||||
err_alloc = невдале виділення пам'яті
|
||||
|
||||
|
||||
err_bounds = поза межами індексу
|
||||
|
||||
err_chdir = не вдалося відкрити домашній каталог
|
||||
|
||||
|
||||
|
||||
err_dgn_oob = повідомлення журналу (log)
|
||||
err_domain = недійсний домен
|
||||
|
||||
|
||||
|
||||
|
||||
err_hostname = не вдалося отримати ім'я хосту
|
||||
|
||||
|
||||
|
|
@ -56,6 +59,7 @@ err_user_uid = не вдалося змінити UID користувача
|
|||
err_xsessions_dir = не вдалося знайти каталог сесій
|
||||
err_xsessions_open = не вдалося відкрити каталог сесій
|
||||
|
||||
|
||||
login = логін
|
||||
logout = вийти
|
||||
|
||||
|
|
@ -67,7 +71,6 @@ restart = перезавантажити
|
|||
shell = оболонка
|
||||
shutdown = вимкнути
|
||||
|
||||
|
||||
wayland = wayland
|
||||
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -5,16 +5,19 @@ capslock = 大写锁定
|
|||
|
||||
err_alloc = 内存分配失败
|
||||
|
||||
|
||||
err_bounds = 索引越界
|
||||
|
||||
err_chdir = 无法打开home文件夹
|
||||
|
||||
|
||||
|
||||
err_dgn_oob = 日志消息
|
||||
err_domain = 无效的域
|
||||
|
||||
|
||||
|
||||
|
||||
err_hostname = 获取主机名失败
|
||||
|
||||
|
||||
|
|
@ -56,6 +59,7 @@ err_user_uid = 设置用户UID失败
|
|||
err_xsessions_dir = 找不到会话文件夹
|
||||
err_xsessions_open = 无法打开会话文件夹
|
||||
|
||||
|
||||
login = 登录
|
||||
logout = 注销
|
||||
|
||||
|
|
@ -67,7 +71,6 @@ password = 密码
|
|||
shell = shell
|
||||
|
||||
|
||||
|
||||
wayland = wayland
|
||||
x11 = x11
|
||||
xinitrc = xinitrc
|
||||
|
|
|
|||
|
|
@ -9,12 +9,14 @@ brightness_up: []const u8 = "increase brightness",
|
|||
capslock: []const u8 = "capslock",
|
||||
custom: []const u8 = "custom",
|
||||
err_alloc: []const u8 = "failed memory allocation",
|
||||
err_args: []const u8 = "unable to parse command line arguments",
|
||||
err_autologin_session: []const u8 = "autologin session not found",
|
||||
err_bounds: []const u8 = "out-of-bounds index",
|
||||
err_brightness_change: []const u8 = "failed to change brightness",
|
||||
err_chdir: []const u8 = "failed to open home folder",
|
||||
err_clock_too_long: []const u8 = "clock string too long",
|
||||
err_config: []const u8 = "unable to parse config file",
|
||||
err_crawl: []const u8 = "failed to crawl session directories",
|
||||
err_dgn_oob: []const u8 = "log message",
|
||||
err_domain: []const u8 = "invalid domain",
|
||||
err_empty_password: []const u8 = "empty password not allowed",
|
||||
|
|
@ -53,6 +55,7 @@ err_battery: []const u8 = "failed to load battery status",
|
|||
err_switch_tty: []const u8 = "failed to switch tty",
|
||||
err_tty_ctrl: []const u8 = "tty control transfer failed",
|
||||
err_no_users: []const u8 = "no users found",
|
||||
err_uid_range: []const u8 = "failed to dynamically get uid range",
|
||||
err_user_gid: []const u8 = "failed to set user GID",
|
||||
err_user_init: []const u8 = "failed to initialize user",
|
||||
err_user_uid: []const u8 = "failed to set user UID",
|
||||
|
|
|
|||
|
|
@ -81,6 +81,9 @@ fn PlatformStruct() type {
|
|||
pub const vt_activate = vt.VT_ACTIVATE;
|
||||
pub const vt_waitactive = vt.VT_WAITACTIVE;
|
||||
|
||||
const SYSTEMD_HOMED_UID_MIN = 60001;
|
||||
const SYSTEMD_HOMED_UID_MAX = 60513;
|
||||
|
||||
pub fn setUserContextImpl(username: [*:0]const u8, entry: UsernameEntry) !void {
|
||||
const status = grp.initgroups(username, @intCast(entry.gid));
|
||||
if (status != 0) return error.GroupInitializationFailed;
|
||||
|
|
@ -168,17 +171,35 @@ fn PlatformStruct() type {
|
|||
|
||||
var iterator = std.mem.splitScalar(u8, login_defs_buffer, '\n');
|
||||
var uid_range = UidRange{};
|
||||
var nameFound = false;
|
||||
|
||||
while (iterator.next()) |line| {
|
||||
const trimmed_line = std.mem.trim(u8, line, " \n\r\t");
|
||||
|
||||
if (std.mem.startsWith(u8, trimmed_line, "UID_MIN")) {
|
||||
uid_range.uid_min = try parseValue(std.posix.uid_t, "UID_MIN", trimmed_line);
|
||||
nameFound = true;
|
||||
} else if (std.mem.startsWith(u8, trimmed_line, "UID_MAX")) {
|
||||
uid_range.uid_max = try parseValue(std.posix.uid_t, "UID_MAX", trimmed_line);
|
||||
nameFound = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!nameFound) return error.UidNameNotFound;
|
||||
|
||||
// This code assumes the OS has a login.defs file with UID_MIN
|
||||
// and UID_MAX values defined in it, which should be the case
|
||||
// for most systemd-based Linux distributions out there.
|
||||
// This should be a good enough safeguard for now, as there's
|
||||
// no reliable (and clean) way to check for systemd support
|
||||
if (uid_range.uid_min > SYSTEMD_HOMED_UID_MIN) {
|
||||
uid_range.uid_min = SYSTEMD_HOMED_UID_MIN;
|
||||
}
|
||||
|
||||
if (uid_range.uid_max < SYSTEMD_HOMED_UID_MAX) {
|
||||
uid_range.uid_max = SYSTEMD_HOMED_UID_MAX;
|
||||
}
|
||||
|
||||
return uid_range;
|
||||
}
|
||||
|
||||
|
|
@ -226,6 +247,9 @@ fn PlatformStruct() type {
|
|||
pub const vt_activate = consio.VT_ACTIVATE;
|
||||
pub const vt_waitactive = consio.VT_WAITACTIVE;
|
||||
|
||||
const FREEBSD_UID_MIN = 1000;
|
||||
const FREEBSD_UID_MAX = 32000;
|
||||
|
||||
pub fn setUserContextImpl(username: [*:0]const u8, entry: UsernameEntry) !void {
|
||||
// FreeBSD has initgroups() in unistd
|
||||
const status = unistd.initgroups(username, @intCast(entry.gid));
|
||||
|
|
@ -244,8 +268,8 @@ fn PlatformStruct() type {
|
|||
return .{
|
||||
// Hardcoded default values chosen from
|
||||
// /usr/src/usr.sbin/pw/pw_conf.c
|
||||
.uid_min = 1000,
|
||||
.uid_max = 32000,
|
||||
.uid_min = FREEBSD_UID_MIN,
|
||||
.uid_max = FREEBSD_UID_MAX,
|
||||
};
|
||||
}
|
||||
},
|
||||
|
|
|
|||
116
src/main.zig
116
src/main.zig
|
|
@ -26,6 +26,7 @@ const SavedUsers = @import("config/SavedUsers.zig");
|
|||
const migrator = @import("config/migrator.zig");
|
||||
const SharedError = @import("SharedError.zig");
|
||||
const LogFile = @import("LogFile.zig");
|
||||
const UidRange = @import("UidRange.zig");
|
||||
|
||||
const StringList = std.ArrayListUnmanaged([]const u8);
|
||||
const Ini = ini.Ini;
|
||||
|
|
@ -110,12 +111,14 @@ pub fn main() !void {
|
|||
);
|
||||
|
||||
var diag = clap.Diagnostic{};
|
||||
var res = clap.parse(clap.Help, ¶ms, clap.parsers.default, .{ .diagnostic = &diag, .allocator = allocator }) catch |err| {
|
||||
var arg_parse_error: anyerror = undefined;
|
||||
var maybe_res = clap.parse(clap.Help, ¶ms, clap.parsers.default, .{ .diagnostic = &diag, .allocator = allocator }) catch |err| parse_error: {
|
||||
arg_parse_error = err;
|
||||
diag.report(stderr, err) catch {};
|
||||
try stderr.flush();
|
||||
return err;
|
||||
break :parse_error null;
|
||||
};
|
||||
defer res.deinit();
|
||||
defer if (maybe_res) |*res| res.deinit();
|
||||
|
||||
var config: Config = undefined;
|
||||
var lang: Lang = undefined;
|
||||
|
|
@ -128,17 +131,19 @@ pub fn main() !void {
|
|||
var saved_users = SavedUsers.init();
|
||||
defer saved_users.deinit(allocator);
|
||||
|
||||
if (res.args.help != 0) {
|
||||
try clap.help(stderr, clap.Help, ¶ms, .{});
|
||||
if (maybe_res) |*res| {
|
||||
if (res.args.help != 0) {
|
||||
try clap.help(stderr, clap.Help, ¶ms, .{});
|
||||
|
||||
_ = try stderr.write("Note: if you want to configure Ly, please check the config file, which is located at " ++ build_options.config_directory ++ "/ly/config.ini.\n");
|
||||
try stderr.flush();
|
||||
std.process.exit(0);
|
||||
}
|
||||
if (res.args.version != 0) {
|
||||
_ = try stderr.write("Ly version " ++ build_options.version ++ "\n");
|
||||
try stderr.flush();
|
||||
std.process.exit(0);
|
||||
_ = try stderr.write("Note: if you want to configure Ly, please check the config file, which is located at " ++ build_options.config_directory ++ "/ly/config.ini.\n");
|
||||
try stderr.flush();
|
||||
std.process.exit(0);
|
||||
}
|
||||
if (res.args.version != 0) {
|
||||
_ = try stderr.write("Ly version " ++ build_options.version ++ "\n");
|
||||
try stderr.flush();
|
||||
std.process.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
// Load configuration file
|
||||
|
|
@ -161,7 +166,8 @@ pub fn main() !void {
|
|||
|
||||
const comment_characters = "#";
|
||||
|
||||
if (res.args.config) |s| {
|
||||
if (maybe_res != null and maybe_res.?.args.config != null) {
|
||||
const s = maybe_res.?.args.config.?;
|
||||
const trailing_slash = if (s[s.len - 1] != '/') "/" else "";
|
||||
|
||||
const config_path = try std.fmt.allocPrint(allocator, "{s}{s}config.ini", .{ s, trailing_slash });
|
||||
|
|
@ -214,7 +220,8 @@ pub fn main() !void {
|
|||
migrator.lateConfigFieldHandler(&config);
|
||||
}
|
||||
|
||||
var usernames = try getAllUsernames(allocator, config.login_defs_path);
|
||||
var maybe_uid_range_error: ?anyerror = null;
|
||||
var usernames = try getAllUsernames(allocator, config.login_defs_path, &maybe_uid_range_error);
|
||||
defer {
|
||||
for (usernames.items) |username| allocator.free(username);
|
||||
usernames.deinit(allocator);
|
||||
|
|
@ -330,6 +337,20 @@ pub fn main() !void {
|
|||
var info_line = InfoLine.init(allocator, &buffer);
|
||||
defer info_line.deinit();
|
||||
|
||||
if (maybe_res == null) {
|
||||
var longest = diag.name.longest();
|
||||
if (longest.kind == .positional)
|
||||
longest.name = diag.arg;
|
||||
|
||||
try info_line.addMessage(lang.err_args, config.error_bg, config.error_fg);
|
||||
try log_writer.print("unable to parse argument '{s}{s}': {s}\n", .{ longest.kind.prefix(), longest.name, @errorName(arg_parse_error) });
|
||||
}
|
||||
|
||||
if (maybe_uid_range_error) |err| {
|
||||
try info_line.addMessage(lang.err_uid_range, config.error_bg, config.error_fg);
|
||||
try log_writer.print("failed to get uid range: {s}; falling back to default\n", .{@errorName(err)});
|
||||
}
|
||||
|
||||
if (maybe_config_load_error) |err| {
|
||||
// We can't localize this since the config failed to load so we'd fallback to the default language anyway
|
||||
try info_line.addMessage("unable to parse config file", config.error_bg, config.error_fg);
|
||||
|
|
@ -384,35 +405,37 @@ pub fn main() !void {
|
|||
try log_writer.writeAll("x11 support disabled at compile-time\n");
|
||||
}
|
||||
|
||||
if (config.initial_info_text) |text| {
|
||||
try info_line.addMessage(text, config.bg, config.fg);
|
||||
} else get_host_name: {
|
||||
// Initialize information line with host name
|
||||
var name_buf: [std.posix.HOST_NAME_MAX]u8 = undefined;
|
||||
const hostname = std.posix.gethostname(&name_buf) catch |err| {
|
||||
try info_line.addMessage(lang.err_hostname, config.error_bg, config.error_fg);
|
||||
try log_writer.print("failed to get hostname: {s}\n", .{@errorName(err)});
|
||||
break :get_host_name;
|
||||
};
|
||||
try info_line.addMessage(hostname, config.bg, config.fg);
|
||||
}
|
||||
var has_crawl_error = false;
|
||||
|
||||
// Crawl session directories (Wayland, X11 and custom respectively)
|
||||
var wayland_session_dirs = std.mem.splitScalar(u8, config.waylandsessions, ':');
|
||||
while (wayland_session_dirs.next()) |dir| {
|
||||
try crawl(&session, lang, dir, .wayland);
|
||||
crawl(&session, lang, dir, .wayland) catch |err| {
|
||||
has_crawl_error = true;
|
||||
try log_writer.print("failed to crawl wayland session directory '{s}': {s}\n", .{ dir, @errorName(err) });
|
||||
};
|
||||
}
|
||||
|
||||
if (build_options.enable_x11_support) {
|
||||
var x_session_dirs = std.mem.splitScalar(u8, config.xsessions, ':');
|
||||
while (x_session_dirs.next()) |dir| {
|
||||
try crawl(&session, lang, dir, .x11);
|
||||
crawl(&session, lang, dir, .x11) catch |err| {
|
||||
has_crawl_error = true;
|
||||
try log_writer.print("failed to crawl x11 session directory '{s}': {s}\n", .{ dir, @errorName(err) });
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
var custom_session_dirs = std.mem.splitScalar(u8, config.custom_sessions, ':');
|
||||
while (custom_session_dirs.next()) |dir| {
|
||||
try crawl(&session, lang, dir, .custom);
|
||||
crawl(&session, lang, dir, .custom) catch |err| {
|
||||
has_crawl_error = true;
|
||||
try log_writer.print("failed to crawl custom session directory '{s}': {s}\n", .{ dir, @errorName(err) });
|
||||
};
|
||||
}
|
||||
|
||||
if (has_crawl_error) {
|
||||
try info_line.addMessage(lang.err_crawl, config.error_bg, config.error_fg);
|
||||
}
|
||||
|
||||
if (usernames.items.len == 0) {
|
||||
|
|
@ -564,6 +587,19 @@ pub fn main() !void {
|
|||
try log_writer.print("failed to switch tty: {s}\n", .{@errorName(err)});
|
||||
};
|
||||
|
||||
if (config.initial_info_text) |text| {
|
||||
try info_line.addMessage(text, config.bg, config.fg);
|
||||
} else get_host_name: {
|
||||
// Initialize information line with host name
|
||||
var name_buf: [std.posix.HOST_NAME_MAX]u8 = undefined;
|
||||
const hostname = std.posix.gethostname(&name_buf) catch |err| {
|
||||
try info_line.addMessage(lang.err_hostname, config.error_bg, config.error_fg);
|
||||
try log_writer.print("failed to get hostname: {s}\n", .{@errorName(err)});
|
||||
break :get_host_name;
|
||||
};
|
||||
try info_line.addMessage(hostname, config.bg, config.fg);
|
||||
}
|
||||
|
||||
while (run) {
|
||||
// If there's no input or there's an animation, a resolution change needs to be checked
|
||||
if (!update or animate) {
|
||||
|
|
@ -593,7 +629,7 @@ pub fn main() !void {
|
|||
|
||||
if (update) {
|
||||
// If the user entered a wrong password 10 times in a row, play a cascade animation, else update normally
|
||||
if (auth_fails >= config.auth_fails) {
|
||||
if (config.auth_fails > 0 and auth_fails >= config.auth_fails) {
|
||||
std.Thread.sleep(std.time.ns_per_ms * 10);
|
||||
update = buffer.cascade();
|
||||
|
||||
|
|
@ -811,7 +847,7 @@ pub fn main() !void {
|
|||
const time = try interop.getTimeOfDay();
|
||||
|
||||
timeout = @intCast((60 - @rem(time.seconds, 60)) * 1000 - @divTrunc(time.microseconds, 1000) + 1);
|
||||
} else if (config.clock != null or auth_fails >= config.auth_fails) {
|
||||
} else if (config.clock != null or (config.auth_fails > 0 and auth_fails >= config.auth_fails)) {
|
||||
const time = try interop.getTimeOfDay();
|
||||
|
||||
timeout = @intCast(1000 - @divTrunc(time.microseconds, 1000) + 1);
|
||||
|
|
@ -1056,7 +1092,7 @@ pub fn main() !void {
|
|||
|
||||
try std.posix.tcsetattr(std.posix.STDIN_FILENO, .FLUSH, tb_termios);
|
||||
|
||||
if (auth_fails < config.auth_fails) {
|
||||
if (config.auth_fails == 0 or auth_fails < config.auth_fails) {
|
||||
_ = termbox.tb_clear();
|
||||
try ttyClearScreen();
|
||||
|
||||
|
|
@ -1141,7 +1177,9 @@ fn addOtherEnvironment(session: *Session, lang: Lang, display_server: DisplaySer
|
|||
}
|
||||
|
||||
fn crawl(session: *Session, lang: Lang, path: []const u8, display_server: DisplayServer) !void {
|
||||
var iterable_directory = std.fs.openDirAbsolute(path, .{ .iterate = true }) catch return;
|
||||
if (!std.fs.path.isAbsolute(path)) return error.PathNotAbsolute;
|
||||
|
||||
var iterable_directory = try std.fs.openDirAbsolute(path, .{ .iterate = true });
|
||||
defer iterable_directory.close();
|
||||
|
||||
var iterator = iterable_directory.iterate();
|
||||
|
|
@ -1220,8 +1258,14 @@ fn findSessionByName(session: *Session, name: []const u8) ?usize {
|
|||
return null;
|
||||
}
|
||||
|
||||
fn getAllUsernames(allocator: std.mem.Allocator, login_defs_path: []const u8) !StringList {
|
||||
const uid_range = try interop.getUserIdRange(allocator, login_defs_path);
|
||||
fn getAllUsernames(allocator: std.mem.Allocator, login_defs_path: []const u8, uid_range_error: *?anyerror) !StringList {
|
||||
const uid_range = interop.getUserIdRange(allocator, login_defs_path) catch |err| no_uid_range: {
|
||||
uid_range_error.* = err;
|
||||
break :no_uid_range UidRange{
|
||||
.uid_min = build_options.fallback_uid_min,
|
||||
.uid_max = build_options.fallback_uid_max,
|
||||
};
|
||||
};
|
||||
|
||||
var usernames: StringList = .empty;
|
||||
var maybe_entry = interop.getNextUsernameEntry();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue