diff --git a/CHANGELOG.md b/CHANGELOG.md index ab6b885..31543ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +### 1.0.6: + • Italian translations by @albannobattistella + • Buttons 1-0, v, r & ctrl + d added + • libcosmic update ### 1.0.5: • Config loaded at startup • Theme applied from config diff --git a/Cargo.lock b/Cargo.lock index 1604768..10df8bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -143,23 +143,21 @@ checksum = "3aa2999eb46af81abb65c2d30d446778d7e613b60bbf4e174a027e80f90a3c14" [[package]] name = "android-activity" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", "bitflags 2.11.0", "cc", - "cesu8", "jni", - "jni-sys", "libc", "log", "ndk", "ndk-context", "ndk-sys", "num_enum", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] @@ -200,9 +198,9 @@ dependencies = [ [[package]] name = "arc-swap" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9f3647c145568cec02c42054e07bdf9a5a698e15b466fb2341bfc393cd24aa5" +checksum = "a07d1f37ff60921c83bdfc7407723bdefe89b44b98a9b772f225c8f9d67141a6" dependencies = [ "rustversion", ] @@ -274,9 +272,9 @@ dependencies = [ [[package]] name = "ashpd" -version = "0.13.8" +version = "0.13.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9019bd7f3beac5fbef5b756f5ef67777ab068035ec15683c1e635ad476f54" +checksum = "13bdf0fd848239dcd5e64eeeee35dbc00378ebcc6f3aa4ead0a305eec83d0cfb" dependencies = [ "enumflags2", "futures-util", @@ -690,12 +688,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cfg-if" version = "1.0.4" @@ -904,7 +896,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -925,7 +917,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "quote", "syn", @@ -993,7 +985,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "almost", "configparser", @@ -1009,9 +1001,9 @@ dependencies = [ [[package]] name = "cosmic-utils-enroll" -version = "1.0.5" +version = "1.0.6" dependencies = [ - "ashpd 0.13.8", + "ashpd 0.13.9", "futures-util", "i18n-embed 0.15.4", "i18n-embed-fl 0.9.4", @@ -2110,7 +2102,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "dnd", "iced_accessibility", @@ -2131,7 +2123,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "accesskit", "accesskit_winit", @@ -2140,7 +2132,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "bitflags 2.11.0", "bytes", @@ -2165,7 +2157,7 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "iced_core", "iced_futures", @@ -2175,7 +2167,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "futures", "iced_core", @@ -2189,7 +2181,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "bitflags 2.11.0", "bytemuck", @@ -2210,7 +2202,7 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "iced_graphics", "iced_runtime", @@ -2219,7 +2211,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -2231,7 +2223,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -2247,7 +2239,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "bytemuck", "cosmic-text", @@ -2264,7 +2256,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "as-raw-xcb-connection", "bitflags 2.11.0", @@ -2295,7 +2287,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -2314,7 +2306,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "cosmic-client-toolkit", "cursor-icon", @@ -2470,7 +2462,7 @@ dependencies = [ "num-traits", "png 0.18.1", "zune-core 0.5.1", - "zune-jpeg 0.5.13", + "zune-jpeg 0.5.14", ] [[package]] @@ -2608,25 +2600,61 @@ dependencies = [ [[package]] name = "jni" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-macros", + "jni-sys 0.4.1", "log", - "thiserror 1.0.69", + "simd_cesu8", + "thiserror 2.0.18", "walkdir", - "windows-sys 0.45.0", + "windows-link 0.2.1", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn", ] [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn", +] [[package]] name = "jobserver" @@ -2755,7 +2783,7 @@ checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libcosmic" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#7a5676242259c1c743387b7a23df12bd8be1e53f" +source = "git+https://github.com/pop-os/libcosmic.git#adb3e341fc35282c0cee108b73740dcb28d4efe1" dependencies = [ "apply", "ashpd 0.12.3", @@ -2818,9 +2846,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" +checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" dependencies = [ "bitflags 2.11.0", "libc", @@ -2950,9 +2978,9 @@ dependencies = [ [[package]] name = "lyon_tessellation" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a35a7dd71b845ff317ce1834c4185506b79790294bde397df8d5c23031e357" +checksum = "8e43b7e44161571868f5c931d12583592c223c5583eef86b08aa02b7048a3552" dependencies = [ "float_next_after", "lyon_path", @@ -3095,7 +3123,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ "bitflags 2.11.0", - "jni-sys", + "jni-sys 0.3.1", "log", "ndk-sys", "num_enum", @@ -3115,7 +3143,7 @@ version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ - "jni-sys", + "jni-sys 0.3.1", ] [[package]] @@ -3159,9 +3187,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-traits" @@ -3447,9 +3475,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "5.1.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4779c6901a562440c3786d08192c6fbda7c1c2060edd10006b05ee35d10f2d" +checksum = "0218004a4aae742209bee9c3cef05672f6b2708be36a50add8eb613b1f2a4008" dependencies = [ "num-traits", ] @@ -4192,6 +4220,15 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "0.38.44" @@ -4385,6 +4422,22 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "simplecss" version = "0.2.2" @@ -4849,18 +4902,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "1.0.1+spec-1.1.0" +version = "1.1.0+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b320e741db58cac564e26c607d3cc1fdc4a88fd36c879568c07856ed83ff3e9" +checksum = "97251a7c317e03ad83774a8752a7e81fb6067740609f75ea2b585b569a59198f" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.25.5+spec-1.1.0" +version = "0.25.8+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca1a40644a28bce036923f6a431df0b34236949d111cc07cb6dca830c9ef2e1" +checksum = "16bff38f1d86c47f9ff0647e6838d7bb362522bdf44006c7068c2b1e606f1f3c" dependencies = [ "indexmap", "toml_datetime", @@ -4870,9 +4923,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.10+spec-1.1.0" +version = "1.1.0+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7df25b4befd31c4816df190124375d5a20c6b6921e2cad937316de3fccd63420" +checksum = "2334f11ee363607eb04df9b8fc8a13ca1715a72ba8662a26ac285c98aabb4011" dependencies = [ "winnow 1.0.0", ] @@ -5022,9 +5075,9 @@ checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" [[package]] name = "unicode-vo" @@ -5811,15 +5864,6 @@ dependencies = [ "windows-link 0.1.3", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.48.0" @@ -5865,21 +5909,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-targets" version = "0.48.5" @@ -5937,12 +5966,6 @@ dependencies = [ "windows-link 0.1.3", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -5961,12 +5984,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -5985,12 +6002,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -6021,12 +6032,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -6045,12 +6050,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -6069,12 +6068,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -6093,12 +6086,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -6788,9 +6775,9 @@ dependencies = [ [[package]] name = "zune-jpeg" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec5f41c76397b7da451efd19915684f727d7e1d516384ca6bd0ec43ec94de23c" +checksum = "0b7a1c0af6e5d8d1363f4994b7a091ccf963d8b694f7da5b0b9cceb82da2c0a6" dependencies = [ "zune-core 0.5.1", ] diff --git a/Cargo.toml b/Cargo.toml index bbfb853..e887a2f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmic-utils-enroll" -version = "1.0.5" +version = "1.0.6" edition = "2024" license = "MPL-2.0" description = "GUI for fprintd fingerprint enrolling" diff --git a/i18n/it/cosmic_utils_enroll.ftl b/i18n/it/cosmic_utils_enroll.ftl new file mode 100644 index 0000000..e18df55 --- /dev/null +++ b/i18n/it/cosmic_utils_enroll.ftl @@ -0,0 +1,89 @@ +app-title = Registrazione Impronta Digitale +about = Informazioni +settings = Impostazioni +view = Vista +fprint = Registra +welcome = Registra e/o elimina impronte digitali +git-description = Commit Git {$hash} del {$date} +register = Registra +verify = Verifica +delete = Elimina +danger = Pericolo +cancel = Annulla +success = Successo. Ora registra un'impronta. +deleted = Impronta digitale eliminata. +deleting = Eliminazione impronta digitale in corso... +clear-device = Svuota Dispositivo +confirm-clear = Sei sicuro? +clearing-device = Cancellazione di tutte le impronte digitali dal dispositivo per tutti gli utenti conosciuti... +device-cleared = Dispositivo svuotato per tutti gli utenti conosciuti. +clear-device-confirm = Sei sicuro di voler cancellare le impronte digitali per TUTTI gli utenti conosciuti? + +settings-ui = Interfaccia Utente +alternative-ui = Interfaccia Alternativa +settings-clear-device = Rimuovi tutte le impronte digitali +settings-theme = Tema + +theme-system = Sistema +theme-light = Chiaro +theme-dark = Scuro + +register-tooltip = Registra una nuova impronta digitale +delete-tooltip = Elimina questa impronta digitale +clear-tooltip = Funziona solo per utenti ancora esistenti +verify-tooltip = Verifica l'impronta digitale confrontandola con quelle registrate + +verify-finger = Posiziona {$finger} sul lettore +verify-no-match = L'impronta digitale non corrisponde +verify-match = Impronta digitale corrispondente +verify-retry-scan = Impossibile leggere l'impronta digitale. Riprova. +verify-swipe-too-short = Scorrimento troppo breve. Riprova. +verify-finger-not-centered = Dito non centrato. Riprova. +verify-remove-and-retry = Rimuovi il dito e riprova. +verify-too-fast = Tocco troppo veloce. Riprova. +verify-disconnected = Dispositivo disconnesso. Chiudi la finestra. +verify-unknown-error = Si è verificato un errore sconosciuto. + +page-right-thumb = Pollice Destro +page-right-index-finger = Indice Destro +page-right-middle-finger = Medio Destro +page-right-ring-finger = Anulare Destro +page-right-little-finger = Mignolo Destro +page-left-thumb = Pollice Sinistro +page-left-index-finger = Indice Sinistro +page-left-middle-finger = Medio Sinistro +page-left-ring-finger = Anulare Sinistro +page-left-little-finger = Mignolo Sinistro +page-delete-all-users-prints = Elimina tutte le impronte dell'utente + +status-connecting = Connessione al bus di sistema... +status-searching-device = Ricerca lettore impronte digitali... +status-device-found = Scegli quale impronta digitale registrare. +status-no-device-found = Nessun lettore di impronte digitali trovato. +status-starting-enrollment = Avvio registrazione... +status-starting-verification = Avvio verifica... + +enroll-starting = Posiziona il dito sul lettore per iniziare. +enroll-stage-passed = Scansione riuscita. Continua. +enroll-retry-scan = Impossibile leggere l'impronta digitale. Riprova. +enroll-swipe-too-short = Scorrimento troppo breve. Scorri per tutta la lunghezza del sensore. +enroll-finger-not-centered = Dito non centrato. Posiziona il dito al centro del sensore. +enroll-remove-and-retry = Rimuovi il dito e riprova. +enroll-unknown-error = Si è verificato un errore sconosciuto. +enroll-completed = Impronta digitale registrata. +enroll-failed = Registrazione fallita. +enroll-disconnected = Dispositivo disconnesso. +enroll-data-full = Memoria impronte digitali piena. Elimina alcune impronte digitali. +enroll-too-fast = Scorrimento troppo veloce. Scorri più lentamente. +enroll-duplicate = Questo dito è già registrato. +enroll-cancelled = Registrazione annullata. + +error-permission-denied = Permesso negato. +error-already-in-use = Il dispositivo è già in uso da un'altra applicazione. +error-internal = Si è verificato un errore interno. +error-no-enrolled-prints = Nessuna impronta digitale registrata per questo dito. +error-claim-device = Impossibile acquisire il dispositivo. +error-device-not-found = Dispositivo per impronte digitali non trovato. +error-timeout = Operazione scaduta. +error-prints-not-deleted = Impossibile eliminare le impronte digitali. +error-connect-dbus = Connessione a DBus fallita: {$err} diff --git a/org.cosmic_utils.enroll.yml b/org.cosmic_utils.enroll.yml index 81dd933..6d9f26a 100644 --- a/org.cosmic_utils.enroll.yml +++ b/org.cosmic_utils.enroll.yml @@ -1,41 +1,42 @@ app-id: org.cosmic_utils.enroll runtime: org.freedesktop.Platform -runtime-version: '25.08' +runtime-version: "25.08" sdk: org.freedesktop.Sdk base: com.system76.Cosmic.BaseApp base-version: stable command: cosmic-utils-enroll finish-args: - - --socket=wayland - - --socket=fallback-x11 - - --share=ipc - - --device=dri - - --system-talk-name=net.reactivated.Fprint - - --system-talk-name=org.freedesktop.PolicyKit1 - - --system-talk-name=org.freedesktop.Accounts - - --talk-name=com.system76.CosmicSettingsDaemon + - --socket=wayland + - --socket=fallback-x11 + - --share=ipc + - --device=dri + - --filesystem=xdg-config/cosmic:rw + - --system-talk-name=net.reactivated.Fprint + - --system-talk-name=org.freedesktop.PolicyKit1 + - --system-talk-name=org.freedesktop.Accounts + - --talk-name=com.system76.CosmicSettingsDaemon sdk-extensions: - - org.freedesktop.Sdk.Extension.rust-stable + - org.freedesktop.Sdk.Extension.rust-stable build-options: - append-path: /usr/lib/sdk/rust-stable/bin - env: - CARGO_HOME: /run/build/cosmic-utils-enroll/cargo + append-path: /usr/lib/sdk/rust-stable/bin + env: + CARGO_HOME: /run/build/cosmic-utils-enroll/cargo modules: - - name: cosmic-utils-enroll - buildsystem: simple - build-commands: - - cargo --offline fetch --manifest-path Cargo.toml - - cargo build --offline --release + - name: cosmic-utils-enroll + buildsystem: simple + build-commands: + - cargo --offline fetch --manifest-path Cargo.toml + - cargo build --offline --release - - install -Dm0755 target/release/cosmic-utils-enroll /app/bin/cosmic-utils-enroll - - install -Dm0644 resources/org.cosmic_utils.enroll.desktop /app/share/applications/org.cosmic_utils.enroll.desktop - - install -Dm0644 resources/org.cosmic_utils.enroll.metainfo.xml /app/share/appdata/org.cosmic_utils.enroll.metainfo.xml - - install -Dm0644 resources/icons/hicolor/scalable/apps/enroll.svg /app/share/icons/hicolor/scalable/apps/org.cosmic_utils.enroll.svg + - install -Dm0755 target/release/cosmic-utils-enroll /app/bin/cosmic-utils-enroll + - install -Dm0644 resources/org.cosmic_utils.enroll.desktop /app/share/applications/org.cosmic_utils.enroll.desktop + - install -Dm0644 resources/org.cosmic_utils.enroll.metainfo.xml /app/share/appdata/org.cosmic_utils.enroll.metainfo.xml + - install -Dm0644 resources/icons/hicolor/scalable/apps/enroll.svg /app/share/icons/hicolor/scalable/apps/org.cosmic_utils.enroll.svg - sources: - - type: git - url: https://github.com/cosmic-utils/enroll.git - tag: 1.0.4 - - cargo-sources.json + sources: + - type: git + url: https://github.com/cosmic-utils/enroll.git + tag: 1.0.6 + - cargo-sources.json diff --git a/resources/org.cosmic_utils.enroll.metainfo.xml b/resources/org.cosmic_utils.enroll.metainfo.xml index 731f2b8..2e8fae7 100644 --- a/resources/org.cosmic_utils.enroll.metainfo.xml +++ b/resources/org.cosmic_utils.enroll.metainfo.xml @@ -2,6 +2,7 @@ org.cosmic_utils.enroll CC0-1.0 + COSMIC MPL-2.0 Enroll Fingerprint record management @@ -13,17 +14,26 @@

