From 58b2ab36ada1b50b4cb48e8fd6f75bc3e48edddf Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Fri, 29 May 2026 19:35:51 -0500 Subject: [PATCH 01/11] ui: Fix hybrid QR spinner --- credentialsd-ui/data/resources/style.css | 9 ++++ credentialsd-ui/data/resources/ui/window.blp | 49 ++++++++++++++++++- credentialsd-ui/src/gui/view_model/gtk/mod.rs | 5 +- 3 files changed, 60 insertions(+), 3 deletions(-) diff --git a/credentialsd-ui/data/resources/style.css b/credentialsd-ui/data/resources/style.css index 962d5d5..9cc543e 100644 --- a/credentialsd-ui/data/resources/style.css +++ b/credentialsd-ui/data/resources/style.css @@ -26,7 +26,16 @@ padding-left: 0px; } +.hero { + margin-bottom: 24px; +} + separator { margin-top: 12px; margin-bottom: 12px; +} + +.instructions { + font-size: 1.2em; + font-weight: bold; } \ No newline at end of file diff --git a/credentialsd-ui/data/resources/ui/window.blp b/credentialsd-ui/data/resources/ui/window.blp index b1df8d6..a2985e3 100644 --- a/credentialsd-ui/data/resources/ui/window.blp +++ b/credentialsd-ui/data/resources/ui/window.blp @@ -178,12 +178,37 @@ template $CredentialsUiWindow: ApplicationWindow { child: Box { orientation: vertical; - Spinner { - visible: bind template.view-model as <$CredentialManagerViewModel>.qr_spinner_visible; + Image { + icon-name: "phone-symbolic"; + icon-size: large; + pixel-size: 120; + height-request: 120; + width-request: 120; + + styles [ + "hero", + ] + + accessibility { + label: "Mobile device icon"; + } } Label { label: bind template.view-model as <$CredentialManagerViewModel>.prompt; + wrap: true; + width-request: 300; + + styles [ + "instructions", + ] + } + + Spinner { + height-request: 120; + margin-top: 16; + visible: bind template.view-model as <$CredentialManagerViewModel>.qr_spinner_visible; + spinning: bind template.view-model as <$CredentialManagerViewModel>.qr_spinner_visible; } }; } @@ -214,8 +239,28 @@ template $CredentialsUiWindow: ApplicationWindow { child: Box { orientation: vertical; + Image { + icon-name: "check-round-outline-symbolic"; + pixel-size: 120; + icon-size: large; + height-request: 120; + width-request: 120; + + styles [ + "hero", + ] + + accessibility { + label: "Success icon"; + } + } + Label { label: _("Done!"); + + styles [ + "instructions", + ] } }; } diff --git a/credentialsd-ui/src/gui/view_model/gtk/mod.rs b/credentialsd-ui/src/gui/view_model/gtk/mod.rs index 58dc9cc..e98ba10 100644 --- a/credentialsd-ui/src/gui/view_model/gtk/mod.rs +++ b/credentialsd-ui/src/gui/view_model/gtk/mod.rs @@ -176,11 +176,14 @@ impl ViewModel { let texture = view_model.draw_qr_code(&qr_code); view_model.set_qr_code_paintable(&texture); view_model.set_qr_code_visible(true); - view_model.set_qr_spinner_visible(true); } ViewUpdate::HybridConnecting => { view_model.set_qr_code_visible(false); _ = view_model.qr_code_paintable().take(); + view_model.waiting_for_device(&Device { + id: "x".to_string(), + transport: Transport::HybridQr, + }); view_model.set_prompt(gettext( "Connecting to your device. Make sure both devices are near each other and have Bluetooth enabled.", )); From 5eb55758bb2858e4428426d47df03858d05f5290 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Fri, 29 May 2026 15:16:44 -0500 Subject: [PATCH 02/11] ui: Overlay passkey logo on QR code --- .../data/resources/img/meson.build | 2 + .../data/resources/img/passkey-logo.svg | 39 +++++++++++++++++++ credentialsd-ui/data/resources/meson.build | 3 +- .../data/resources/resources.gresource.xml | 1 + credentialsd-ui/data/resources/ui/window.blp | 12 ++++++ 5 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 credentialsd-ui/data/resources/img/meson.build create mode 100644 credentialsd-ui/data/resources/img/passkey-logo.svg diff --git a/credentialsd-ui/data/resources/img/meson.build b/credentialsd-ui/data/resources/img/meson.build new file mode 100644 index 0000000..64db01f --- /dev/null +++ b/credentialsd-ui/data/resources/img/meson.build @@ -0,0 +1,2 @@ +fs = import('fs') +fs.copyfile('passkey-logo.svg') \ No newline at end of file diff --git a/credentialsd-ui/data/resources/img/passkey-logo.svg b/credentialsd-ui/data/resources/img/passkey-logo.svg new file mode 100644 index 0000000..7adfbc6 --- /dev/null +++ b/credentialsd-ui/data/resources/img/passkey-logo.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/credentialsd-ui/data/resources/meson.build b/credentialsd-ui/data/resources/meson.build index 6419ccd..dadbee2 100644 --- a/credentialsd-ui/data/resources/meson.build +++ b/credentialsd-ui/data/resources/meson.build @@ -1,3 +1,4 @@ +subdir('img') subdir('ui') # Resources @@ -9,4 +10,4 @@ resources = gnome.compile_resources( install: true, install_dir: pkgdatadir, dependencies: blueprint_templates, -) +) \ No newline at end of file diff --git a/credentialsd-ui/data/resources/resources.gresource.xml b/credentialsd-ui/data/resources/resources.gresource.xml index c1edc63..ea47a3f 100644 --- a/credentialsd-ui/data/resources/resources.gresource.xml +++ b/credentialsd-ui/data/resources/resources.gresource.xml @@ -3,5 +3,6 @@ ui/window.ui style.css + img/passkey-logo.svg diff --git a/credentialsd-ui/data/resources/ui/window.blp b/credentialsd-ui/data/resources/ui/window.blp index a2985e3..7f1c7ab 100644 --- a/credentialsd-ui/data/resources/ui/window.blp +++ b/credentialsd-ui/data/resources/ui/window.blp @@ -106,6 +106,18 @@ template $CredentialsUiWindow: ApplicationWindow { "qr-code", ] } + + [overlay] + Image { + pixel-size: 128; + halign: center; + valign: center; + resource: "/xyz/iinuwa/credentialsd/CredentialsUi/img/passkey-logo.svg"; + + accessibility { + label: "FIDO passkey logo"; + } + } } } From 8326e9428278d8134d73e58eb221431804b1fd7c Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Fri, 29 May 2026 23:00:14 -0500 Subject: [PATCH 03/11] ui: Clean up USB dialog --- credentialsd-ui/data/resources/style.css | 1 + credentialsd-ui/data/resources/ui/window.blp | 16 ++++++++++++++++ credentialsd-ui/src/gui/view_model/gtk/window.rs | 5 +++++ 3 files changed, 22 insertions(+) diff --git a/credentialsd-ui/data/resources/style.css b/credentialsd-ui/data/resources/style.css index 9cc543e..1879c79 100644 --- a/credentialsd-ui/data/resources/style.css +++ b/credentialsd-ui/data/resources/style.css @@ -38,4 +38,5 @@ separator { .instructions { font-size: 1.2em; font-weight: bold; + margin-bottom: 12px; } \ No newline at end of file diff --git a/credentialsd-ui/data/resources/ui/window.blp b/credentialsd-ui/data/resources/ui/window.blp index 7f1c7ab..4151a0b 100644 --- a/credentialsd-ui/data/resources/ui/window.blp +++ b/credentialsd-ui/data/resources/ui/window.blp @@ -165,6 +165,14 @@ template $CredentialsUiWindow: ApplicationWindow { Image { icon-name: "media-removable-symbolic"; + pixel-size: 120; + icon-size: large; + height-request: 120; + width-request: 120; + + styles [ + "hero", + ] accessibility { labelled-by: security_key_label; @@ -173,12 +181,20 @@ template $CredentialsUiWindow: ApplicationWindow { Label security_key_label { label: bind template.view-model as <$CredentialManagerViewModel>.prompt; + wrap: true; + width-request: 300; + + styles [ + "instructions", + ] } PasswordEntry usb_nfc_pin_entry { activate => $handle_usb_nfc_pin_entered() swapped; + show => $handle_usb_nfc_pin_shown() swapped; visible: bind template.view-model as <$CredentialManagerViewModel>.usb_nfc_pin_entry_visible; placeholder-text: _("Enter your device PIN"); + can-focus: true; } }; } diff --git a/credentialsd-ui/src/gui/view_model/gtk/window.rs b/credentialsd-ui/src/gui/view_model/gtk/window.rs index 642ca73..7d7a369 100644 --- a/credentialsd-ui/src/gui/view_model/gtk/window.rs +++ b/credentialsd-ui/src/gui/view_model/gtk/window.rs @@ -53,6 +53,11 @@ mod imp { } )); } + + #[template_callback] + fn handle_usb_nfc_pin_shown(&self, entry: >k::PasswordEntry) { + entry.grab_focus(); + } } impl Default for CredentialsUiWindow { From dc1e59ad2f5235872df94b1b50e08122630954da Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Mon, 1 Jun 2026 09:53:26 -0500 Subject: [PATCH 04/11] wip: ui: Fix icons --- .../data/icons/dialpad-symbolic.svg | 2 -- .../data/icons/fingerprint-symbolic.svg | 2 -- credentialsd-ui/data/icons/meson.build | 10 ---------- .../data/icons/symbolic-link-symbolic.svg | 2 -- credentialsd-ui/data/meson.build | 1 - .../data/resources/icons/copy-icons.py | 18 +++++++++++++++++ .../data/resources/icons/meson.build | 20 +++++++++++++++++++ .../scalable/emblems}/passkey-logo.svg | 0 .../status}/check-round-outline-symbolic.svg | 0 ...wa.credentialsd.CredentialsUi-symbolic.svg | 0 ...inuwa.credentialsd.CredentialsUi.Devel.svg | 0 .../xyz.iinuwa.credentialsd.CredentialsUi.svg | 0 .../data/resources/img/meson.build | 2 -- credentialsd-ui/data/resources/meson.build | 7 +++++-- .../data/resources/resources.gresource.xml | 3 ++- credentialsd-ui/data/resources/ui/window.blp | 5 +++-- .../src/gui/view_model/gtk/application.rs | 8 +------- .../src/gui/view_model/gtk/window.rs | 6 +++--- 18 files changed, 52 insertions(+), 34 deletions(-) delete mode 100644 credentialsd-ui/data/icons/dialpad-symbolic.svg delete mode 100644 credentialsd-ui/data/icons/fingerprint-symbolic.svg delete mode 100644 credentialsd-ui/data/icons/meson.build delete mode 100644 credentialsd-ui/data/icons/symbolic-link-symbolic.svg create mode 100755 credentialsd-ui/data/resources/icons/copy-icons.py create mode 100644 credentialsd-ui/data/resources/icons/meson.build rename credentialsd-ui/data/resources/{img => icons/scalable/emblems}/passkey-logo.svg (100%) rename credentialsd-ui/data/{icons => resources/icons/symbolic/status}/check-round-outline-symbolic.svg (100%) rename credentialsd-ui/data/{ => resources}/icons/xyz.iinuwa.credentialsd.CredentialsUi-symbolic.svg (100%) rename credentialsd-ui/data/{ => resources}/icons/xyz.iinuwa.credentialsd.CredentialsUi.Devel.svg (100%) rename credentialsd-ui/data/{ => resources}/icons/xyz.iinuwa.credentialsd.CredentialsUi.svg (100%) delete mode 100644 credentialsd-ui/data/resources/img/meson.build diff --git a/credentialsd-ui/data/icons/dialpad-symbolic.svg b/credentialsd-ui/data/icons/dialpad-symbolic.svg deleted file mode 100644 index 5b16830..0000000 --- a/credentialsd-ui/data/icons/dialpad-symbolic.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/credentialsd-ui/data/icons/fingerprint-symbolic.svg b/credentialsd-ui/data/icons/fingerprint-symbolic.svg deleted file mode 100644 index ba704cf..0000000 --- a/credentialsd-ui/data/icons/fingerprint-symbolic.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/credentialsd-ui/data/icons/meson.build b/credentialsd-ui/data/icons/meson.build deleted file mode 100644 index 2ab86e9..0000000 --- a/credentialsd-ui/data/icons/meson.build +++ /dev/null @@ -1,10 +0,0 @@ -install_data( - '@0@.svg'.format(application_id), - install_dir: iconsdir / 'hicolor' / 'scalable' / 'apps' -) - -install_data( - '@0@-symbolic.svg'.format(base_id), - install_dir: iconsdir / 'hicolor' / 'symbolic' / 'apps', - rename: '@0@-symbolic.svg'.format(application_id) -) diff --git a/credentialsd-ui/data/icons/symbolic-link-symbolic.svg b/credentialsd-ui/data/icons/symbolic-link-symbolic.svg deleted file mode 100644 index 05a512c..0000000 --- a/credentialsd-ui/data/icons/symbolic-link-symbolic.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/credentialsd-ui/data/meson.build b/credentialsd-ui/data/meson.build index 8960582..c149cfc 100644 --- a/credentialsd-ui/data/meson.build +++ b/credentialsd-ui/data/meson.build @@ -1,4 +1,3 @@ -subdir('icons') subdir('resources') # Desktop file desktop_conf = configuration_data() diff --git a/credentialsd-ui/data/resources/icons/copy-icons.py b/credentialsd-ui/data/resources/icons/copy-icons.py new file mode 100755 index 0000000..9beb230 --- /dev/null +++ b/credentialsd-ui/data/resources/icons/copy-icons.py @@ -0,0 +1,18 @@ +#!/usr/bin/python3 +from pathlib import Path +import shutil +import sys + + +src_dir = Path(sys.argv[1]) +build_dir = Path(sys.argv[2]) +paths = [Path(p) for p in sys.argv[3:]] + +for p in paths: + rel_path = p.relative_to(src_dir) + target = build_dir / rel_path + target.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(p, target) + +# Touch the file to update modification time +(build_dir / "icons-copied").touch() diff --git a/credentialsd-ui/data/resources/icons/meson.build b/credentialsd-ui/data/resources/icons/meson.build new file mode 100644 index 0000000..d25073e --- /dev/null +++ b/credentialsd-ui/data/resources/icons/meson.build @@ -0,0 +1,20 @@ +install_data( + '@0@.svg'.format(application_id), + install_dir: iconsdir / 'hicolor' / 'scalable' / 'apps', +) + +install_data( + '@0@-symbolic.svg'.format(base_id), + install_dir: iconsdir / 'hicolor' / 'symbolic' / 'apps', + rename: '@0@-symbolic.svg'.format(application_id), +) + +copy_icons = find_program('copy-icons.py') +icons = custom_target( + command: [copy_icons, '@CURRENT_SOURCE_DIR@', '@OUTDIR@', '@INPUT@'], + input: files( + 'scalable/emblems/passkey-logo.svg', + 'symbolic/status/check-round-outline-symbolic.svg', + ), + output: 'icons-copied', +) \ No newline at end of file diff --git a/credentialsd-ui/data/resources/img/passkey-logo.svg b/credentialsd-ui/data/resources/icons/scalable/emblems/passkey-logo.svg similarity index 100% rename from credentialsd-ui/data/resources/img/passkey-logo.svg rename to credentialsd-ui/data/resources/icons/scalable/emblems/passkey-logo.svg diff --git a/credentialsd-ui/data/icons/check-round-outline-symbolic.svg b/credentialsd-ui/data/resources/icons/symbolic/status/check-round-outline-symbolic.svg similarity index 100% rename from credentialsd-ui/data/icons/check-round-outline-symbolic.svg rename to credentialsd-ui/data/resources/icons/symbolic/status/check-round-outline-symbolic.svg diff --git a/credentialsd-ui/data/icons/xyz.iinuwa.credentialsd.CredentialsUi-symbolic.svg b/credentialsd-ui/data/resources/icons/xyz.iinuwa.credentialsd.CredentialsUi-symbolic.svg similarity index 100% rename from credentialsd-ui/data/icons/xyz.iinuwa.credentialsd.CredentialsUi-symbolic.svg rename to credentialsd-ui/data/resources/icons/xyz.iinuwa.credentialsd.CredentialsUi-symbolic.svg diff --git a/credentialsd-ui/data/icons/xyz.iinuwa.credentialsd.CredentialsUi.Devel.svg b/credentialsd-ui/data/resources/icons/xyz.iinuwa.credentialsd.CredentialsUi.Devel.svg similarity index 100% rename from credentialsd-ui/data/icons/xyz.iinuwa.credentialsd.CredentialsUi.Devel.svg rename to credentialsd-ui/data/resources/icons/xyz.iinuwa.credentialsd.CredentialsUi.Devel.svg diff --git a/credentialsd-ui/data/icons/xyz.iinuwa.credentialsd.CredentialsUi.svg b/credentialsd-ui/data/resources/icons/xyz.iinuwa.credentialsd.CredentialsUi.svg similarity index 100% rename from credentialsd-ui/data/icons/xyz.iinuwa.credentialsd.CredentialsUi.svg rename to credentialsd-ui/data/resources/icons/xyz.iinuwa.credentialsd.CredentialsUi.svg diff --git a/credentialsd-ui/data/resources/img/meson.build b/credentialsd-ui/data/resources/img/meson.build deleted file mode 100644 index 64db01f..0000000 --- a/credentialsd-ui/data/resources/img/meson.build +++ /dev/null @@ -1,2 +0,0 @@ -fs = import('fs') -fs.copyfile('passkey-logo.svg') \ No newline at end of file diff --git a/credentialsd-ui/data/resources/meson.build b/credentialsd-ui/data/resources/meson.build index dadbee2..678172a 100644 --- a/credentialsd-ui/data/resources/meson.build +++ b/credentialsd-ui/data/resources/meson.build @@ -1,4 +1,4 @@ -subdir('img') +subdir('icons') subdir('ui') # Resources @@ -9,5 +9,8 @@ resources = gnome.compile_resources( source_dir: meson.current_build_dir(), install: true, install_dir: pkgdatadir, - dependencies: blueprint_templates, + dependencies: [ + blueprint_templates, + icons, + ], ) \ No newline at end of file diff --git a/credentialsd-ui/data/resources/resources.gresource.xml b/credentialsd-ui/data/resources/resources.gresource.xml index ea47a3f..f5301e8 100644 --- a/credentialsd-ui/data/resources/resources.gresource.xml +++ b/credentialsd-ui/data/resources/resources.gresource.xml @@ -3,6 +3,7 @@ ui/window.ui style.css - img/passkey-logo.svg + icons/scalable/emblems/passkey-logo.svg + icons/symbolic/status/check-round-outline-symbolic.svg diff --git a/credentialsd-ui/data/resources/ui/window.blp b/credentialsd-ui/data/resources/ui/window.blp index 4151a0b..df4b4fe 100644 --- a/credentialsd-ui/data/resources/ui/window.blp +++ b/credentialsd-ui/data/resources/ui/window.blp @@ -112,7 +112,8 @@ template $CredentialsUiWindow: ApplicationWindow { pixel-size: 128; halign: center; valign: center; - resource: "/xyz/iinuwa/credentialsd/CredentialsUi/img/passkey-logo.svg"; + // TODO: Figure out why this doesn't work as icon-name: 'passkey-logo'; + resource: "/xyz/iinuwa/credentialsd/CredentialsUi/icons/scalable/emblems/passkey-logo.svg"; accessibility { label: "FIDO passkey logo"; @@ -268,7 +269,7 @@ template $CredentialsUiWindow: ApplicationWindow { orientation: vertical; Image { - icon-name: "check-round-outline-symbolic"; + icon-name: "face-smile-symbolic"; pixel-size: 120; icon-size: large; height-request: 120; diff --git a/credentialsd-ui/src/gui/view_model/gtk/application.rs b/credentialsd-ui/src/gui/view_model/gtk/application.rs index b86cd82..b1f0255 100644 --- a/credentialsd-ui/src/gui/view_model/gtk/application.rs +++ b/credentialsd-ui/src/gui/view_model/gtk/application.rs @@ -217,13 +217,7 @@ impl CredentialsUi { tx: Sender, rx: Receiver, ) -> Self { - let app: Self = glib::Object::builder() - .property("application-id", APP_ID) - .property( - "resource-base-path", - "/xyz/iinuwa/credentialsd/CredentialUI/", - ) - .build(); + let app: Self = glib::Object::new(); app.imp().parent_window.replace(parent_window); app.imp().tx.replace(Some(tx)); app.imp().rx.replace(Some(rx)); diff --git a/credentialsd-ui/src/gui/view_model/gtk/window.rs b/credentialsd-ui/src/gui/view_model/gtk/window.rs index 7d7a369..372fe6e 100644 --- a/credentialsd-ui/src/gui/view_model/gtk/window.rs +++ b/credentialsd-ui/src/gui/view_model/gtk/window.rs @@ -5,11 +5,11 @@ use gtk::{gdk, gio, glib}; use gtk::subclass::prelude::*; use gdk::Texture; -use glib::{Properties, clone}; -use gtk::{Picture, prelude::*}; +use glib::{clone, Properties}; +use gtk::{prelude::*, Picture}; use super::application::CredentialsUi; -use super::{ViewModel, device::DeviceObject}; +use super::{device::DeviceObject, ViewModel}; use crate::config::{APP_ID, PROFILE}; use crate::gui::view_model::Transport; From 9378bab55eba2ab345709ecfa4b29a280273d204 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Mon, 1 Jun 2026 09:53:26 -0500 Subject: [PATCH 05/11] ui: make window a little smaller --- credentialsd-ui/data/resources/ui/window.blp | 14 ++++----- ....credentialsd.CredentialsUi.gschema.xml.in | 12 -------- .../src/gui/view_model/gtk/window.rs | 30 +++++-------------- 3 files changed, 14 insertions(+), 42 deletions(-) diff --git a/credentialsd-ui/data/resources/ui/window.blp b/credentialsd-ui/data/resources/ui/window.blp index df4b4fe..d1750d0 100644 --- a/credentialsd-ui/data/resources/ui/window.blp +++ b/credentialsd-ui/data/resources/ui/window.blp @@ -8,8 +8,8 @@ template $CredentialsUiWindow: ApplicationWindow { orientation: vertical; halign: center; width-request: 600; - margin-start: 160; - margin-end: 160; + margin-start: 32; + margin-end: 32; margin-bottom: 48; spacing: 10; @@ -23,14 +23,14 @@ template $CredentialsUiWindow: ApplicationWindow { Box { orientation: vertical; - margin-start: 48; - margin-end: 48; + margin-start: 100; + margin-end: 100; Label { label: bind template.view-model as <$CredentialManagerViewModel>.subtitle; wrap: true; use-markup: true; - width-request: 600; + width-request: 550; styles [ "subtitle-header", @@ -90,7 +90,7 @@ template $CredentialsUiWindow: ApplicationWindow { width-request: 400; Picture qr_code_pic { - height-request: 100; + height-request: 300; vexpand: false; halign: center; valign: center; @@ -109,7 +109,7 @@ template $CredentialsUiWindow: ApplicationWindow { [overlay] Image { - pixel-size: 128; + pixel-size: 96; halign: center; valign: center; // TODO: Figure out why this doesn't work as icon-name: 'passkey-logo'; diff --git a/credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in b/credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in index 60e0df4..b52e883 100644 --- a/credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in +++ b/credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in @@ -1,17 +1,5 @@ - - 600 - Window width - - - 400 - Window height - - - false - Window maximized state - diff --git a/credentialsd-ui/src/gui/view_model/gtk/window.rs b/credentialsd-ui/src/gui/view_model/gtk/window.rs index 372fe6e..6a33e29 100644 --- a/credentialsd-ui/src/gui/view_model/gtk/window.rs +++ b/credentialsd-ui/src/gui/view_model/gtk/window.rs @@ -5,11 +5,11 @@ use gtk::{gdk, gio, glib}; use gtk::subclass::prelude::*; use gdk::Texture; -use glib::{clone, Properties}; -use gtk::{prelude::*, Picture}; +use glib::{Properties, clone}; +use gtk::{Picture, prelude::*}; use super::application::CredentialsUi; -use super::{device::DeviceObject, ViewModel}; +use super::{ViewModel, device::DeviceObject}; use crate::config::{APP_ID, PROFILE}; use crate::gui::view_model::Transport; @@ -102,7 +102,7 @@ mod imp { } // Load latest window state - obj.load_window_size(); + obj.set_window_size(); } } @@ -121,9 +121,6 @@ mod imp { ); }; } - if let Err(err) = self.obj().save_window_size() { - tracing::warn!("Failed to save window state, {}", &err); - } // Pass close request on to the parent self.parent_close_request() @@ -211,22 +208,9 @@ impl CredentialsUiWindow { )); } - fn save_window_size(&self) -> Result<(), glib::BoolError> { - let imp = self.imp(); - - let (width, height) = self.default_size(); - - imp.settings.set_int("window-width", width)?; - imp.settings.set_int("window-height", height)?; - - Ok(()) - } - - fn load_window_size(&self) { - let imp = self.imp(); - - let width = imp.settings.int("window-width"); - let height = imp.settings.int("window-height"); + fn set_window_size(&self) { + let width = 200; + let height = 400; self.set_default_size(width, height); } From 1904e126bae6c14353236bf03db092da8ba58950 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Wed, 17 Jun 2026 17:54:38 -0400 Subject: [PATCH 06/11] ui: Make QR and USB prompts translatable --- credentialsd-common/src/model.rs | 15 ++++++++++++--- credentialsd-ui/data/resources/ui/window.blp | 4 ++-- credentialsd-ui/src/gui/view_model/gtk/mod.rs | 15 ++++++++++++++- credentialsd-ui/src/gui/view_model/mod.rs | 17 +++++++++++++---- 4 files changed, 41 insertions(+), 10 deletions(-) diff --git a/credentialsd-common/src/model.rs b/credentialsd-common/src/model.rs index fd56e70..9fb76f1 100644 --- a/credentialsd-common/src/model.rs +++ b/credentialsd-common/src/model.rs @@ -140,7 +140,12 @@ pub type RequestId = u32; // TODO: Move to credentialsd-ui #[derive(Debug, Clone, Serialize, Deserialize)] pub enum ViewUpdate { - SetTitle((String, String)), + SetTitle { + title: String, + subtitle: String, + qr_prompt: String, + usb_prompt: String, + }, SetDevices(Vec), // TODO: Fix this SetCredentials(Vec), @@ -148,8 +153,12 @@ pub enum ViewUpdate { WaitingForDevice(Device), SelectingDevice, - NeedsPin { attempts_left: Option }, - NeedsUserVerification { attempts_left: Option }, + NeedsPin { + attempts_left: Option, + }, + NeedsUserVerification { + attempts_left: Option, + }, NeedsUserPresence, HybridNeedsQrCode(String), diff --git a/credentialsd-ui/data/resources/ui/window.blp b/credentialsd-ui/data/resources/ui/window.blp index d1750d0..6528bd8 100644 --- a/credentialsd-ui/data/resources/ui/window.blp +++ b/credentialsd-ui/data/resources/ui/window.blp @@ -79,7 +79,7 @@ template $CredentialsUiWindow: ApplicationWindow { halign: start; valign: start; hexpand: true; - label: _("Scan the QR code using the camera on the device that has the passkey for {%s}"); + label: bind template.view-model as <$CredentialManagerViewModel>.scan_qr_prompt; wrap: true; } @@ -150,7 +150,7 @@ template $CredentialsUiWindow: ApplicationWindow { halign: start; valign: start; xalign: 0; - label: _("Insert and activate your security key to use it for (%s)"); + label: bind template.view-model as <$CredentialManagerViewModel>.activate_usb_prompt; wrap: true; } } diff --git a/credentialsd-ui/src/gui/view_model/gtk/mod.rs b/credentialsd-ui/src/gui/view_model/gtk/mod.rs index e98ba10..70f2c4d 100644 --- a/credentialsd-ui/src/gui/view_model/gtk/mod.rs +++ b/credentialsd-ui/src/gui/view_model/gtk/mod.rs @@ -40,6 +40,12 @@ mod imp { #[property(get, set)] pub subtitle: RefCell, + #[property(get, set)] + pub scan_qr_prompt: RefCell, + + #[property(get, set)] + pub activate_usb_prompt: RefCell, + #[property(get, set)] pub devices: RefCell, @@ -126,9 +132,16 @@ impl ViewModel { // TODO: hack so I don't have to unset this in every event manually. view_model.set_usb_nfc_pin_entry_visible(false); match update { - ViewUpdate::SetTitle((title, subtitle)) => { + ViewUpdate::SetTitle { + title, + subtitle, + qr_prompt, + usb_prompt, + } => { view_model.set_title(title); view_model.set_subtitle(subtitle); + view_model.set_scan_qr_prompt(qr_prompt); + view_model.set_activate_usb_prompt(usb_prompt); } ViewUpdate::SetDevices(devices) => { view_model.update_devices(&devices) diff --git a/credentialsd-ui/src/gui/view_model/mod.rs b/credentialsd-ui/src/gui/view_model/mod.rs index c94c2fc..4fdb22b 100644 --- a/credentialsd-ui/src/gui/view_model/mod.rs +++ b/credentialsd-ui/src/gui/view_model/mod.rs @@ -110,11 +110,20 @@ impl ViewModel { subtitle = subtitle.replace("%s3", &self.app_path_or_id); self.title = title; self.subtitle = subtitle; + let qr_prompt = + // TRANSLATORS: %s1 is the relying party (think: domain name) where the request is coming from + gettext("Scan the QR code using the camera on the device that has the passkey for %s1") + .replace("%s1", &self.rp_id); + // TRANSLATORS: %s1 is the relying party (think: domain name) where the request is coming from + let usb_prompt = gettext("Insert and activate your security key to use it for %s1") + .replace("%s1", &self.rp_id); self.tx_update - .send(ViewUpdate::SetTitle(( - self.title.to_string(), - self.subtitle.to_string(), - ))) + .send(ViewUpdate::SetTitle { + title: self.title.to_string(), + subtitle: self.subtitle.to_string(), + qr_prompt, + usb_prompt, + }) .await .unwrap(); } From 889ff1e1dbe5e7b82d907a740e6e1c991fe068dd Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Wed, 17 Jun 2026 17:58:05 -0400 Subject: [PATCH 07/11] ui: Remove unneeded application .desktop file and utilities --- .github/workflows/main.yml | 2 +- BUILDING.md | 5 ---- credentialsd-ui/data/meson.build | 24 ------------------- ...a.credentialsd.CredentialsUi.desktop.in.in | 12 ---------- credentialsd-ui/meson.build | 3 +-- credentialsd-ui/po/POTFILES.in | 1 - 6 files changed, 2 insertions(+), 45 deletions(-) delete mode 100644 credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 36dac9b..301078e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -36,7 +36,7 @@ jobs: curl git build-essential \ libgtk-4-dev libclang-dev libdbus-1-dev libssl-dev libudev-dev libnfc-dev \ libpcsclite-dev libxml2-utils \ - desktop-file-utils gettext ninja-build python3-pip \ + appstream-util gettext ninja-build python3-pip \ udev zip - name: Set up mold as default linker diff --git a/BUILDING.md b/BUILDING.md index 951806b..0a59693 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -23,7 +23,6 @@ To build, you need the following utility packages and development library packag - libpcsclite - libssl/openssl - libudev -- desktop-file-utils Using the web extension also requires `python3-dbus-next`. @@ -39,8 +38,6 @@ sudo apt update && sudo apt install \ meson ninja-build \ # project dependencies libgtk-4-dev gettext libdbus-1-dev libnfc-dev libpcsclite-dev libssl-dev libudev-dev \ - # packaging dependencies - desktop-file-utils \ # web extension dependencies python3-dbus-next ``` @@ -56,8 +53,6 @@ sudo dnf install \ meson ninja-build \ # project dependencies gtk4-devel gettext dbus-devel libnfc-devel pcsc-lite-devel openssl-devel systemd-udev \ - # packaging dependencies - desktop-file-utils \ # web extension dependencies python3-dbus-next ``` diff --git a/credentialsd-ui/data/meson.build b/credentialsd-ui/data/meson.build index c149cfc..382ec5e 100644 --- a/credentialsd-ui/data/meson.build +++ b/credentialsd-ui/data/meson.build @@ -1,28 +1,4 @@ subdir('resources') -# Desktop file -desktop_conf = configuration_data() -desktop_conf.set('icon', application_id) -desktop_file = i18n.merge_file( - type: 'desktop', - input: configure_file( - input: '@0@.desktop.in.in'.format(base_id), - output: '@BASENAME@', - configuration: desktop_conf, - ), - output: '@0@.desktop'.format(application_id), - po_dir: podir, - install: true, - install_dir: datadir / 'applications', -) -# Validate Desktop file -if desktop_file_validate.found() - test( - 'validate-desktop', - desktop_file_validate, - args: [desktop_file.full_path()], - depends: desktop_file, - ) -endif # Appdata appdata_conf = configuration_data() diff --git a/credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in b/credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in deleted file mode 100644 index 0874b60..0000000 --- a/credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Name=Credential Manager -Comment=Write a GTK + Rust application -Type=Application -Exec=credentialsd -Terminal=false -Categories=GNOME;GTK; -# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! -Keywords=Gnome;GTK; -# Translators: Do NOT translate or transliterate this text (this is an icon file name)! -Icon=@icon@ -StartupNotify=true diff --git a/credentialsd-ui/meson.build b/credentialsd-ui/meson.build index a3525f1..2ac53d5 100644 --- a/credentialsd-ui/meson.build +++ b/credentialsd-ui/meson.build @@ -17,7 +17,6 @@ glib_compile_schemas = find_program('glib-compile-schemas', required: true) msgfmt = find_program('msgfmt', required: false) xmllint = find_program('xmllint', required: false) -desktop_file_validate = find_program('desktop-file-validate', required: false) appstreamcli = find_program('appstreamcli', required: false) cargo = find_program('cargo', required: true) @@ -83,5 +82,5 @@ subdir('src') gnome.post_install( gtk_update_icon_cache: true, glib_compile_schemas: true, - update_desktop_database: true, + update_desktop_database: false, ) \ No newline at end of file diff --git a/credentialsd-ui/po/POTFILES.in b/credentialsd-ui/po/POTFILES.in index 3071cac..a566df5 100644 --- a/credentialsd-ui/po/POTFILES.in +++ b/credentialsd-ui/po/POTFILES.in @@ -1,4 +1,3 @@ -data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in data/resources/ui/window.blp From 06306aeceab796150f0a1f2505280605d034328a Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Wed, 17 Jun 2026 17:58:05 -0400 Subject: [PATCH 08/11] ui: Update appstream metainfo --- ...dentialsd.CredentialsUi.metainfo.xml.in.in | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in b/credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in index af007ed..4a46834 100644 --- a/credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in +++ b/credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in @@ -1,23 +1,24 @@ - + + + @app-id@ CC0 - - - Credential Manager - Write a GTK + Rust application + LGPL-3.0-only + credentialsd-ui + A UI for interacting with credentialsd -

A boilerplate template for GTK + Rust. It uses Meson as a build system and has flatpak support by default.

+

Displays a UI for registering and creating credentials with credentialsd.

- https://github.com/iinuwa/linux-webauthn-platform-api/raw/main/images/register-start.png + https://github.com/linux-credentials/credentialsd/raw/main/images/register-start.png Registering a credential - https://github.com/iinuwa/linux-webauthn-platform-api - https://github.com/iinuwa/linux-webauthn-platform-api/issues + https://github.com/linux-credentials/credentialsd + https://github.com/linux-credentials/credentialsd/issues @@ -37,7 +38,7 @@ Isaiah Inuwa - isaiah.inuwa@gmail.com + dev@iinuwa.xyz @gettext-package@ @app-id@.desktop
From 10d5692aaa30af05c141bdaf429dfaf67ef75585 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Wed, 17 Jun 2026 17:58:05 -0400 Subject: [PATCH 09/11] ui: Fix some warnings with translation template generation --- credentialsd-ui/po/POTFILES.in | 12 ++++++------ credentialsd-ui/po/meson.build | 18 ++++++++++-------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/credentialsd-ui/po/POTFILES.in b/credentialsd-ui/po/POTFILES.in index a566df5..2569d84 100644 --- a/credentialsd-ui/po/POTFILES.in +++ b/credentialsd-ui/po/POTFILES.in @@ -1,6 +1,6 @@ -data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in -data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in -data/resources/ui/window.blp -src/gui/view_model/gtk/mod.rs -src/gui/view_model/gtk/device.rs -src/gui/view_model/mod.rs +credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in +credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in +credentialsd-ui/data/resources/ui/window.blp +credentialsd-ui/src/gui/view_model/gtk/mod.rs +credentialsd-ui/src/gui/view_model/gtk/device.rs +credentialsd-ui/src/gui/view_model/mod.rs diff --git a/credentialsd-ui/po/meson.build b/credentialsd-ui/po/meson.build index 75cb319..0785d0f 100644 --- a/credentialsd-ui/po/meson.build +++ b/credentialsd-ui/po/meson.build @@ -1,11 +1,13 @@ i18n = import('i18n') # This creates build targets: 'credentialsd-ui-pot', 'credentialsd-ui-update-po', etc. -i18n.gettext(gettext_package, - args: ['--directory=' + meson.project_source_root() / 'credentialsd-ui', - '--from-code=UTF-8', - '--copyright-holder="The Credentials for Linux Project"', - '--msgid-bugs-address="https://github.com/linux-credentials/credentialsd/issues"', - '--add-comments=TRANSLATORS:' - ], -) +i18n.gettext( + gettext_package, + args: [ + '--from-code=UTF-8', + '--copyright-holder="The Credentials for Linux Project"', + '--msgid-bugs-address="https://github.com/linux-credentials/credentialsd/issues"', + '--add-comments=TRANSLATORS:', + ], + preset: 'glib', +) \ No newline at end of file From 6201a492b798512ddd5c3e23359fdefe2e18905b Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Wed, 17 Jun 2026 17:58:05 -0400 Subject: [PATCH 10/11] ui: update translation template --- credentialsd-ui/po/credentialsd-ui.pot | 170 +++++++++++-------------- 1 file changed, 76 insertions(+), 94 deletions(-) diff --git a/credentialsd-ui/po/credentialsd-ui.pot b/credentialsd-ui/po/credentialsd-ui.pot index 6f15d5e..ded2a01 100644 --- a/credentialsd-ui/po/credentialsd-ui.pot +++ b/credentialsd-ui/po/credentialsd-ui.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: credentialsd-ui\n" "Report-Msgid-Bugs-To: \"https://github.com/linux-credentials/credentialsd/" "issues\"\n" -"POT-Creation-Date: 2026-02-03 10:40+0100\n" +"POT-Creation-Date: 2026-06-18 07:08-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,190 +19,155 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in:2 -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:8 -#: src/gui/view_model/gtk/mod.rs:385 -msgid "Credential Manager" -msgstr "" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in:3 -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:9 -msgid "Write a GTK + Rust application" -msgstr "" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in:9 -msgid "Gnome;GTK;" +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:9 +msgid "credentialsd-ui" msgstr "" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in:6 -msgid "Window width" +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:10 +msgid "A UI for interacting with credentialsd" msgstr "" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in:10 -msgid "Window height" -msgstr "" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in:14 -msgid "Window maximized state" -msgstr "" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:11 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:12 msgid "" -"A boilerplate template for GTK + Rust. It uses Meson as a build system and " -"has flatpak support by default." +"Displays a UI for registering and creating credentials with credentialsd." msgstr "" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:16 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:17 msgid "Registering a credential" msgstr "" #. developer_name tag deprecated with Appstream 1.0 -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:34 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:36 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:39 msgid "Isaiah Inuwa" msgstr "" -#: data/resources/ui/shortcuts.ui:11 -msgctxt "shortcut window" -msgid "General" -msgstr "" - -#: data/resources/ui/shortcuts.ui:14 -msgctxt "shortcut window" -msgid "Show Shortcuts" -msgstr "" - -#: data/resources/ui/shortcuts.ui:20 -msgctxt "shortcut window" -msgid "Quit" -msgstr "" - -#: data/resources/ui/window.ui:6 -msgid "_Preferences" +#: credentialsd-ui/data/resources/ui/window.blp:48 +msgid "Choose device" msgstr "" -#: data/resources/ui/window.ui:10 -msgid "_Keyboard Shortcuts" +#: credentialsd-ui/data/resources/ui/window.blp:72 +msgid "Use a mobile device" msgstr "" -#: data/resources/ui/window.ui:68 -msgid "Choose device" +#: credentialsd-ui/data/resources/ui/window.blp:145 +msgid "Use your security key" msgstr "" -#: data/resources/ui/window.ui:74 -msgid "Devices" +#: credentialsd-ui/data/resources/ui/window.blp:162 +msgid "Connect a security key" msgstr "" -#: data/resources/ui/window.ui:98 -msgid "Connect a security key" +#: credentialsd-ui/data/resources/ui/window.blp:197 +msgid "Enter your device PIN" msgstr "" -#: data/resources/ui/window.ui:139 +#: credentialsd-ui/data/resources/ui/window.blp:205 msgid "Scan the QR code to connect your device" msgstr "" -#: data/resources/ui/window.ui:184 data/resources/ui/window.ui:190 +#: credentialsd-ui/data/resources/ui/window.blp:247 +#: credentialsd-ui/data/resources/ui/window.blp:253 msgid "Choose credential" msgstr "" -#: data/resources/ui/window.ui:214 +#: credentialsd-ui/data/resources/ui/window.blp:266 msgid "Complete" msgstr "" -#: data/resources/ui/window.ui:220 +#: credentialsd-ui/data/resources/ui/window.blp:288 msgid "Done!" msgstr "" -#: data/resources/ui/window.ui:231 +#: credentialsd-ui/data/resources/ui/window.blp:299 msgid "Something went wrong." msgstr "" -#: data/resources/ui/window.ui:244 src/gui/view_model/mod.rs:290 -msgid "" -"Something went wrong while retrieving a credential. Please try again later " -"or use a different authenticator." -msgstr "" - -#: src/gui/view_model/gtk/mod.rs:147 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:159 msgid "Enter your PIN. One attempt remaining." msgid_plural "Enter your PIN. %d attempts remaining." msgstr[0] "" msgstr[1] "" -#: src/gui/view_model/gtk/mod.rs:153 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:165 msgid "Enter your PIN." msgstr "" -#: src/gui/view_model/gtk/mod.rs:163 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:174 msgid "Touch your device again. One attempt remaining." msgid_plural "Touch your device again. %d attempts remaining." msgstr[0] "" msgstr[1] "" -#: src/gui/view_model/gtk/mod.rs:169 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:180 msgid "Touch your device." msgstr "" -#: src/gui/view_model/gtk/mod.rs:174 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:185 msgid "Touch your device" msgstr "" -#: src/gui/view_model/gtk/mod.rs:177 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:188 msgid "Scan the QR code with your device to begin authentication." msgstr "" -#: src/gui/view_model/gtk/mod.rs:187 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:201 msgid "" "Connecting to your device. Make sure both devices are near each other and " "have Bluetooth enabled." msgstr "" -#: src/gui/view_model/gtk/mod.rs:195 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:209 msgid "Device connected. Follow the instructions on your device" msgstr "" -#: src/gui/view_model/gtk/mod.rs:321 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:298 msgid "Insert your security key." msgstr "" -#: src/gui/view_model/gtk/mod.rs:340 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:317 msgid "Multiple devices found. Please select with which to proceed." msgstr "" -#: src/gui/view_model/gtk/device.rs:57 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:362 +msgid "Credential Manager" +msgstr "" + +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:57 msgid "A Bluetooth device" msgstr "" -#: src/gui/view_model/gtk/device.rs:58 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:58 msgid "This device" msgstr "" -#: src/gui/view_model/gtk/device.rs:59 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:59 msgid "A mobile device" msgstr "" -#: src/gui/view_model/gtk/device.rs:60 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:60 msgid "Linked Device" msgstr "" -#: src/gui/view_model/gtk/device.rs:61 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:61 msgid "An security key or card (NFC)" msgstr "" -#: src/gui/view_model/gtk/device.rs:62 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:62 msgid "A security key (USB)" msgstr "" -#: src/gui/view_model/mod.rs:75 +#: credentialsd-ui/src/gui/view_model/mod.rs:64 msgid "unknown application" msgstr "" #. TRANSLATORS: %s1 is the "relying party" (think: domain name) where the request is coming from -#: src/gui/view_model/mod.rs:80 +#: credentialsd-ui/src/gui/view_model/mod.rs:80 msgid "Create a passkey for %s1" msgstr "" #. TRANSLATORS: %s1 is the "relying party" (think: domain name) where the request is coming from -#: src/gui/view_model/mod.rs:84 +#: credentialsd-ui/src/gui/view_model/mod.rs:84 msgid "Use a passkey for %s1" msgstr "" @@ -210,7 +175,7 @@ msgstr "" #. TRANSLATORS: %s2 is the application name (e.g.: firefox) where the request is coming from, must be left untouched to make the name bold #. TRANSLATORS: %i1 is the process ID of the requesting application #. TRANSLATORS: %s3 is the absolute path (think: /usr/bin/firefox) of the requesting application -#: src/gui/view_model/mod.rs:96 +#: credentialsd-ui/src/gui/view_model/mod.rs:96 msgid "" "\"%s2\" (process ID: %i1, binary: %s3) is asking to create a " "credential to register at \"%s1\". Only proceed if you trust this process." @@ -220,36 +185,53 @@ msgstr "" #. TRANSLATORS: %s2 is the application name (e.g.: firefox) where the request is coming from, must be left untouched to make the name bold #. TRANSLATORS: %i1 is the process ID of the requesting application #. TRANSLATORS: %s3 is the absolute path (think: /usr/bin/firefox) of the requesting application -#: src/gui/view_model/mod.rs:103 +#: credentialsd-ui/src/gui/view_model/mod.rs:103 msgid "" "\"%s2\" (process ID: %i1, binary: %s3) is asking to use a credential " "to sign in to \"%s1\". Only proceed if you trust this process." msgstr "" -#: src/gui/view_model/mod.rs:227 +#. TRANSLATORS: %s1 is the relying party (think: domain name) where the request is coming from +#: credentialsd-ui/src/gui/view_model/mod.rs:115 +msgid "" +"Scan the QR code using the camera on the device that has the passkey for %s1" +msgstr "" + +#. TRANSLATORS: %s1 is the relying party (think: domain name) where the request is coming from +#: credentialsd-ui/src/gui/view_model/mod.rs:118 +msgid "Insert and activate your security key to use it for %s1" +msgstr "" + +#: credentialsd-ui/src/gui/view_model/mod.rs:181 msgid "Failed to select credential from device." msgstr "" -#: src/gui/view_model/mod.rs:281 +#: credentialsd-ui/src/gui/view_model/mod.rs:237 msgid "No matching credentials found on this authenticator." msgstr "" -#: src/gui/view_model/mod.rs:284 +#: credentialsd-ui/src/gui/view_model/mod.rs:245 msgid "" "No more PIN attempts allowed. Try removing your device and plugging it back " "in." msgstr "" -#: src/gui/view_model/mod.rs:287 +#: credentialsd-ui/src/gui/view_model/mod.rs:254 msgid "" "This server requires your device to have additional protection like a PIN, " "which is not set. Please set a PIN for this device and try again." msgstr "" -#: src/gui/view_model/mod.rs:293 -msgid "This credential is already registered on this authenticator." +#: credentialsd-ui/src/gui/view_model/mod.rs:262 +msgid "The credential request timed out. Please try again." msgstr "" -#: src/gui/view_model/mod.rs:395 -msgid "Something went wrong. Try again later or use a different authenticator." +#: credentialsd-ui/src/gui/view_model/mod.rs:272 +msgid "" +"Something went wrong while retrieving a credential. Please try again later " +"or use a different authenticator." +msgstr "" + +#: credentialsd-ui/src/gui/view_model/mod.rs:281 +msgid "This credential is already registered on this authenticator." msgstr "" From 9ee09b1b4416122780d65fb0ef6e5d35b4de5e44 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Thu, 18 Jun 2026 07:20:22 -0500 Subject: [PATCH 11/11] ui: Update translation files --- credentialsd-ui/po/credentialsd-ui.pot | 2 +- credentialsd-ui/po/de_DE.po | 209 +++++++++++++------------ credentialsd-ui/po/en_US.po | 202 ++++++++++++------------ credentialsd-ui/po/ka_GE.po | 203 ++++++++++++------------ 4 files changed, 304 insertions(+), 312 deletions(-) diff --git a/credentialsd-ui/po/credentialsd-ui.pot b/credentialsd-ui/po/credentialsd-ui.pot index ded2a01..5ed55b7 100644 --- a/credentialsd-ui/po/credentialsd-ui.pot +++ b/credentialsd-ui/po/credentialsd-ui.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: credentialsd-ui\n" "Report-Msgid-Bugs-To: \"https://github.com/linux-credentials/credentialsd/" "issues\"\n" -"POT-Creation-Date: 2026-06-18 07:08-0500\n" +"POT-Creation-Date: 2026-06-18 07:18-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/credentialsd-ui/po/de_DE.po b/credentialsd-ui/po/de_DE.po index 1a846e1..57c6a6a 100644 --- a/credentialsd-ui/po/de_DE.po +++ b/credentialsd-ui/po/de_DE.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \"https://github.com/linux-credentials/credentialsd/" "issues\"\n" -"POT-Creation-Date: 2026-02-03 10:40+0100\n" +"POT-Creation-Date: 2026-06-18 07:18-0500\n" "PO-Revision-Date: 2025-10-10 14:45+0200\n" "Last-Translator: Martin Sirringhaus \n" "Language: de_DE\n" @@ -12,137 +12,106 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in:2 -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:8 -#: src/gui/view_model/gtk/mod.rs:385 -msgid "Credential Manager" -msgstr "Zugangsdatenmanager" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in:3 -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:9 -msgid "Write a GTK + Rust application" -msgstr "" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in:9 -msgid "Gnome;GTK;" -msgstr "Gnome;GTK;" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in:6 -msgid "Window width" -msgstr "Fensterbreite" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in:10 -msgid "Window height" -msgstr "Fensterhöhe" +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:9 +#, fuzzy +msgid "credentialsd-ui" +msgstr "Wählen Sie Zugangsdaten aus" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in:14 -msgid "Window maximized state" -msgstr "Fenster maximiert" +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:10 +#, fuzzy +msgid "A UI for interacting with credentialsd" +msgstr "Zugangsdaten registrieren" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:11 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:12 msgid "" -"A boilerplate template for GTK + Rust. It uses Meson as a build system and " -"has flatpak support by default." -msgstr "Eine Vorlage für eine GTK + Rust Anwendung." +"Displays a UI for registering and creating credentials with credentialsd." +msgstr "" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:16 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:17 msgid "Registering a credential" msgstr "Zugangsdaten registrieren" -#: data/resources/ui/shortcuts.ui:11 -msgctxt "shortcut window" -msgid "General" -msgstr "Allgemein" - -#: data/resources/ui/shortcuts.ui:14 -msgctxt "shortcut window" -msgid "Show Shortcuts" -msgstr "Zeige Kürzel" - -#: data/resources/ui/shortcuts.ui:20 -msgctxt "shortcut window" -msgid "Quit" -msgstr "Beenden" - -#: data/resources/ui/window.ui:6 -msgid "_Preferences" -msgstr "Einstellungen" - -#: data/resources/ui/window.ui:10 -msgid "_Keyboard Shortcuts" -msgstr "Tastaturkürzel" +#. developer_name tag deprecated with Appstream 1.0 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:36 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:39 +msgid "Isaiah Inuwa" +msgstr "" -#: data/resources/ui/window.ui:68 +#: credentialsd-ui/data/resources/ui/window.blp:48 msgid "Choose device" msgstr "Gerät auswählen" -#: data/resources/ui/window.ui:74 -msgid "Devices" -msgstr "Geräte" +#: credentialsd-ui/data/resources/ui/window.blp:72 +#, fuzzy +msgid "Use a mobile device" +msgstr "Ein mobiles Gerät" -#: data/resources/ui/window.ui:98 +#: credentialsd-ui/data/resources/ui/window.blp:145 +#, fuzzy +msgid "Use your security key" +msgstr "Stecken Sie Ihren Security-Token ein." + +#: credentialsd-ui/data/resources/ui/window.blp:162 msgid "Connect a security key" msgstr "Stecken Sie Ihren Security-Token ein." -#: data/resources/ui/window.ui:139 +#: credentialsd-ui/data/resources/ui/window.blp:197 +#, fuzzy +msgid "Enter your device PIN" +msgstr "Geben Sie Ihren PIN ein." + +#: credentialsd-ui/data/resources/ui/window.blp:205 msgid "Scan the QR code to connect your device" msgstr "Scannen Sie den QR-Code, um Ihr Gerät zu verbinden" -#: data/resources/ui/window.ui:184 data/resources/ui/window.ui:190 +#: credentialsd-ui/data/resources/ui/window.blp:247 +#: credentialsd-ui/data/resources/ui/window.blp:253 msgid "Choose credential" msgstr "Wählen Sie Zugangsdaten aus" -#: data/resources/ui/window.ui:214 +#: credentialsd-ui/data/resources/ui/window.blp:266 msgid "Complete" msgstr "Abgeschlossen" -#: data/resources/ui/window.ui:220 +#: credentialsd-ui/data/resources/ui/window.blp:288 msgid "Done!" msgstr "Fertig!" -#: data/resources/ui/window.ui:231 +#: credentialsd-ui/data/resources/ui/window.blp:299 msgid "Something went wrong." msgstr "Etwas ist schief gegangen." -#: data/resources/ui/window.ui:244 src/gui/view_model/mod.rs:290 -msgid "" -"Something went wrong while retrieving a credential. Please try again later " -"or use a different authenticator." -msgstr "" -"Beim Abrufen Ihrer Zugangsdaten ist ein Fehler aufgetreten. Versuchen Sie es " -"später wieder, oder verwenden Sie einen anderen Security-Token." - -#: src/gui/view_model/gtk/mod.rs:147 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:159 #, fuzzy msgid "Enter your PIN. One attempt remaining." msgid_plural "Enter your PIN. %d attempts remaining." msgstr[0] "Geben Sie Ihren PIN ein. Sie haben nur noch einen Versuch." msgstr[1] "Geben Sie Ihren PIN ein. Sie haben noch %d Versuche." -#: src/gui/view_model/gtk/mod.rs:153 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:165 msgid "Enter your PIN." msgstr "Geben Sie Ihren PIN ein." -#: src/gui/view_model/gtk/mod.rs:163 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:174 msgid "Touch your device again. One attempt remaining." msgid_plural "Touch your device again. %d attempts remaining." msgstr[0] "Berühren Sie Ihr Gerät. Sie haben nur noch einen Versuch." msgstr[1] "Berühren Sie nochmal Ihr Gerät. Sie haben nur noch %d Versuche." -#: src/gui/view_model/gtk/mod.rs:169 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:180 msgid "Touch your device." msgstr "Berühren Sie Ihr Gerät." -#: src/gui/view_model/gtk/mod.rs:174 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:185 msgid "Touch your device" msgstr "Berühren Sie Ihr Gerät." -#: src/gui/view_model/gtk/mod.rs:177 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:188 msgid "Scan the QR code with your device to begin authentication." msgstr "" "Scannen Sie den QR code mit ihrem Gerät um die Authentifizierung zu beginnen." -#: src/gui/view_model/gtk/mod.rs:187 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:201 msgid "" "Connecting to your device. Make sure both devices are near each other and " "have Bluetooth enabled." @@ -150,53 +119,57 @@ msgstr "" "Verbindung zu Ihrem Gerät wird aufgebaut. Stellen Sie sicher, dass beide " "Geräte nah beieinander sind und Bluetooth aktiviert haben." -#: src/gui/view_model/gtk/mod.rs:195 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:209 msgid "Device connected. Follow the instructions on your device" msgstr "Verbindung hergestellt. Folgen Sie den Anweisungen auf Ihrem Gerät." -#: src/gui/view_model/gtk/mod.rs:321 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:298 msgid "Insert your security key." msgstr "Stecken Sie Ihren Security-Token ein." -#: src/gui/view_model/gtk/mod.rs:340 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:317 msgid "Multiple devices found. Please select with which to proceed." msgstr "Mehrere Geräte gefunden. Bitte wählen Sie einen aus, um fortzufahren." -#: src/gui/view_model/gtk/device.rs:57 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:362 +msgid "Credential Manager" +msgstr "Zugangsdatenmanager" + +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:57 msgid "A Bluetooth device" msgstr "Ein Bluetooth-Gerät" -#: src/gui/view_model/gtk/device.rs:58 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:58 msgid "This device" msgstr "Dieses Gerät" -#: src/gui/view_model/gtk/device.rs:59 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:59 msgid "A mobile device" msgstr "Ein mobiles Gerät" -#: src/gui/view_model/gtk/device.rs:60 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:60 msgid "Linked Device" msgstr "Verbundenes Gerät" -#: src/gui/view_model/gtk/device.rs:61 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:61 msgid "An security key or card (NFC)" msgstr "Ein NFC-Gerät" -#: src/gui/view_model/gtk/device.rs:62 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:62 msgid "A security key (USB)" msgstr "Ein Security-Token" -#: src/gui/view_model/mod.rs:75 +#: credentialsd-ui/src/gui/view_model/mod.rs:64 msgid "unknown application" msgstr "unbekannter Applikation" #. TRANSLATORS: %s1 is the "relying party" (think: domain name) where the request is coming from -#: src/gui/view_model/mod.rs:80 +#: credentialsd-ui/src/gui/view_model/mod.rs:80 msgid "Create a passkey for %s1" msgstr "Neuen Passkey für %s1 erstellen" #. TRANSLATORS: %s1 is the "relying party" (think: domain name) where the request is coming from -#: src/gui/view_model/mod.rs:84 +#: credentialsd-ui/src/gui/view_model/mod.rs:84 msgid "Use a passkey for %s1" msgstr "Passkey für %s1 abrufen" @@ -204,7 +177,7 @@ msgstr "Passkey für %s1 abrufen" #. TRANSLATORS: %s2 is the application name (e.g.: firefox) where the request is coming from, must be left untouched to make the name bold #. TRANSLATORS: %i1 is the process ID of the requesting application #. TRANSLATORS: %s3 is the absolute path (think: /usr/bin/firefox) of the requesting application -#: src/gui/view_model/mod.rs:96 +#: credentialsd-ui/src/gui/view_model/mod.rs:96 msgid "" "\"%s2\" (process ID: %i1, binary: %s3) is asking to create a " "credential to register at \"%s1\". Only proceed if you trust this process." @@ -217,7 +190,7 @@ msgstr "" #. TRANSLATORS: %s2 is the application name (e.g.: firefox) where the request is coming from, must be left untouched to make the name bold #. TRANSLATORS: %i1 is the process ID of the requesting application #. TRANSLATORS: %s3 is the absolute path (think: /usr/bin/firefox) of the requesting application -#: src/gui/view_model/mod.rs:103 +#: credentialsd-ui/src/gui/view_model/mod.rs:103 msgid "" "\"%s2\" (process ID: %i1, binary: %s3) is asking to use a credential " "to sign in to \"%s1\". Only proceed if you trust this process." @@ -226,15 +199,27 @@ msgstr "" "abrufen, um Sie bei \"%s1\" anzumelden. Fahren Sie nur fort, wenn Sie diesem " "Prozess vertrauen." -#: src/gui/view_model/mod.rs:227 +#. TRANSLATORS: %s1 is the relying party (think: domain name) where the request is coming from +#: credentialsd-ui/src/gui/view_model/mod.rs:115 +msgid "" +"Scan the QR code using the camera on the device that has the passkey for %s1" +msgstr "" + +#. TRANSLATORS: %s1 is the relying party (think: domain name) where the request is coming from +#: credentialsd-ui/src/gui/view_model/mod.rs:118 +#, fuzzy +msgid "Insert and activate your security key to use it for %s1" +msgstr "Stecken Sie Ihren Security-Token ein." + +#: credentialsd-ui/src/gui/view_model/mod.rs:181 msgid "Failed to select credential from device." msgstr "Zugangsdaten vom Gerät konnten nicht ausgewählt werden." -#: src/gui/view_model/mod.rs:281 +#: credentialsd-ui/src/gui/view_model/mod.rs:237 msgid "No matching credentials found on this authenticator." msgstr "Keine passenden Zugangsdaten auf diesem Gerät gefunden." -#: src/gui/view_model/mod.rs:284 +#: credentialsd-ui/src/gui/view_model/mod.rs:245 msgid "" "No more PIN attempts allowed. Try removing your device and plugging it back " "in." @@ -242,20 +227,36 @@ msgstr "" "Keine weiteren PIN-Eingaben erlaubt. Versuchen Sie ihr Gerät aus- und wieder " "einzustecken." -#: src/gui/view_model/mod.rs:287 +#: credentialsd-ui/src/gui/view_model/mod.rs:254 msgid "" "This server requires your device to have additional protection like a PIN, " "which is not set. Please set a PIN for this device and try again." msgstr "" -"Für diesen Server benötigt ihr Gerät eine zusätzliche Absicherung, z.B. einen PIN. " -"Bitte setzen Sie einen PIN für ihr Gerät und versuchen Sie es erneut." +"Für diesen Server benötigt ihr Gerät eine zusätzliche Absicherung, z.B. " +"einen PIN. Bitte setzen Sie einen PIN für ihr Gerät und versuchen Sie es " +"erneut." + +#: credentialsd-ui/src/gui/view_model/mod.rs:262 +msgid "The credential request timed out. Please try again." +msgstr "" -#: src/gui/view_model/mod.rs:293 +#: credentialsd-ui/src/gui/view_model/mod.rs:272 +msgid "" +"Something went wrong while retrieving a credential. Please try again later " +"or use a different authenticator." +msgstr "" +"Beim Abrufen Ihrer Zugangsdaten ist ein Fehler aufgetreten. Versuchen Sie es " +"später wieder, oder verwenden Sie einen anderen Security-Token." + +#: credentialsd-ui/src/gui/view_model/mod.rs:281 msgid "This credential is already registered on this authenticator." msgstr "Diese Zugangsdaten sind bereits auf diesem Gerät registriert." -#: src/gui/view_model/mod.rs:395 -msgid "Something went wrong. Try again later or use a different authenticator." -msgstr "" -"Es ist ein Fehler aufgetreten. Bitte versuchen Sie es später noch einmal, " -"oder benutzen Sie ein anderes Gerät." +#~ msgid "Devices" +#~ msgstr "Geräte" + +#~ msgid "" +#~ "Something went wrong. Try again later or use a different authenticator." +#~ msgstr "" +#~ "Es ist ein Fehler aufgetreten. Bitte versuchen Sie es später noch einmal, " +#~ "oder benutzen Sie ein anderes Gerät." diff --git a/credentialsd-ui/po/en_US.po b/credentialsd-ui/po/en_US.po index bdbfce9..f9eda4a 100644 --- a/credentialsd-ui/po/en_US.po +++ b/credentialsd-ui/po/en_US.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \"https://github.com/linux-credentials/credentialsd/" "issues\"\n" -"POT-Creation-Date: 2026-02-03 10:40+0100\n" +"POT-Creation-Date: 2026-06-18 07:18-0500\n" "PO-Revision-Date: 2025-10-10 14:45+0200\n" "Last-Translator: Martin Sirringhaus \n" "Language: en_US\n" @@ -11,137 +11,104 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in:2 -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:8 -#: src/gui/view_model/gtk/mod.rs:385 -msgid "Credential Manager" -msgstr "Credential Manager" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in:3 -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:9 -msgid "Write a GTK + Rust application" -msgstr "Write a GTK + Rust application" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in:9 -msgid "Gnome;GTK;" -msgstr "Gnome;GTK;" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in:6 -msgid "Window width" -msgstr "Window width" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in:10 -msgid "Window height" -msgstr "Window height" +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:9 +#, fuzzy +msgid "credentialsd-ui" +msgstr "Choose credential" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in:14 -msgid "Window maximized state" -msgstr "Window maximized state" +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:10 +#, fuzzy +msgid "A UI for interacting with credentialsd" +msgstr "Registering a credential" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:11 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:12 msgid "" -"A boilerplate template for GTK + Rust. It uses Meson as a build system and " -"has flatpak support by default." +"Displays a UI for registering and creating credentials with credentialsd." msgstr "" -"A boilerplate template for GTK + Rust. It uses Meson as a build system and " -"has flatpak support by default." -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:16 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:17 msgid "Registering a credential" msgstr "Registering a credential" -#: data/resources/ui/shortcuts.ui:11 -msgctxt "shortcut window" -msgid "General" -msgstr "General" - -#: data/resources/ui/shortcuts.ui:14 -msgctxt "shortcut window" -msgid "Show Shortcuts" -msgstr "Show Shortcuts" - -#: data/resources/ui/shortcuts.ui:20 -msgctxt "shortcut window" -msgid "Quit" -msgstr "Quit" - -#: data/resources/ui/window.ui:6 -msgid "_Preferences" -msgstr "_Preferences" - -#: data/resources/ui/window.ui:10 -msgid "_Keyboard Shortcuts" -msgstr "Keyboard Shortcuts" +#. developer_name tag deprecated with Appstream 1.0 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:36 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:39 +msgid "Isaiah Inuwa" +msgstr "" -#: data/resources/ui/window.ui:68 +#: credentialsd-ui/data/resources/ui/window.blp:48 msgid "Choose device" msgstr "Choose device" -#: data/resources/ui/window.ui:74 -msgid "Devices" -msgstr "Devices" +#: credentialsd-ui/data/resources/ui/window.blp:72 +#, fuzzy +msgid "Use a mobile device" +msgstr "A mobile device" + +#: credentialsd-ui/data/resources/ui/window.blp:145 +#, fuzzy +msgid "Use your security key" +msgstr "Insert your security key." -#: data/resources/ui/window.ui:98 +#: credentialsd-ui/data/resources/ui/window.blp:162 msgid "Connect a security key" msgstr "Connect a security key" -#: data/resources/ui/window.ui:139 +#: credentialsd-ui/data/resources/ui/window.blp:197 +#, fuzzy +msgid "Enter your device PIN" +msgstr "Enter your PIN." + +#: credentialsd-ui/data/resources/ui/window.blp:205 msgid "Scan the QR code to connect your device" msgstr "Scan the QR code to connect your device" -#: data/resources/ui/window.ui:184 data/resources/ui/window.ui:190 +#: credentialsd-ui/data/resources/ui/window.blp:247 +#: credentialsd-ui/data/resources/ui/window.blp:253 msgid "Choose credential" msgstr "Choose credential" -#: data/resources/ui/window.ui:214 +#: credentialsd-ui/data/resources/ui/window.blp:266 msgid "Complete" msgstr "Complete" -#: data/resources/ui/window.ui:220 +#: credentialsd-ui/data/resources/ui/window.blp:288 msgid "Done!" msgstr "Done!" -#: data/resources/ui/window.ui:231 +#: credentialsd-ui/data/resources/ui/window.blp:299 msgid "Something went wrong." msgstr "Something went wrong." -#: data/resources/ui/window.ui:244 src/gui/view_model/mod.rs:290 -msgid "" -"Something went wrong while retrieving a credential. Please try again later " -"or use a different authenticator." -msgstr "" -"Something went wrong while retrieving a credential. Please try again later " -"or use a different authenticator." - -#: src/gui/view_model/gtk/mod.rs:147 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:159 msgid "Enter your PIN. One attempt remaining." msgid_plural "Enter your PIN. %d attempts remaining." msgstr[0] "Enter your PIN. One attempt remaining." msgstr[1] "Enter your PIN. %d attempts remaining." -#: src/gui/view_model/gtk/mod.rs:153 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:165 msgid "Enter your PIN." msgstr "Enter your PIN." -#: src/gui/view_model/gtk/mod.rs:163 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:174 msgid "Touch your device again. One attempt remaining." msgid_plural "Touch your device again. %d attempts remaining." msgstr[0] "Touch your device again. One attempt remaining." msgstr[1] "Touch your device again. %d attempts remaining." -#: src/gui/view_model/gtk/mod.rs:169 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:180 msgid "Touch your device." msgstr "Touch your device." -#: src/gui/view_model/gtk/mod.rs:174 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:185 msgid "Touch your device" msgstr "Touch your device" -#: src/gui/view_model/gtk/mod.rs:177 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:188 msgid "Scan the QR code with your device to begin authentication." msgstr "Scan the QR code with your device to begin authentication." -#: src/gui/view_model/gtk/mod.rs:187 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:201 msgid "" "Connecting to your device. Make sure both devices are near each other and " "have Bluetooth enabled." @@ -149,53 +116,57 @@ msgstr "" "Connecting to your device. Make sure both devices are near each other and " "have Bluetooth enabled." -#: src/gui/view_model/gtk/mod.rs:195 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:209 msgid "Device connected. Follow the instructions on your device" msgstr "Device connected. Follow the instructions on your device" -#: src/gui/view_model/gtk/mod.rs:321 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:298 msgid "Insert your security key." msgstr "Insert your security key." -#: src/gui/view_model/gtk/mod.rs:340 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:317 msgid "Multiple devices found. Please select with which to proceed." msgstr "Multiple devices found. Please select with which to proceed." -#: src/gui/view_model/gtk/device.rs:57 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:362 +msgid "Credential Manager" +msgstr "Credential Manager" + +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:57 msgid "A Bluetooth device" msgstr "A Bluetooth device" -#: src/gui/view_model/gtk/device.rs:58 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:58 msgid "This device" msgstr "This device" -#: src/gui/view_model/gtk/device.rs:59 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:59 msgid "A mobile device" msgstr "A mobile device" -#: src/gui/view_model/gtk/device.rs:60 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:60 msgid "Linked Device" msgstr "Linked Device" -#: src/gui/view_model/gtk/device.rs:61 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:61 msgid "An security key or card (NFC)" msgstr "A security key or card (NFC)" -#: src/gui/view_model/gtk/device.rs:62 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:62 msgid "A security key (USB)" msgstr "A security key (USB)" -#: src/gui/view_model/mod.rs:75 +#: credentialsd-ui/src/gui/view_model/mod.rs:64 msgid "unknown application" msgstr "unknown application" #. TRANSLATORS: %s1 is the "relying party" (think: domain name) where the request is coming from -#: src/gui/view_model/mod.rs:80 +#: credentialsd-ui/src/gui/view_model/mod.rs:80 msgid "Create a passkey for %s1" msgstr "Create a passkey for %s1" #. TRANSLATORS: %s1 is the "relying party" (think: domain name) where the request is coming from -#: src/gui/view_model/mod.rs:84 +#: credentialsd-ui/src/gui/view_model/mod.rs:84 msgid "Use a passkey for %s1" msgstr "Use a passkey for %s1" @@ -203,7 +174,7 @@ msgstr "Use a passkey for %s1" #. TRANSLATORS: %s2 is the application name (e.g.: firefox) where the request is coming from, must be left untouched to make the name bold #. TRANSLATORS: %i1 is the process ID of the requesting application #. TRANSLATORS: %s3 is the absolute path (think: /usr/bin/firefox) of the requesting application -#: src/gui/view_model/mod.rs:96 +#: credentialsd-ui/src/gui/view_model/mod.rs:96 msgid "" "\"%s2\" (process ID: %i1, binary: %s3) is asking to create a " "credential to register at \"%s1\". Only proceed if you trust this process." @@ -215,7 +186,7 @@ msgstr "" #. TRANSLATORS: %s2 is the application name (e.g.: firefox) where the request is coming from, must be left untouched to make the name bold #. TRANSLATORS: %i1 is the process ID of the requesting application #. TRANSLATORS: %s3 is the absolute path (think: /usr/bin/firefox) of the requesting application -#: src/gui/view_model/mod.rs:103 +#: credentialsd-ui/src/gui/view_model/mod.rs:103 msgid "" "\"%s2\" (process ID: %i1, binary: %s3) is asking to use a credential " "to sign in to \"%s1\". Only proceed if you trust this process." @@ -223,15 +194,27 @@ msgstr "" "\"%s2\" (process ID: %i1, binary: %s3) is asking to use a credential " "to sign in to \"%s1\". Only proceed if you trust this process." -#: src/gui/view_model/mod.rs:227 +#. TRANSLATORS: %s1 is the relying party (think: domain name) where the request is coming from +#: credentialsd-ui/src/gui/view_model/mod.rs:115 +msgid "" +"Scan the QR code using the camera on the device that has the passkey for %s1" +msgstr "" + +#. TRANSLATORS: %s1 is the relying party (think: domain name) where the request is coming from +#: credentialsd-ui/src/gui/view_model/mod.rs:118 +#, fuzzy +msgid "Insert and activate your security key to use it for %s1" +msgstr "Insert your security key." + +#: credentialsd-ui/src/gui/view_model/mod.rs:181 msgid "Failed to select credential from device." msgstr "Failed to select credential from device." -#: src/gui/view_model/mod.rs:281 +#: credentialsd-ui/src/gui/view_model/mod.rs:237 msgid "No matching credentials found on this authenticator." msgstr "No matching credentials found on this authenticator." -#: src/gui/view_model/mod.rs:284 +#: credentialsd-ui/src/gui/view_model/mod.rs:245 msgid "" "No more PIN attempts allowed. Try removing your device and plugging it back " "in." @@ -239,7 +222,7 @@ msgstr "" "No more PIN attempts allowed. Try removing your device and plugging it back " "in." -#: src/gui/view_model/mod.rs:287 +#: credentialsd-ui/src/gui/view_model/mod.rs:254 msgid "" "This server requires your device to have additional protection like a PIN, " "which is not set. Please set a PIN for this device and try again." @@ -247,11 +230,26 @@ msgstr "" "This server requires your device to have additional protection like a PIN, " "which is not set. Please set a PIN for this device and try again." -#: src/gui/view_model/mod.rs:293 +#: credentialsd-ui/src/gui/view_model/mod.rs:262 +msgid "The credential request timed out. Please try again." +msgstr "" + +#: credentialsd-ui/src/gui/view_model/mod.rs:272 +msgid "" +"Something went wrong while retrieving a credential. Please try again later " +"or use a different authenticator." +msgstr "" +"Something went wrong while retrieving a credential. Please try again later " +"or use a different authenticator." + +#: credentialsd-ui/src/gui/view_model/mod.rs:281 msgid "This credential is already registered on this authenticator." msgstr "This credential is already registered on this authenticator." -#: src/gui/view_model/mod.rs:395 -msgid "Something went wrong. Try again later or use a different authenticator." -msgstr "" -"Something went wrong. Try again later or use a different authenticator." +#~ msgid "Devices" +#~ msgstr "Devices" + +#~ msgid "" +#~ "Something went wrong. Try again later or use a different authenticator." +#~ msgstr "" +#~ "Something went wrong. Try again later or use a different authenticator." diff --git a/credentialsd-ui/po/ka_GE.po b/credentialsd-ui/po/ka_GE.po index ea8acf0..8fcf676 100644 --- a/credentialsd-ui/po/ka_GE.po +++ b/credentialsd-ui/po/ka_GE.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: credentialsd-ui\n" "Report-Msgid-Bugs-To: \"https://github.com/linux-credentials/credentialsd/" "issues\"\n" -"POT-Creation-Date: 2026-02-03 10:40+0100\n" +"POT-Creation-Date: 2026-06-18 07:18-0500\n" "PO-Revision-Date: 2026-04-20 07:16+0200\n" "Last-Translator: Ekaterine Papava \n" "Language-Team: \n" @@ -19,142 +19,104 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.9\n" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in:2 -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:8 -#: src/gui/view_model/gtk/mod.rs:385 -msgid "Credential Manager" -msgstr "ავტორიზაციის დეტალების მმართველი" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in:3 -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:9 -msgid "Write a GTK + Rust application" -msgstr "დაწერეთ GTK+ Rust აპლიკაცია" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.desktop.in.in:9 -msgid "Gnome;GTK;" -msgstr "Gnome;GTK;" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in:6 -msgid "Window width" -msgstr "ფანჯრის სიგანე" - -#: data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in:10 -msgid "Window height" -msgstr "ფანჯრის სიმაღლე" +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:9 +#, fuzzy +msgid "credentialsd-ui" +msgstr "ავტორიზაციის დეტალების არჩევა" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.gschema.xml.in:14 -msgid "Window maximized state" -msgstr "ფანჯრის სრულად გაშლილი მდგომარეობა" +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:10 +#, fuzzy +msgid "A UI for interacting with credentialsd" +msgstr "ავტორიზაციის დეტალების რეგისტრაცია" -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:11 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:12 msgid "" -"A boilerplate template for GTK + Rust. It uses Meson as a build system and " -"has flatpak support by default." +"Displays a UI for registering and creating credentials with credentialsd." msgstr "" -"გაზიარებული კოდის ნიმუში GTK+ Rust-ისთვის. ის აგების სისტემად Meson-ის " -"იყენებს და flatpak-ის მხარდაჭერა ნაგულისხმევად აქვს." -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:16 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:17 msgid "Registering a credential" msgstr "ავტორიზაციის დეტალების რეგისტრაცია" #. developer_name tag deprecated with Appstream 1.0 -#: data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:34 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:36 +#: credentialsd-ui/data/xyz.iinuwa.credentialsd.CredentialsUi.metainfo.xml.in.in:39 msgid "Isaiah Inuwa" msgstr "Isaiah Inuwa" -#: data/resources/ui/shortcuts.ui:11 -msgctxt "shortcut window" -msgid "General" -msgstr "ზოგადი" - -#: data/resources/ui/shortcuts.ui:14 -msgctxt "shortcut window" -msgid "Show Shortcuts" -msgstr "მალსახმობების ჩვენება" - -#: data/resources/ui/shortcuts.ui:20 -msgctxt "shortcut window" -msgid "Quit" -msgstr "გასვლა" - -#: data/resources/ui/window.ui:6 -msgid "_Preferences" -msgstr "_მორგება" - -#: data/resources/ui/window.ui:10 -msgid "_Keyboard Shortcuts" -msgstr "_კლავიატურის მალსახმობები" - -#: data/resources/ui/window.ui:68 +#: credentialsd-ui/data/resources/ui/window.blp:48 msgid "Choose device" msgstr "აირჩიეთ მოწყობილობა" -#: data/resources/ui/window.ui:74 -msgid "Devices" -msgstr "მოწყობილობები" +#: credentialsd-ui/data/resources/ui/window.blp:72 +#, fuzzy +msgid "Use a mobile device" +msgstr "მობილური მოწყობილობა" + +#: credentialsd-ui/data/resources/ui/window.blp:145 +#, fuzzy +msgid "Use your security key" +msgstr "შეერთეთ თქვენი უსაფრთხოების გასაღები." -#: data/resources/ui/window.ui:98 +#: credentialsd-ui/data/resources/ui/window.blp:162 msgid "Connect a security key" msgstr "უსაფრთხოების გასაღების დაკავშირება" -#: data/resources/ui/window.ui:139 +#: credentialsd-ui/data/resources/ui/window.blp:197 +#, fuzzy +msgid "Enter your device PIN" +msgstr "შეიყვანეთ PIN-კოდი." + +#: credentialsd-ui/data/resources/ui/window.blp:205 msgid "Scan the QR code to connect your device" msgstr "დაასკანირეთ QR კოდი თქვენი მოწყობილობის დასაკავშირებლად" -#: data/resources/ui/window.ui:184 data/resources/ui/window.ui:190 +#: credentialsd-ui/data/resources/ui/window.blp:247 +#: credentialsd-ui/data/resources/ui/window.blp:253 msgid "Choose credential" msgstr "ავტორიზაციის დეტალების არჩევა" -#: data/resources/ui/window.ui:214 +#: credentialsd-ui/data/resources/ui/window.blp:266 msgid "Complete" msgstr "დასრულება" -#: data/resources/ui/window.ui:220 +#: credentialsd-ui/data/resources/ui/window.blp:288 msgid "Done!" msgstr "მზადაა!" -#: data/resources/ui/window.ui:231 +#: credentialsd-ui/data/resources/ui/window.blp:299 msgid "Something went wrong." msgstr "რაღაც მოხდა." -#: data/resources/ui/window.ui:244 src/gui/view_model/mod.rs:290 -msgid "" -"Something went wrong while retrieving a credential. Please try again later " -"or use a different authenticator." -msgstr "" -"ავტორიზაციის დეტალების მიღებისას რაღაც არასწორად წავიდა. სცადეთ თავიდან " -"მოგვიანებით, ან გამოიყენეთ სხვა ავთენტიკატორი." - -#: src/gui/view_model/gtk/mod.rs:147 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:159 msgid "Enter your PIN. One attempt remaining." msgid_plural "Enter your PIN. %d attempts remaining." msgstr[0] "შეიყვანეთ თქვენი PIN-კოდი. დარჩენილია ერთი მცდელობა." msgstr[1] "შეიყვანეთ თქვენი PIN-კოდი. დარჩენილია %d მცდელობა." -#: src/gui/view_model/gtk/mod.rs:153 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:165 msgid "Enter your PIN." msgstr "შეიყვანეთ PIN-კოდი." -#: src/gui/view_model/gtk/mod.rs:163 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:174 msgid "Touch your device again. One attempt remaining." msgid_plural "Touch your device again. %d attempts remaining." msgstr[0] "შეეხეთ თქვენს მოწყობილობას კიდევ ერთხელ. დარჩენილია ერთი მცდელობა." msgstr[1] "შეეხეთ თქვენს მოწყობილობას კიდევ ერთხელ. დარჩენილია %d მცდელობა." -#: src/gui/view_model/gtk/mod.rs:169 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:180 msgid "Touch your device." msgstr "შეეხეთ თქვენს მოწყობილობას." -#: src/gui/view_model/gtk/mod.rs:174 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:185 msgid "Touch your device" msgstr "შეეხეთ თქვენს მოწყობილობას" -#: src/gui/view_model/gtk/mod.rs:177 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:188 msgid "Scan the QR code with your device to begin authentication." msgstr "ავთენტიკაციის დასაწყებად დაასკანერეთ QR კოდი თქვენი მოწყობილობით." -#: src/gui/view_model/gtk/mod.rs:187 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:201 msgid "" "Connecting to your device. Make sure both devices are near each other and " "have Bluetooth enabled." @@ -162,54 +124,58 @@ msgstr "" "მიმდინარეობს თქვენს მოწყობილობასთან დაკავშირება. დარწმუნდით, რომ ორივე " "მოწყობილობა ახლოსაა ერთმანეთთან და რომ ბლუთუზი ჩართულია." -#: src/gui/view_model/gtk/mod.rs:195 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:209 msgid "Device connected. Follow the instructions on your device" msgstr "მოწყობილობა დაკავშირებულია. მიჰყევით ინსტრუქციებს თქვენს მოწყობილობაზე" -#: src/gui/view_model/gtk/mod.rs:321 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:298 msgid "Insert your security key." msgstr "შეერთეთ თქვენი უსაფრთხოების გასაღები." -#: src/gui/view_model/gtk/mod.rs:340 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:317 msgid "Multiple devices found. Please select with which to proceed." msgstr "" "აღმოჩენილია ერთზე მეტი მოწყობილობა. აირჩიეთ, რომელი გნებავთ, გამოიყენოთ." -#: src/gui/view_model/gtk/device.rs:57 +#: credentialsd-ui/src/gui/view_model/gtk/mod.rs:362 +msgid "Credential Manager" +msgstr "ავტორიზაციის დეტალების მმართველი" + +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:57 msgid "A Bluetooth device" msgstr "ბლუთუზის მოწყობილობა" -#: src/gui/view_model/gtk/device.rs:58 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:58 msgid "This device" msgstr "ეს მოწყობილობა" -#: src/gui/view_model/gtk/device.rs:59 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:59 msgid "A mobile device" msgstr "მობილური მოწყობილობა" -#: src/gui/view_model/gtk/device.rs:60 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:60 msgid "Linked Device" msgstr "დაკავშირებული მოწყობილობა" -#: src/gui/view_model/gtk/device.rs:61 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:61 msgid "An security key or card (NFC)" msgstr "უსაფრთხოების გასაღები, ან ბარათი (NFC)" -#: src/gui/view_model/gtk/device.rs:62 +#: credentialsd-ui/src/gui/view_model/gtk/device.rs:62 msgid "A security key (USB)" msgstr "უსაფრთხოების გასაღები (USB)" -#: src/gui/view_model/mod.rs:75 +#: credentialsd-ui/src/gui/view_model/mod.rs:64 msgid "unknown application" msgstr "უცნობი აპლიკაცია" #. TRANSLATORS: %s1 is the "relying party" (think: domain name) where the request is coming from -#: src/gui/view_model/mod.rs:80 +#: credentialsd-ui/src/gui/view_model/mod.rs:80 msgid "Create a passkey for %s1" msgstr "საკვანძო გასაღების შექმნა %1-ისთვის" #. TRANSLATORS: %s1 is the "relying party" (think: domain name) where the request is coming from -#: src/gui/view_model/mod.rs:84 +#: credentialsd-ui/src/gui/view_model/mod.rs:84 msgid "Use a passkey for %s1" msgstr "საკვანძო გასაღების გამოყენება %1-ისთვის" @@ -217,7 +183,7 @@ msgstr "საკვანძო გასაღების გამოყე #. TRANSLATORS: %s2 is the application name (e.g.: firefox) where the request is coming from, must be left untouched to make the name bold #. TRANSLATORS: %i1 is the process ID of the requesting application #. TRANSLATORS: %s3 is the absolute path (think: /usr/bin/firefox) of the requesting application -#: src/gui/view_model/mod.rs:96 +#: credentialsd-ui/src/gui/view_model/mod.rs:96 msgid "" "\"%s2\" (process ID: %i1, binary: %s3) is asking to create a " "credential to register at \"%s1\". Only proceed if you trust this process." @@ -230,7 +196,7 @@ msgstr "" #. TRANSLATORS: %s2 is the application name (e.g.: firefox) where the request is coming from, must be left untouched to make the name bold #. TRANSLATORS: %i1 is the process ID of the requesting application #. TRANSLATORS: %s3 is the absolute path (think: /usr/bin/firefox) of the requesting application -#: src/gui/view_model/mod.rs:103 +#: credentialsd-ui/src/gui/view_model/mod.rs:103 msgid "" "\"%s2\" (process ID: %i1, binary: %s3) is asking to use a credential " "to sign in to \"%s1\". Only proceed if you trust this process." @@ -239,15 +205,27 @@ msgstr "" "დეტალების გამოყენებას \"%s1\"-ზე შესასვლელად. გააგრძელეთ, მხოლოდ, მაშინ, თუ " "ენდობით ამ პროცესს." -#: src/gui/view_model/mod.rs:227 +#. TRANSLATORS: %s1 is the relying party (think: domain name) where the request is coming from +#: credentialsd-ui/src/gui/view_model/mod.rs:115 +msgid "" +"Scan the QR code using the camera on the device that has the passkey for %s1" +msgstr "" + +#. TRANSLATORS: %s1 is the relying party (think: domain name) where the request is coming from +#: credentialsd-ui/src/gui/view_model/mod.rs:118 +#, fuzzy +msgid "Insert and activate your security key to use it for %s1" +msgstr "შეერთეთ თქვენი უსაფრთხოების გასაღები." + +#: credentialsd-ui/src/gui/view_model/mod.rs:181 msgid "Failed to select credential from device." msgstr "ავტორიზაციის დეტალების არჩევა მოწყობილობიდან ჩავარდა." -#: src/gui/view_model/mod.rs:281 +#: credentialsd-ui/src/gui/view_model/mod.rs:237 msgid "No matching credentials found on this authenticator." msgstr "ამ ავთენტიკატორში შესაბამისი ავტორიზაციის დეტალები აღმოჩენილი არაა." -#: src/gui/view_model/mod.rs:284 +#: credentialsd-ui/src/gui/view_model/mod.rs:245 msgid "" "No more PIN attempts allowed. Try removing your device and plugging it back " "in." @@ -255,7 +233,7 @@ msgstr "" "მეტი PIN-კოდი დაშვებული აღარაა. სცადეთ, გამოაძროთ თქვენი მოწყობილობა და ისევ " "შეაერთოთ." -#: src/gui/view_model/mod.rs:287 +#: credentialsd-ui/src/gui/view_model/mod.rs:254 msgid "" "This server requires your device to have additional protection like a PIN, " "which is not set. Please set a PIN for this device and try again." @@ -264,12 +242,27 @@ msgstr "" "როგორიცაა PIN-კოდი, რომელიც დაყენებული არაა. დააყენეთ PIN-კოდი ამ " "მოწყობილობისთვის და თავიდან სცადეთ." -#: src/gui/view_model/mod.rs:293 +#: credentialsd-ui/src/gui/view_model/mod.rs:262 +msgid "The credential request timed out. Please try again." +msgstr "" + +#: credentialsd-ui/src/gui/view_model/mod.rs:272 +msgid "" +"Something went wrong while retrieving a credential. Please try again later " +"or use a different authenticator." +msgstr "" +"ავტორიზაციის დეტალების მიღებისას რაღაც არასწორად წავიდა. სცადეთ თავიდან " +"მოგვიანებით, ან გამოიყენეთ სხვა ავთენტიკატორი." + +#: credentialsd-ui/src/gui/view_model/mod.rs:281 msgid "This credential is already registered on this authenticator." msgstr "ეს ავტორიზაციის დეტალი უკვე რეგისტრირებულია ამ ავთენტიკატორზე." -#: src/gui/view_model/mod.rs:395 -msgid "Something went wrong. Try again later or use a different authenticator." -msgstr "" -"რაღაც არასწორად წავიდა. სცადეთ მოგვიანებით კიდევ ერთხელ, ან გამოიყენეთ სხვა " -"ავთენტიკატორი." +#~ msgid "Devices" +#~ msgstr "მოწყობილობები" + +#~ msgid "" +#~ "Something went wrong. Try again later or use a different authenticator." +#~ msgstr "" +#~ "რაღაც არასწორად წავიდა. სცადეთ მოგვიანებით კიდევ ერთხელ, ან გამოიყენეთ " +#~ "სხვა ავთენტიკატორი."