feat: take over faces and settings from plasma-face-unlock

This commit is contained in:
Felitendo committed 2026-09-25 09:30:20 +02:00
1 parent eaec9325af
commit def308425c
22 files changed
+440 -100

No files matched your search

+10
View File
@@ -81,6 +81,16 @@ On Hyprland and Niri, admin prompts and setting up a face need a polkit agent
(for example hyprpolkitagent). Hyprland without uwsm does not start the lock (for example hyprpolkitagent). Hyprland without uwsm does not start the lock
screen part by itself: the menu shows the line to add to `hyprland.conf`. screen part by itself: the menu shows the line to add to `hyprland.conf`.
<details>
<summary>Coming from plasma-face-unlock?</summary>
This is the same program with a new name. Your faces and settings move over
on their own. On Debian, Ubuntu and Fedora the repository moved too: remove the
old `plasma-face-unlock` repository file and add the new one above. On Arch,
`yay -S face-unlock` replaces the old package.
</details>
## How to use ## How to use
```bash ```bash
+10
View File
@@ -68,6 +68,16 @@ fi
SH SH
chmod 755 "$root/DEBIAN/prerm" chmod 755 "$root/DEBIAN/prerm"
# Faces, settings and PAM lines of plasma-face-unlock, the old name.
cat > "$root/DEBIAN/postinst" <<'SH'
#!/bin/sh
set -e
if [ "$1" = configure ]; then
face-unlock --root migrate || true
fi
SH
chmod 755 "$root/DEBIAN/postinst"
( cd "$root" && find . -type f ! -path './DEBIAN/*' -printf '%P\0' \ ( cd "$root" && find . -type f ! -path './DEBIAN/*' -printf '%P\0' \
| LC_ALL=C sort -z | xargs -0 md5sum > DEBIAN/md5sums ) | LC_ALL=C sort -z | xargs -0 md5sum > DEBIAN/md5sums )
+5
View File
@@ -6,6 +6,8 @@ Architecture: @ARCH@
Maintainer: Felitendo <felitendoyt@gmail.com> Maintainer: Felitendo <felitendoyt@gmail.com>
Depends: @DEPENDS@, bash (>= 4.2), coreutils, grep, sed, mawk | gawk, systemd, polkitd | policykit-1, qml6-module-qtquick, qml6-module-qtquick-shapes, qml6-module-qtquick-effects, qml6-module-qtquick-window, qml6-module-qtqml-workerscript Depends: @DEPENDS@, bash (>= 4.2), coreutils, grep, sed, mawk | gawk, systemd, polkitd | policykit-1, qml6-module-qtquick, qml6-module-qtquick-shapes, qml6-module-qtquick-effects, qml6-module-qtquick-window, qml6-module-qtqml-workerscript
Recommends: gettext-base Recommends: gettext-base
Replaces: plasma-face-unlock
Conflicts: plasma-face-unlock
Homepage: https://github.com/LoonixTools/face-unlock Homepage: https://github.com/LoonixTools/face-unlock
Description: face unlock for Plasma, GNOME, Hyprland and Niri Description: face unlock for Plasma, GNOME, Hyprland and Niri
Look at the screen and it unlocks, the way a phone does. The lock screen, Look at the screen and it unlocks, the way a phone does. The lock screen,
@@ -13,6 +15,9 @@ Description: face unlock for Plasma, GNOME, Hyprland and Niri
of a password, on KDE Plasma, GNOME, Hyprland and Niri. A bubble at the top of a password, on KDE Plasma, GNOME, Hyprland and Niri. A bubble at the top
of the screen shows the face being looked for, recognised or refused. of the screen shows the face being looked for, recognised or refused.
. .
This package was called plasma-face-unlock before. It takes over its faces
and settings.
.
A photo on a phone, a tablet or a glossy print is refused by its A photo on a phone, a tablet or a glossy print is refused by its
reflection and its straight edges. The strict photo check also wants a sign reflection and its straight edges. The strict photo check also wants a sign
of life (a blink, or the nose moving the way a real nose does when the head of life (a blink, or the nose moving the way a real nose does when the head
+10
View File
@@ -45,6 +45,9 @@ Requires: polkit
Requires: systemd Requires: systemd
Requires: qt6-qtdeclarative Requires: qt6-qtdeclarative
Recommends: /usr/bin/gettext Recommends: /usr/bin/gettext
# The old name.
Obsoletes: plasma-face-unlock < 2
Provides: plasma-face-unlock = %{version}-%{release}
%description %description
Look at the screen and it unlocks, the way a phone does. The lock screen, sudo Look at the screen and it unlocks, the way a phone does. The lock screen, sudo
@@ -52,6 +55,9 @@ in a terminal and the admin password prompts can take a face instead of a
password, on KDE Plasma, GNOME, Hyprland and Niri. A bubble at the top of the password, on KDE Plasma, GNOME, Hyprland and Niri. A bubble at the top of the
screen shows the face being looked for, recognised or refused. screen shows the face being looked for, recognised or refused.
This package was called plasma-face-unlock before. It takes over its faces and
settings.
A photo on a phone, a tablet or a glossy print is refused by its reflection and A photo on a phone, a tablet or a glossy print is refused by its reflection and
its straight edges. The strict photo check also wants a sign of life (a blink, its straight edges. The strict photo check also wants a sign of life (a blink,
or the nose moving the way a real nose does when the head turns), which stops a or the nose moving the way a real nose does when the head turns), which stops a
@@ -82,6 +88,10 @@ make install DESTDIR=%{buildroot} PREFIX=%{_prefix} VERSION=%{upstream_version}
%postun %postun
%systemd_postun face-unlockd.socket face-unlockd.service %systemd_postun face-unlockd.socket face-unlockd.service
# After the old package is gone: its faces, settings and PAM lines.
%posttrans
%{_bindir}/face-unlock --root migrate || :
%files -f %{name}.lang %files -f %{name}.lang
%license LICENSE %license LICENSE
%doc %{_datadir}/doc/%{name}/README.md %doc %{_datadir}/doc/%{name}/README.md
+15 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.0\n" "Project-Id-Version: face-unlock 1.0.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-23 22:32+0200\n" "PO-Revision-Date: 2026-09-23 22:32+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: German\n" "Language-Team: German\n"
@@ -173,7 +173,7 @@ msgstr ""
"Starte das als dein eigener Benutzer, nicht als root. Wenn nötig, wird nach " "Starte das als dein eigener Benutzer, nicht als root. Wenn nötig, wird nach "
"deinem Passwort gefragt." "deinem Passwort gefragt."
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Unbekannter Befehl: %s" msgstr "Unbekannter Befehl: %s"
@@ -669,6 +669,14 @@ msgstr "Ausprobieren"
msgid "Quit" msgid "Quit"
msgstr "Beenden" msgstr "Beenden"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr ""
"Deine Gesichter und Einstellungen werden von plasma-face-unlock übernommen. "
"Dafür ist dein Passwort nötig."
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -679,26 +687,26 @@ msgstr "Das PAM-Modul ist nicht unter %s installiert."
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "Auf diesem System gibt es keine PAM-Konfiguration für %s." msgstr "Auf diesem System gibt es keine PAM-Konfiguration für %s."
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "" msgstr ""
"Dafür braucht es root, aber weder sudo noch run0 noch doas ist installiert." "Dafür braucht es root, aber weder sudo noch run0 noch doas ist installiert."
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "Dieser Befehl muss als root laufen." msgstr "Dieser Befehl muss als root laufen."
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "Keine gültige Einstellung: %s=%s" msgstr "Keine gültige Einstellung: %s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "Dafür kann es nicht verwendet werden: %s" msgstr "Dafür kann es nicht verwendet werden: %s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+15 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Spanish\n" "Language-Team: Spanish\n"
@@ -174,7 +174,7 @@ msgstr ""
"Ejecuta esto con tu propio usuario, no como root. Pide tu contraseña cuando " "Ejecuta esto con tu propio usuario, no como root. Pide tu contraseña cuando "
"la necesita." "la necesita."
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Comando desconocido: %s" msgstr "Comando desconocido: %s"
@@ -675,6 +675,14 @@ msgstr "Probarlo"
msgid "Quit" msgid "Quit"
msgstr "Salir" msgstr "Salir"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr ""
"Pasando tus caras y ajustes desde plasma-face-unlock. Para eso hace falta tu "
"contraseña."
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -685,25 +693,25 @@ msgstr "El módulo PAM no está instalado en %s."
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "No hay configuración PAM para %s en este sistema." msgstr "No hay configuración PAM para %s en este sistema."
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "Esto necesita root, y no está instalado ni sudo, ni run0, ni doas." msgstr "Esto necesita root, y no está instalado ni sudo, ni run0, ni doas."
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "Este comando tiene que ejecutarse como root." msgstr "Este comando tiene que ejecutarse como root."
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "Ajuste no válido: %s=%s" msgstr "Ajuste no válido: %s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "No se puede usar para este servicio: %s" msgstr "No se puede usar para este servicio: %s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+13 -7
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 09:30+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -160,7 +160,7 @@ msgid ""
"needs to." "needs to."
msgstr "" msgstr ""
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "" msgstr ""
@@ -621,6 +621,12 @@ msgstr ""
msgid "Quit" msgid "Quit"
msgstr "" msgstr ""
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr ""
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -631,25 +637,25 @@ msgstr ""
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "" msgstr ""
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "" msgstr ""
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "" msgstr ""
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "" msgstr ""
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "" msgstr ""
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+15 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: French\n" "Language-Team: French\n"
@@ -176,7 +176,7 @@ msgstr ""
"Lancez ceci avec votre propre utilisateur, pas en root. Le mot de passe est " "Lancez ceci avec votre propre utilisateur, pas en root. Le mot de passe est "
"demandé quand il le faut." "demandé quand il le faut."
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Commande inconnue : %s" msgstr "Commande inconnue : %s"
@@ -679,6 +679,14 @@ msgstr "Essayer"
msgid "Quit" msgid "Quit"
msgstr "Quitter" msgstr "Quitter"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr ""
"Reprise de vos visages et réglages depuis plasma-face-unlock. Cela demande "
"votre mot de passe."
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -689,26 +697,26 @@ msgstr "Le module PAM n'est pas installé dans %s."
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "Il n'y a pas de configuration PAM pour %s sur ce système." msgstr "Il n'y a pas de configuration PAM pour %s sur ce système."
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "" msgstr ""
"Il faut les droits root, mais ni sudo, ni run0, ni doas n'est installé." "Il faut les droits root, mais ni sudo, ni run0, ni doas n'est installé."
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "Cette commande doit être lancée en root." msgstr "Cette commande doit être lancée en root."
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "Réglage non valide : %s=%s" msgstr "Réglage non valide : %s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "Ne peut pas servir pour ce service : %s" msgstr "Ne peut pas servir pour ce service : %s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+15 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Italian\n" "Language-Team: Italian\n"
@@ -172,7 +172,7 @@ msgstr ""
"Esegui questo con il tuo utente, non come root. Chiede la password quando " "Esegui questo con il tuo utente, non come root. Chiede la password quando "
"serve." "serve."
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Comando sconosciuto: %s" msgstr "Comando sconosciuto: %s"
@@ -670,6 +670,14 @@ msgstr "Provalo"
msgid "Quit" msgid "Quit"
msgstr "Esci" msgstr "Esci"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr ""
"Trasferimento dei tuoi volti e delle impostazioni da plasma-face-unlock. "
"Serve la tua password."
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -680,26 +688,26 @@ msgstr "Il modulo PAM non è installato in %s."
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "Su questo sistema non c'è una configurazione PAM per %s." msgstr "Su questo sistema non c'è una configurazione PAM per %s."
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "" msgstr ""
"Servono i permessi di root, ma non è installato né sudo, né run0, né doas." "Servono i permessi di root, ma non è installato né sudo, né run0, né doas."
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "Questo comando deve essere eseguito come root." msgstr "Questo comando deve essere eseguito come root."
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "Impostazione non valida: %s=%s" msgstr "Impostazione non valida: %s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "Non si può usare per questo servizio: %s" msgstr "Non si può usare per questo servizio: %s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+13 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Japanese\n" "Language-Team: Japanese\n"
@@ -167,7 +167,7 @@ msgstr ""
"root ではなく、自分のユーザーで実行してください。必要なときはパスワードを尋ね" "root ではなく、自分のユーザーで実行してください。必要なときはパスワードを尋ね"
"ます。" "ます。"
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "不明なコマンド: %s" msgstr "不明なコマンド: %s"
@@ -657,6 +657,12 @@ msgstr "試す"
msgid "Quit" msgid "Quit"
msgstr "終了" msgstr "終了"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr "plasma-face-unlock から顔と設定を引き継ぎます。パスワードが必要です。"
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -667,26 +673,26 @@ msgstr "PAM モジュールが %s にインストールされていません。"
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "このシステムには %s の PAM 設定がありません。" msgstr "このシステムには %s の PAM 設定がありません。"
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "" msgstr ""
"root 権限が必要ですが、sudo も run0 も doas もインストールされていません。" "root 権限が必要ですが、sudo も run0 も doas もインストールされていません。"
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "このコマンドは root で実行する必要があります。" msgstr "このコマンドは root で実行する必要があります。"
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "無効な設定です: %s=%s" msgstr "無効な設定です: %s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "このサービスには使えません: %s" msgstr "このサービスには使えません: %s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+14 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Korean\n" "Language-Team: Korean\n"
@@ -166,7 +166,7 @@ msgid ""
"needs to." "needs to."
msgstr "root가 아닌 본인 사용자로 실행하세요. 필요하면 비밀번호를 묻습니다." msgstr "root가 아닌 본인 사용자로 실행하세요. 필요하면 비밀번호를 묻습니다."
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "알 수 없는 명령: %s" msgstr "알 수 없는 명령: %s"
@@ -655,6 +655,13 @@ msgstr "사용해 보기"
msgid "Quit" msgid "Quit"
msgstr "끝내기" msgstr "끝내기"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr ""
"plasma-face-unlock에서 얼굴과 설정을 옮겨 옵니다. 비밀번호가 필요합니다."
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -665,26 +672,26 @@ msgstr "PAM 모듈이 다음 위치에 설치되어 있지 않습니다: %s"
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "이 시스템에는 %s용 PAM 설정이 없습니다." msgstr "이 시스템에는 %s용 PAM 설정이 없습니다."
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "" msgstr ""
"root 권한이 필요하지만 sudo, run0, doas 중 아무것도 설치되어 있지 않습니다." "root 권한이 필요하지만 sudo, run0, doas 중 아무것도 설치되어 있지 않습니다."
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "이 명령은 root로 실행해야 합니다." msgstr "이 명령은 root로 실행해야 합니다."
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "올바르지 않은 설정: %s=%s" msgstr "올바르지 않은 설정: %s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "이 서비스에는 사용할 수 없습니다: %s" msgstr "이 서비스에는 사용할 수 없습니다: %s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+15 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Dutch\n" "Language-Team: Dutch\n"
@@ -172,7 +172,7 @@ msgstr ""
"Voer dit uit als je eigen gebruiker, niet als root. Het vraagt om je " "Voer dit uit als je eigen gebruiker, niet als root. Het vraagt om je "
"wachtwoord als dat nodig is." "wachtwoord als dat nodig is."
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Onbekende opdracht: %s" msgstr "Onbekende opdracht: %s"
@@ -666,6 +666,14 @@ msgstr "Uitproberen"
msgid "Quit" msgid "Quit"
msgstr "Afsluiten" msgstr "Afsluiten"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr ""
"Je gezichten en instellingen worden overgenomen van plasma-face-unlock. "
"Daarvoor is je wachtwoord nodig."
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -676,27 +684,27 @@ msgstr "De PAM-module is niet geïnstalleerd in %s."
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "Er is op dit systeem geen PAM-configuratie voor %s." msgstr "Er is op dit systeem geen PAM-configuratie voor %s."
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "" msgstr ""
"Dit heeft root nodig, maar sudo, run0 en doas zijn geen van alle " "Dit heeft root nodig, maar sudo, run0 en doas zijn geen van alle "
"geïnstalleerd." "geïnstalleerd."
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "Deze opdracht moet als root draaien." msgstr "Deze opdracht moet als root draaien."
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "Geen geldige instelling: %s=%s" msgstr "Geen geldige instelling: %s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "Hier kan het niet voor worden gebruikt: %s" msgstr "Hier kan het niet voor worden gebruikt: %s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+13 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Polish\n" "Language-Team: Polish\n"
@@ -173,7 +173,7 @@ msgstr ""
"Uruchom to jako swój użytkownik, nie jako root. Hasło zostanie zapytane, gdy " "Uruchom to jako swój użytkownik, nie jako root. Hasło zostanie zapytane, gdy "
"będzie potrzebne." "będzie potrzebne."
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Nieznane polecenie: %s" msgstr "Nieznane polecenie: %s"
@@ -668,6 +668,12 @@ msgstr "Wypróbuj"
msgid "Quit" msgid "Quit"
msgstr "Zakończ" msgstr "Zakończ"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr "Przenoszenie twarzy i ustawień z plasma-face-unlock. To wymaga hasła."
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -678,26 +684,26 @@ msgstr "Moduł PAM nie jest zainstalowany w %s."
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "Na tym systemie nie ma konfiguracji PAM dla %s." msgstr "Na tym systemie nie ma konfiguracji PAM dla %s."
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "" msgstr ""
"To wymaga roota, a nie jest zainstalowane ani sudo, ani run0, ani doas." "To wymaga roota, a nie jest zainstalowane ani sudo, ani run0, ani doas."
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "To polecenie musi działać jako root." msgstr "To polecenie musi działać jako root."
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "Nieprawidłowe ustawienie: %s=%s" msgstr "Nieprawidłowe ustawienie: %s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "Nie można tego użyć dla tej usługi: %s" msgstr "Nie można tego użyć dla tej usługi: %s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+15 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Brazilian Portuguese\n" "Language-Team: Brazilian Portuguese\n"
@@ -173,7 +173,7 @@ msgstr ""
"Execute isto com o seu próprio usuário, não como root. Ele pede a sua senha " "Execute isto com o seu próprio usuário, não como root. Ele pede a sua senha "
"quando precisa." "quando precisa."
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Comando desconhecido: %s" msgstr "Comando desconhecido: %s"
@@ -670,6 +670,14 @@ msgstr "Testar"
msgid "Quit" msgid "Quit"
msgstr "Sair" msgstr "Sair"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr ""
"Trazendo seus rostos e configurações do plasma-face-unlock. Isso precisa da "
"sua senha."
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -680,25 +688,25 @@ msgstr "O módulo PAM não está instalado em %s."
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "Não há configuração PAM para %s neste sistema." msgstr "Não há configuração PAM para %s neste sistema."
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "Isto precisa de root, e nem sudo, nem run0, nem doas está instalado." msgstr "Isto precisa de root, e nem sudo, nem run0, nem doas está instalado."
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "Este comando precisa ser executado como root." msgstr "Este comando precisa ser executado como root."
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "Configuração inválida: %s=%s" msgstr "Configuração inválida: %s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "Não pode ser usado para este serviço: %s" msgstr "Não pode ser usado para este serviço: %s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+15 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Russian\n" "Language-Team: Russian\n"
@@ -173,7 +173,7 @@ msgstr ""
"Запускайте это от своего пользователя, не от root. Пароль будет запрошен, " "Запускайте это от своего пользователя, не от root. Пароль будет запрошен, "
"когда он понадобится." "когда он понадобится."
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Неизвестная команда: %s" msgstr "Неизвестная команда: %s"
@@ -669,6 +669,14 @@ msgstr "Попробовать"
msgid "Quit" msgid "Quit"
msgstr "Выход" msgstr "Выход"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr ""
"Переносим ваши лица и настройки из plasma-face-unlock. Для этого нужен ваш "
"пароль."
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -679,25 +687,25 @@ msgstr "Модуль PAM не установлен в %s."
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "В этой системе нет настройки PAM для %s." msgstr "В этой системе нет настройки PAM для %s."
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "Для этого нужен root, но не установлен ни sudo, ни run0, ни doas." msgstr "Для этого нужен root, но не установлен ни sudo, ни run0, ни doas."
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "Эту команду нужно запускать от root." msgstr "Эту команду нужно запускать от root."
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "Недопустимая настройка: %s=%s" msgstr "Недопустимая настройка: %s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "Для этой службы использовать нельзя: %s" msgstr "Для этой службы использовать нельзя: %s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+15 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Turkish\n" "Language-Team: Turkish\n"
@@ -168,7 +168,7 @@ msgstr ""
"Bunu root olarak değil, kendi kullanıcınızla çalıştırın. Gerektiğinde " "Bunu root olarak değil, kendi kullanıcınızla çalıştırın. Gerektiğinde "
"parolanızı sorar." "parolanızı sorar."
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Bilinmeyen komut: %s" msgstr "Bilinmeyen komut: %s"
@@ -661,6 +661,14 @@ msgstr "Dene"
msgid "Quit" msgid "Quit"
msgstr "Çık" msgstr "Çık"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr ""
"Yüzleriniz ve ayarlarınız plasma-face-unlock'tan aktarılıyor. Bunun için "
"parolanız gerekiyor."
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -671,25 +679,25 @@ msgstr "PAM modülü şu konumda kurulu değil: %s"
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "Bu sistemde %s için PAM yapılandırması yok." msgstr "Bu sistemde %s için PAM yapılandırması yok."
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "Bunun için root gerekli, ama ne sudo ne run0 ne de doas kurulu." msgstr "Bunun için root gerekli, ama ne sudo ne run0 ne de doas kurulu."
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "Bu komut root olarak çalışmalı." msgstr "Bu komut root olarak çalışmalı."
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "Geçerli bir ayar değil: %s=%s" msgstr "Geçerli bir ayar değil: %s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "Bunun için kullanılamaz: %s" msgstr "Bunun için kullanılamaz: %s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+15 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Ukrainian\n" "Language-Team: Ukrainian\n"
@@ -174,7 +174,7 @@ msgstr ""
"Запускайте це від свого користувача, не від root. Пароль буде запитано, коли " "Запускайте це від свого користувача, не від root. Пароль буде запитано, коли "
"він знадобиться." "він знадобиться."
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "Невідома команда: %s" msgstr "Невідома команда: %s"
@@ -669,6 +669,14 @@ msgstr "Спробувати"
msgid "Quit" msgid "Quit"
msgstr "Вийти" msgstr "Вийти"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr ""
"Переносимо ваші обличчя й налаштування з plasma-face-unlock. Для цього "
"потрібен ваш пароль."
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -679,25 +687,25 @@ msgstr "Модуль PAM не встановлено в %s."
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "У цій системі немає налаштування PAM для %s." msgstr "У цій системі немає налаштування PAM для %s."
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "Для цього потрібен root, але не встановлено ні sudo, ні run0, ні doas." msgstr "Для цього потрібен root, але не встановлено ні sudo, ні run0, ні doas."
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "Цю команду треба запускати від root." msgstr "Цю команду треба запускати від root."
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "Неприпустиме налаштування: %s=%s" msgstr "Неприпустиме налаштування: %s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "Для цієї служби використати не можна: %s" msgstr "Для цієї служби використати не можна: %s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+13 -7
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: face-unlock 1.0.1\n" "Project-Id-Version: face-unlock 1.0.1\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/face-unlock/issues\n"
"POT-Creation-Date: 2026-09-25 09:29+0200\n" "POT-Creation-Date: 2026-09-25 08:20+0200\n"
"PO-Revision-Date: 2026-09-24 12:00+0200\n" "PO-Revision-Date: 2026-09-24 12:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: Chinese (simplified)\n" "Language-Team: Chinese (simplified)\n"
@@ -159,7 +159,7 @@ msgid ""
"needs to." "needs to."
msgstr "请以你自己的用户运行,不要用 root。需要时会询问你的密码。" msgstr "请以你自己的用户运行,不要用 root。需要时会询问你的密码。"
#: src/face-unlock:222 src/lib/system.sh:89 #: src/face-unlock:226 src/lib/system.sh:93
#, sh-printf-format #, sh-printf-format
msgid "Unknown command: %s" msgid "Unknown command: %s"
msgstr "未知命令:%s" msgstr "未知命令:%s"
@@ -622,6 +622,12 @@ msgstr "试一试"
msgid "Quit" msgid "Quit"
msgstr "退出" msgstr "退出"
#: src/lib/migrate.sh:119
msgid ""
"Moving your faces and settings over from plasma-face-unlock. That needs your "
"password."
msgstr "正在从 plasma-face-unlock 迁移你的人脸和设置。这需要你的密码。"
#: src/lib/pam.sh:132 #: src/lib/pam.sh:132
#, sh-printf-format #, sh-printf-format
msgid "The PAM module is not installed at %s." msgid "The PAM module is not installed at %s."
@@ -632,25 +638,25 @@ msgstr "PAM 模块未安装在 %s。"
msgid "There is no PAM configuration for %s on this system." msgid "There is no PAM configuration for %s on this system."
msgstr "此系统上没有 %s 的 PAM 配置。" msgstr "此系统上没有 %s 的 PAM 配置。"
#: src/lib/system.sh:47 #: src/lib/system.sh:48
msgid "This needs root, and neither sudo, run0 nor doas is installed." msgid "This needs root, and neither sudo, run0 nor doas is installed."
msgstr "这需要 root 权限,但 sudo、run0 和 doas 都没有安装。" msgstr "这需要 root 权限,但 sudo、run0 和 doas 都没有安装。"
#: src/lib/system.sh:56 #: src/lib/system.sh:57
msgid "This command has to run as root." msgid "This command has to run as root."
msgstr "此命令必须以 root 运行。" msgstr "此命令必须以 root 运行。"
#: src/lib/system.sh:64 #: src/lib/system.sh:65
#, sh-printf-format #, sh-printf-format
msgid "Not a valid setting: %s=%s" msgid "Not a valid setting: %s=%s"
msgstr "无效的设置:%s=%s" msgstr "无效的设置:%s=%s"
#: src/lib/system.sh:75 #: src/lib/system.sh:76
#, sh-printf-format #, sh-printf-format
msgid "Not a service this can be used for: %s" msgid "Not a service this can be used for: %s"
msgstr "不能用于此服务:%s" msgstr "不能用于此服务:%s"
#: src/lib/system.sh:131 #: src/lib/system.sh:135
#, sh-printf-format #, sh-printf-format
msgid "" msgid ""
"Hyprland does not start the lock screen agent by itself. Add this line to %s:" "Hyprland does not start the lock screen agent by itself. Add this line to %s:"
+6 -2
View File
@@ -23,12 +23,12 @@ FU_SELF="$(readlink -f "${BASH_SOURCE[0]}")"
# An environment that points the libraries somewhere else is ignored then. # An environment that points the libraries somewhere else is ignored then.
if [[ $EUID -eq 0 ]]; then if [[ $EUID -eq 0 ]]; then
unset FU_LIBDIR FU_LIBEXECDIR FU_LOCALEDIR FU_PAMDIR FU_CTL FU_AGENT FU_PAM_MODULE FU_SYSCONFIG \ unset FU_LIBDIR FU_LIBEXECDIR FU_LOCALEDIR FU_PAMDIR FU_CTL FU_AGENT FU_PAM_MODULE FU_SYSCONFIG \
FU_PAM_ETC_DIR FU_PAM_VENDOR_DIRS FU_PAM_ETC_DIR FU_PAM_VENDOR_DIRS FU_OLD_SYSDIR FU_OLD_STATEDIR FU_STATEDIR FU_SYSTEMD_ETC
fi fi
FU_LIBDIR="${FU_LIBDIR:-@LIBDIR@}" FU_LIBDIR="${FU_LIBDIR:-@LIBDIR@}"
for _mod in common config daemon pam system menu; do for _mod in common config daemon pam system migrate menu; do
# shellcheck source=/dev/null # shellcheck source=/dev/null
if ! source "$FU_LIBDIR/$_mod.sh"; then if ! source "$FU_LIBDIR/$_mod.sh"; then
printf 'face-unlock: cannot load %s/%s.sh\n' "$FU_LIBDIR" "$_mod" >&2 printf 'face-unlock: cannot load %s/%s.sh\n' "$FU_LIBDIR" "$_mod" >&2
@@ -205,6 +205,10 @@ main() {
exit 2 exit 2
fi fi
case "$cmd" in
''|enable|disable|setup|add|enroll|faces|list|remove|delete|test|try) fu_migrate ;;
esac
case "$cmd" in case "$cmd" in
enable) fu_do_enable ;; enable) fu_do_enable ;;
disable) fu_do_disable ;; disable) fu_do_disable ;;
+121
View File
@@ -0,0 +1,121 @@
# shellcheck shell=bash
#
# Moving over from plasma-face-unlock, the old name.
#
# The packages run `face-unlock --root migrate` when they are installed. The
# command runs it too (through sudo) when it finds something left over, for
# anybody who built it from source. This user's own settings need no root and
# are moved every time the command starts.
FU_OLD_NAME="plasma-face-unlock"
FU_OLD_PAM_MARK="# plasma-face-unlock: the face first, the password if that does not work"
FU_OLD_PAM_WRAPPER_MARK="# Written by plasma-face-unlock."
# Overridable for the tests only, like the PAM directories.
FU_OLD_SYSDIR="${FU_OLD_SYSDIR:-/etc/$FU_OLD_NAME}"
FU_OLD_STATEDIR="${FU_OLD_STATEDIR:-/var/lib/$FU_OLD_NAME}"
FU_STATEDIR="${FU_STATEDIR:-/var/lib/$FU_NAME}"
FU_SYSTEMD_ETC="${FU_SYSTEMD_ETC:-/etc/systemd/system}"
_fu_old_socket_link() {
printf '%s/sockets.target.wants/%sd.socket\n' "$FU_SYSTEMD_ETC" "$FU_OLD_NAME"
}
# _fu_pam_has_old <service>
_fu_pam_has_old() {
local file
file="$(fu_pam_etc "$1")"
[[ -r $file ]] && grep -q 'pam_plasma_face_unlock\.so' "$file"
}
# _fu_pam_drop_old <service> (root)
_fu_pam_drop_old() {
local file content
file="$(fu_pam_etc "$1")"
if head -n 3 "$file" | grep -qF "$FU_OLD_PAM_WRAPPER_MARK"; then
rm -f -- "$file"
return
fi
content="$(awk -v mark="$FU_OLD_PAM_MARK" '
$0 == mark { next }
/pam_plasma_face_unlock\.so/ { next }
{ print }
' "$file")" || return 1
_fu_pam_replace "$file" "$content"
}
# fu_migrate_system (root)
# The system settings, the faces, sudo and admin prompts and the daemon's
# socket, as plasma-face-unlock left them.
fu_migrate_system() {
local service link
if [[ -d $FU_OLD_SYSDIR ]]; then
if [[ -f $FU_OLD_SYSDIR/config && ! -e $FU_SYSCONFIG ]]; then
install -D -m 0644 "$FU_OLD_SYSDIR/config" "$FU_SYSCONFIG" || return 1
fi
rm -rf -- "$FU_OLD_SYSDIR"
fi
if [[ -d $FU_OLD_STATEDIR ]]; then
# Faces already set up under the new name win.
if [[ -d $FU_OLD_STATEDIR/users ]] && ! compgen -G "$FU_STATEDIR/users/*" > /dev/null; then
install -d -m 0700 "$FU_STATEDIR" || return 1
rm -rf -- "$FU_STATEDIR/users"
mv -- "$FU_OLD_STATEDIR/users" "$FU_STATEDIR/users" || return 1
fi
rm -rf -- "$FU_OLD_STATEDIR"
fi
for service in "${FU_PAM_SERVICES[@]}"; do
_fu_pam_has_old "$service" || continue
_fu_pam_drop_old "$service" && fu_pam_enable "$service"
done
link="$(_fu_old_socket_link)"
if [[ -L $link ]]; then
systemctl disable --now "${FU_OLD_NAME}d.socket" > /dev/null 2>&1 || true
rm -f -- "$link"
systemctl enable --now "$FU_UNIT_SOCKET" > /dev/null 2>&1 || true
fi
return 0
}
# fu_migrate_pending
# Whether something needs fu_migrate_system.
fu_migrate_pending() {
local service
[[ -d $FU_OLD_SYSDIR || -d $FU_OLD_STATEDIR || -L $(_fu_old_socket_link) ]] && return 0
for service in "${FU_PAM_SERVICES[@]}"; do
_fu_pam_has_old "$service" && return 0
done
return 1
}
# fu_migrate_user
# This user's settings and the agent's service.
fu_migrate_user() {
local old="$FU_XDG_CONFIG/$FU_OLD_NAME" link
if [[ -d $old ]]; then
if [[ -e $FU_CONFDIR ]]; then
rm -rf -- "$old"
else
mv -- "$old" "$FU_CONFDIR"
fi
fi
link="$FU_XDG_CONFIG/systemd/user/graphical-session.target.wants/$FU_OLD_NAME-agent.service"
if [[ -L $link ]]; then
systemctl --user disable --now "$FU_OLD_NAME-agent.service" > /dev/null 2>&1 || true
rm -f -- "$link"
fu_agent_available && fu_agent_enable
fi
return 0
}
# fu_migrate
fu_migrate() {
fu_migrate_user
fu_migrate_pending || return 0
fu_say " $(fu_msg "Moving your faces and settings over from plasma-face-unlock. That needs your password.")"
fu_root migrate
}
+4
View File
@@ -13,6 +13,7 @@
# --root pam-disable <service> # --root pam-disable <service>
# --root socket-enable start the daemon's socket, and at boot # --root socket-enable start the daemon's socket, and at boot
# --root socket-disable # --root socket-disable
# --root migrate move over from plasma-face-unlock, see migrate.sh
FU_SELF="${FU_SELF:-$(readlink -f "${BASH_SOURCE[1]:-$0}")}" FU_SELF="${FU_SELF:-$(readlink -f "${BASH_SOURCE[1]:-$0}")}"
@@ -85,6 +86,9 @@ fu_root_verb() {
socket-disable) socket-disable)
systemctl disable --now "$FU_UNIT_SOCKET" > /dev/null 2>&1 systemctl disable --now "$FU_UNIT_SOCKET" > /dev/null 2>&1
;; ;;
migrate)
fu_migrate_system
;;
*) *)
fu_bad "$(fu_msg "Unknown command: %s" "$verb")" fu_bad "$(fu_msg "Unknown command: %s" "$verb")"
return 1 return 1
+73
View File
@@ -10,6 +10,8 @@
# When the pam_harness from the build is there, the files that come out are # When the pam_harness from the build is there, the files that come out are
# also run through real PAM, with the module missing on purpose: the dash in # also run through real PAM, with the module missing on purpose: the dash in
# front of the line has to make PAM skip it without a word. # front of the line has to make PAM skip it without a word.
#
# Last, moving over from plasma-face-unlock: its PAM lines, settings and faces.
# check() runs its second argument with eval, so that is quoted on purpose. # check() runs its second argument with eval, so that is quoted on purpose.
# shellcheck disable=SC2016 # shellcheck disable=SC2016
@@ -29,6 +31,10 @@ source "$FU_LIBDIR/common.sh"
source "$FU_LIBDIR/config.sh" source "$FU_LIBDIR/config.sh"
# shellcheck source=/dev/null # shellcheck source=/dev/null
source "$FU_LIBDIR/pam.sh" source "$FU_LIBDIR/pam.sh"
# shellcheck source=/dev/null
source "$FU_LIBDIR/system.sh"
# shellcheck source=/dev/null
source "$FU_LIBDIR/migrate.sh"
FU_PAM_MODULE="$tmp/lib/pam_face_unlock.so" FU_PAM_MODULE="$tmp/lib/pam_face_unlock.so"
mkdir -p "$tmp/lib" "$tmp/etc" "$tmp/vendor" mkdir -p "$tmp/lib" "$tmp/etc" "$tmp/vendor"
@@ -117,6 +123,73 @@ check "vendor polkit-1: turning it off removes our file" '[[ ! -e $tmp/etc/polki
# No configuration at all. # No configuration at all.
check "an unknown service is refused" '! fu_pam_enable nosuchservice 2>/dev/null' check "an unknown service is refused" '! fu_pam_enable nosuchservice 2>/dev/null'
# ---------------------------------------------------------------------------
# Moving over from plasma-face-unlock
# ---------------------------------------------------------------------------
FU_OLD_SYSDIR="$tmp/old-etc"
FU_OLD_STATEDIR="$tmp/old-state"
FU_STATEDIR="$tmp/state"
FU_SYSCONFIG="$tmp/new-etc/config"
FU_SYSTEMD_ETC="$tmp/systemd"
old_module=/usr/lib/security/pam_plasma_face_unlock.so
# What plasma-face-unlock wrote is what this writes, under the old name.
make_old() {
sed -i -e "s|^$FU_PAM_MARK\$|$FU_OLD_PAM_MARK|" -e "s|$FU_PAM_WRAPPER_MARK|$FU_OLD_PAM_WRAPPER_MARK|" \
-e "s|$FU_PAM_MODULE|$old_module|" "$1"
}
for layout in arch_sudo debian_sudo fedora_sudo; do
printf '%s\n' "${!layout}" > "$tmp/etc/sudo"
cp "$tmp/etc/sudo" "$tmp/original"
fu_pam_enable sudo
make_old "$tmp/etc/sudo"
check "$layout: the old line is found" '_fu_pam_has_old sudo && ! fu_pam_enabled sudo && fu_migrate_pending'
fu_migrate_system
check "$layout: moved over to the new line" 'fu_pam_enabled sudo && ! _fu_pam_has_old sudo'
check "$layout: the old comment is gone" '! grep -qF "$FU_OLD_PAM_MARK" "$tmp/etc/sudo"'
check "$layout: nothing is left over" '! fu_migrate_pending'
fu_pam_disable sudo
check "$layout: off again gives back the file from before" 'cmp -s "$tmp/etc/sudo" "$tmp/original"'
rm -f "$tmp/etc/sudo"
done
fu_pam_enable polkit-1
make_old "$tmp/etc/polkit-1"
fu_migrate_system
check "vendor polkit-1: moved over to a file of the new name" 'grep -qF "$FU_PAM_WRAPPER_MARK" "$tmp/etc/polkit-1" && ! grep -q plasma "$tmp/etc/polkit-1"'
fu_pam_disable polkit-1
mkdir -p "$FU_OLD_SYSDIR" "$FU_OLD_STATEDIR/users"
echo 'Liveness=heavy' > "$FU_OLD_SYSDIR/config"
echo '{}' > "$FU_OLD_STATEDIR/users/1000.json"
check "old settings and faces are found" 'fu_migrate_pending'
fu_migrate_system
check "the system settings moved" '[[ $(cat "$FU_SYSCONFIG") == Liveness=heavy && ! -e $FU_OLD_SYSDIR ]]'
check "the faces moved" '[[ $(cat "$FU_STATEDIR/users/1000.json") == "{}" && ! -e $FU_OLD_STATEDIR ]]'
mkdir -p "$FU_OLD_STATEDIR/users"
echo old > "$FU_OLD_STATEDIR/users/1000.json"
fu_migrate_system
check "faces set up under the new name win" '[[ $(cat "$FU_STATEDIR/users/1000.json") == "{}" && ! -e $FU_OLD_STATEDIR ]]'
check "nothing is left over at the end" '! fu_migrate_pending'
# This user's side, with systemctl only written down.
# shellcheck disable=SC2329 # called by fu_migrate_user
systemctl() { printf '%s\n' "$*" >> "$tmp/systemctl"; }
FU_XDG_CONFIG="$tmp/home-config"
FU_CONFDIR="$FU_XDG_CONFIG/face-unlock"
mkdir -p "$FU_XDG_CONFIG/plasma-face-unlock" "$FU_XDG_CONFIG/systemd/user/graphical-session.target.wants"
echo 'Enabled=yes' > "$FU_XDG_CONFIG/plasma-face-unlock/config"
ln -s /nowhere "$FU_XDG_CONFIG/systemd/user/graphical-session.target.wants/plasma-face-unlock-agent.service"
XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-$tmp}" fu_migrate_user
check "user settings moved" '[[ $(cat "$FU_CONFDIR/config") == Enabled=yes && ! -e $FU_XDG_CONFIG/plasma-face-unlock ]]'
check "the old agent is off and the new one on" 'grep -q "disable --now plasma-face-unlock-agent" "$tmp/systemctl" && grep -q "enable --now face-unlock-agent" "$tmp/systemctl"'
unset -f systemctl
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Through real PAM # Through real PAM
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------