- Fingerprint management for single and multi-user systems. Allows you to register, verify and delete prints. + Fingerprint record management for single and multi-user systems. You can register, verify and delete prints. +

+

+ Select the user you which to register, by default the current user, and then the finger. Click either Register to enroll a print for a new finger, Verify to match against an existing one or Delete to remove it. +

+

+ From View menu you can access Settings where you can configure appearance or access Delete all option, which attempts to clear all registered prints from your scanner device.

Správa otisků prstů pro jednoho i více uživatelů. Umožňuje registrovat, ověřovat a mazat otisky.

Sormenjälkien hallinnointi yhden ja useamman käyttäjän järjestelmille. Sallii sinun luoda, varmentaa sekä poistaa jälkiä. -

-

- Fingerprint registreringshantering för enskilda och flera användare. Tillåter dig att registrera, verifiera och ta bort fingeravtryck. -

+

+

+ Fingerprint registreringshantering för enskilda och flera användare. Tillåter dig att registrera, verifiera och ta bort fingeravtryck. +

+

+ Gestione delle impronte digitali per sistemi monoutente e multiutente. Consente di creare, verificare ed eliminare le impronte digitali. +

https://github.com/cosmic-utils/enroll/raw/main/resources/icons/hicolor/scalable/apps/enroll.svg @@ -58,6 +68,9 @@ Fingerprint Autentisering COSMIC + Impronta digitale + Identificazione + COSMIC #7ea5ae @@ -75,9 +88,23 @@ Hlavní UI Pääkäyttöliittymä Huvudsida + Interfaccia principale + + +

+ Changes: +

+
    +
  • Decreased minimum height back to original
  • +
  • Updated dependencies
  • +
  • Italian translations added
  • +
  • Initial keyboard control support
  • +
+
+

diff --git a/src/app/application.rs b/src/app/application.rs index 52ae00a..6eaf8ff 100644 --- a/src/app/application.rs +++ b/src/app/application.rs @@ -225,6 +225,8 @@ impl cosmic::Application for AppModel { subscriptions.push(portal_theme_subscription(self.config.app_theme)); + subscriptions.push(key_subscription()); + Subscription::batch(subscriptions) } @@ -256,6 +258,7 @@ impl cosmic::Application for AppModel { Message::VerifyStatus(status, done) => self.on_verify_status(status, done), Message::ThemeChanged(is_dark) => self.on_portal_color_scheme_changed(is_dark), Message::ThemeSetting(theme) => self.on_theme_setting(theme), + Message::SelectFingerByNumber(key) => self.on_select_finger_by_number(key), } } @@ -278,7 +281,7 @@ impl cosmic::Application for AppModel { } } -// TODO: about & settings could be in view. others in tasks. +// TODO: about could be in view. others in tasks. impl AppModel { /// The about page for this app. pub fn about(&self) -> Element<'_, Message> { diff --git a/src/app/finger.rs b/src/app/finger.rs index 1e9196d..b4ab400 100644 --- a/src/app/finger.rs +++ b/src/app/finger.rs @@ -54,6 +54,23 @@ impl Finger { } } + /// Maps keys 1-0 to fingers (1=LeftPinky, 0=RightPinky). + pub fn from_key(key: u8) -> Option { + match key { + 1 => Some(Finger::LeftPinky), + 2 => Some(Finger::LeftRing), + 3 => Some(Finger::LeftMiddle), + 4 => Some(Finger::LeftIndex), + 5 => Some(Finger::LeftThumb), + 6 => Some(Finger::RightThumb), + 7 => Some(Finger::RightIndex), + 8 => Some(Finger::RightMiddle), + 9 => Some(Finger::RightRing), + 0 => Some(Finger::RightPinky), + _ => None, + } + } + pub fn as_finger_id(&self) -> Option<&'static str> { match self { Finger::RightThumb => Some("right-thumb"), @@ -109,6 +126,21 @@ mod tests { assert!(!Finger::DeleteAllUsersPrints.localized_name().is_empty()); } + #[test] + fn test_finger_from_key() { + assert_eq!(Finger::from_key(1), Some(Finger::LeftPinky)); + assert_eq!(Finger::from_key(2), Some(Finger::LeftRing)); + assert_eq!(Finger::from_key(3), Some(Finger::LeftMiddle)); + assert_eq!(Finger::from_key(4), Some(Finger::LeftIndex)); + assert_eq!(Finger::from_key(5), Some(Finger::LeftThumb)); + assert_eq!(Finger::from_key(6), Some(Finger::RightThumb)); + assert_eq!(Finger::from_key(7), Some(Finger::RightIndex)); + assert_eq!(Finger::from_key(8), Some(Finger::RightMiddle)); + assert_eq!(Finger::from_key(9), Some(Finger::RightRing)); + assert_eq!(Finger::from_key(0), Some(Finger::RightPinky)); + assert_eq!(Finger::from_key(10), None); + } + #[test] fn test_page_as_finger_id() { assert_eq!(Finger::RightThumb.as_finger_id(), Some("right-thumb")); diff --git a/src/app/message.rs b/src/app/message.rs index 8c7a16f..90e7650 100644 --- a/src/app/message.rs +++ b/src/app/message.rs @@ -40,6 +40,8 @@ pub enum Message { VerifyStatus(String, bool), ThemeChanged(bool), ThemeSetting(AppTheme), + + SelectFingerByNumber(u8), } // Section for handling of Messages @@ -188,9 +190,15 @@ impl AppModel { /// /// **Returns** ***Task***() pub(crate) fn on_verify_finger(&mut self) -> Task> { - self.busy = true; - self.verifying_finger = true; - self.status = fl!("status-starting-verification"); + if self + .selected_finger + .as_finger_id() + .is_some_and(|id| self.enrolled_fingers.iter().any(|ef| ef == id)) + { + self.busy = true; + self.verifying_finger = true; + self.status = fl!("status-starting-verification"); + } Task::none() } @@ -281,6 +289,9 @@ impl AppModel { /// /// **Returns** either ***Task***() or ***task_enroll_stop***() pub(crate) fn on_enroll_stop(&self) -> Task> { + if self.enrolling_finger.is_none() { + return Task::none(); + } if let (Some(path), Some(conn)) = (self.device_path.clone(), self.connection.clone()) { let path = (*path).clone(); return task_enroll_stop(path, conn); @@ -366,11 +377,13 @@ impl AppModel { /// /// **Returns** ***Task***() pub(crate) fn on_register(&mut self) -> Task> { - self.busy = true; - if let Some(finger_id) = self.selected_finger.as_finger_id() { - self.enrolling_finger = Some(Arc::new(finger_id.to_string())); + if !self.busy && self.device_path.is_some() && self.enrolling_finger.is_none() { + self.busy = true; + if let Some(finger_id) = self.selected_finger.as_finger_id() { + self.enrolling_finger = Some(Arc::new(finger_id.to_string())); + } + self.status = fl!("status-starting-enrollment"); } - self.status = fl!("status-starting-enrollment"); Task::none() } @@ -381,9 +394,10 @@ impl AppModel { self.config = config.clone(); if let Some(handler) = &self.config_handler - && let Err(err) = config.write_entry(handler) { - tracing::error!("failed to write config: {}", err); - } + && let Err(err) = config.write_entry(handler) + { + tracing::error!("failed to write config: {}", err); + } Task::none() } @@ -421,4 +435,15 @@ impl AppModel { tasks.push(task); Task::batch(tasks) } + + /// Selects a finger by numeric key (1-0). + /// + /// **Returns** ***Task***() + pub(crate) fn on_select_finger_by_number(&mut self, key: u8) -> Task> { + if let Some(finger) = Finger::from_key(key) && !self.busy { + self.confirm_clear = false; + self.selected_finger = finger; + } + Task::none() + } } diff --git a/src/app/subscription.rs b/src/app/subscription.rs index c4fa75d..3444d83 100644 --- a/src/app/subscription.rs +++ b/src/app/subscription.rs @@ -4,7 +4,9 @@ use crate::app::{ fprint::{enroll_fingerprint_process, verify_finger_process}, }; use ashpd::desktop::settings::{ColorScheme, Settings}; -use cosmic::iced::{Subscription, futures::channel::mpsc::Sender, stream::channel}; +use cosmic::iced::{ + Event, Subscription, futures::channel::mpsc::Sender, keyboard, stream::channel, +}; use futures_util::{SinkExt, StreamExt}; #[derive(Clone)] @@ -69,7 +71,7 @@ impl std::hash::Hash for EnrollData { } } -/// ***Returns*** a subscription to an ongoing enroll process +/// **Returns** a subscription to an ongoing enroll process pub(crate) fn enroll_subscription(data: EnrollData) -> Subscription { Subscription::run_with(data, |data| { let data = data.clone(); @@ -96,7 +98,7 @@ pub(crate) fn enroll_subscription(data: EnrollData) -> Subscription { }) } -/// ***Returns*** a subscription to an ongoing verify process +/// **Returns** a subscription to an ongoing verify process pub(crate) fn verify_subscription(data: VerifyData) -> Subscription { Subscription::run_with(data, |data| { let data = data.clone(); @@ -119,8 +121,10 @@ pub(crate) fn verify_subscription(data: VerifyData) -> Subscription { }) } -// On non-COSMIC desktops, subscribe to XDG portal color-scheme changes -// so theme updates when user changes their desktop appearance +/// On non-COSMIC desktops, subscribe to XDG portal color-scheme changes +/// so theme updates when user changes their desktop appearance +/// +/// **Returns** subscription to ColorScheme changes or None pub fn portal_theme_subscription(app_theme: crate::config::AppTheme) -> Subscription { if !crate::config::is_cosmic_desktop() && app_theme == crate::config::AppTheme::System { Subscription::run_with(app_theme, |_| { @@ -158,3 +162,37 @@ pub fn portal_theme_subscription(app_theme: crate::config::AppTheme) -> Subscrip Subscription::none() } } + +/// **Returns** a subscription to key events 0-9, r, v, c and Ctrl + d +pub fn key_subscription() -> Subscription { + cosmic::iced::event::listen_raw(|event, _status, _window| { + let Event::Keyboard(keyboard::Event::KeyPressed { key, modifiers, .. }) = event else { + return None; + }; + + use cosmic::iced::keyboard::Key; + + match key { + Key::Character(c) if modifiers.control() && c == "d" => Some(Message::Delete), + Key::Character(c) if !modifiers.control() && !modifiers.logo() && !modifiers.alt() => { + match c.as_str() { + "r" => Some(Message::Register), + "v" => Some(Message::VerifyFinger), + "c" => Some(Message::EnrollStop), + "1" => Some(Message::SelectFingerByNumber(1)), + "2" => Some(Message::SelectFingerByNumber(2)), + "3" => Some(Message::SelectFingerByNumber(3)), + "4" => Some(Message::SelectFingerByNumber(4)), + "5" => Some(Message::SelectFingerByNumber(5)), + "6" => Some(Message::SelectFingerByNumber(6)), + "7" => Some(Message::SelectFingerByNumber(7)), + "8" => Some(Message::SelectFingerByNumber(8)), + "9" => Some(Message::SelectFingerByNumber(9)), + "0" => Some(Message::SelectFingerByNumber(0)), + _ => None, + } + } + _ => None, + } + }) +}