From 04a1c45fd531b8ba9bfd59a4e2ea8530b5f6656d Mon Sep 17 00:00:00 2001 From: Maximiliano Sandoval R Date: Sun, 24 Sep 2023 22:52:02 +0200 Subject: [PATCH] Use aperture --- Cargo.lock | 765 ++++++++---------- Cargo.toml | 6 +- .../com.belmoussaoui.Authenticator.Devel.json | 2 +- data/resources/ui/account_add.ui | 1 - data/resources/ui/camera.ui | 4 +- po/POTFILES.in | 1 - src/main.rs | 3 +- src/widgets/accounts/add.rs | 5 - src/widgets/camera.rs | 295 +++---- src/widgets/camera_paintable.rs | 265 ------ src/widgets/camera_row.rs | 11 - src/widgets/mod.rs | 6 +- src/widgets/preferences/window.rs | 1 - 13 files changed, 475 insertions(+), 890 deletions(-) delete mode 100644 src/widgets/camera_paintable.rs diff --git a/Cargo.lock b/Cargo.lock index fdb774e..10cedbb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -41,9 +41,9 @@ dependencies = [ [[package]] name = "aes-gcm" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ "aead", "aes", @@ -55,9 +55,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.3" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8f9420f797f2d9e935edf629310eb938a0d839f984e25327f3c7eed22300c" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" dependencies = [ "memchr", ] @@ -79,9 +79,24 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "aperture" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c16488061745f7dc60f27a758d484a31dca9b818aeb8ed43ca2ba4dba7fe7209" +dependencies = [ + "gst-plugin-gtk4", + "gstreamer", + "gstreamer-pbutils", + "gstreamer-video", + "gtk4", + "log", + "once_cell", +] [[package]] name = "arrayref" @@ -97,9 +112,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "ashpd" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a991d42db9324a71732b310446ff0d36beafafa7eaf3533a32ebe4c9c021da6e" +checksum = "f3affe251686bd936a0afb74b9693e8bf2f193d51da1b9a45d3f1303a9bd2cc7" dependencies = [ "enumflags2", "futures-channel", @@ -107,9 +122,7 @@ dependencies = [ "gdk4-wayland", "gdk4-x11", "gtk4", - "libc", "once_cell", - "pipewire", "rand", "serde", "serde_repr", @@ -154,7 +167,7 @@ dependencies = [ "log", "parking", "polling", - "rustix 0.37.23", + "rustix 0.37.24", "slab", "socket2 0.4.9", "waker-fn", @@ -182,27 +195,27 @@ dependencies = [ "cfg-if", "event-listener", "futures-lite", - "rustix 0.37.23", + "rustix 0.37.24", "signal-hook", "windows-sys", ] [[package]] name = "async-recursion" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" +checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "async-task" -version = "4.4.0" +version = "4.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" +checksum = "b9441c6b2fe128a7c2bf680a44c34d0df31ce09e5b7e401fcca3faa483dbc921" [[package]] name = "async-trait" @@ -212,20 +225,20 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "atomic-waker" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "atomic_refcell" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79d6dc922a2792b006573f60b2648076355daeae5ce9cb59507e5908c9625d31" +checksum = "112ef6b3f6cb3cb6fc5b6b494ef7a848492cff1ab0ef4de10b0f7d572861c905" [[package]] name = "authenticator" @@ -233,6 +246,7 @@ version = "4.3.1" dependencies = [ "aes-gcm", "anyhow", + "aperture", "ashpd", "data-encoding", "diesel", @@ -242,9 +256,6 @@ dependencies = [ "futures-executor", "futures-util", "gettext-rs", - "gst-plugin-gtk4", - "gstreamer", - "gstreamer-video", "gtk4", "hex", "image", @@ -277,9 +288,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -292,29 +303,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.2" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" - -[[package]] -name = "bindgen" -version = "0.64.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4" -dependencies = [ - "bitflags 1.3.2", - "cexpr", - "clang-sys", - "lazy_static", - "lazycell", - "peeking_take_while", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 1.0.109", -] +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] name = "bitflags" @@ -330,13 +321,13 @@ checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "blake2b_simd" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bc" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq 0.2.6", + "constant_time_eq", ] [[package]] @@ -365,24 +356,25 @@ dependencies = [ [[package]] name = "blocking" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" +checksum = "94c4ef1f913d78636d78d538eec1f18de81e481f44b1be0a81060090530846e1" dependencies = [ "async-channel", "async-lock", "async-task", - "atomic-waker", - "fastrand 1.9.0", + "fastrand 2.0.1", + "futures-io", "futures-lite", - "log", + "piper", + "tracing", ] [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "bytecount" @@ -392,9 +384,9 @@ checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" @@ -404,15 +396,15 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "cairo-rs" -version = "0.18.0" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d859b656775a6b1dd078d3e5924884e6ea88aa649a7fdde03d5b2ec56ffcc10b" +checksum = "1c0466dfa8c0ee78deef390c274ad756801e0a6dbb86c5ef0924a298c5761c4d" dependencies = [ "bitflags 2.4.0", "cairo-sys-rs", @@ -424,9 +416,9 @@ dependencies = [ [[package]] name = "cairo-sys-rs" -version = "0.18.0" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd4d115132e01c0165e3bf5f56aedee8980b0b96ede4eb000b693c05a8adb8ff" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" dependencies = [ "glib-sys", "libc", @@ -475,27 +467,18 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "libc", ] -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - [[package]] name = "cfg-expr" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b40ccee03b5175c18cde8f37e7d2a33bcef6f8ec8f7cc0d81090d1bb380949c9" +checksum = "03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3" dependencies = [ "smallvec", "target-lexicon", @@ -515,14 +498,14 @@ checksum = "17cc5e6b5ab06331c33589842070416baa137e8b0eb912b008cfd4a78ada7919" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "winapi", + "windows-targets", ] [[package]] @@ -536,16 +519,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "clang-sys" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" -dependencies = [ - "glob", - "libc", -] - [[package]] name = "color_quant" version = "1.1.0" @@ -554,31 +527,19 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "concurrent-queue" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" dependencies = [ "crossbeam-utils", ] -[[package]] -name = "constant_time_eq" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6" - [[package]] name = "constant_time_eq" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" -[[package]] -name = "cookie-factory" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396de984970346b0d9e93d1415082923c679e5ae5c3ee3dcbd104f5610af126b" - [[package]] name = "core-foundation" version = "0.9.3" @@ -650,9 +611,9 @@ checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] name = "deranged" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" [[package]] name = "derivative" @@ -667,9 +628,9 @@ dependencies = [ [[package]] name = "diesel" -version = "2.1.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7a532c1f99a0f596f6960a60d1e119e91582b24b39e2d83a190e61262c3ef0c" +checksum = "53c8a2cb22327206568569e5a45bb5a2c946455efdd76e24d15b7e82171af95e" dependencies = [ "diesel_derives", "libsqlite3-sys", @@ -679,14 +640,14 @@ dependencies = [ [[package]] name = "diesel_derives" -version = "2.1.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74398b79d81e52e130d991afeed9c86034bb1b7735f46d2f5bf7deb261d80303" +checksum = "ef8337737574f55a468005a83499da720f20c65586241ffea339db9ecdfd2b44" dependencies = [ "diesel_table_macro_syntax", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -706,7 +667,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc5557efc453706fed5e4fa85006fe9817c224c3f480a34c7e5959fd700921c5" dependencies = [ - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -734,31 +695,31 @@ checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] [[package]] name = "enum-ordinalize" -version = "3.1.13" +version = "3.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4f76552f53cefc9a7f64987c3701b99d982f7690606fd67de1d09712fbf52f1" +checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" dependencies = [ "num-bigint", "num-traits", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "enumflags2" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c041f5090df68b32bcd905365fd51769c8b9d553fe87fde0b683534f10c01bd2" +checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939" dependencies = [ "enumflags2_derive", "serde", @@ -766,13 +727,13 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" +checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -783,9 +744,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" dependencies = [ "errno-dragonfly", "libc", @@ -828,9 +789,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "favicon-scrapper" @@ -868,9 +829,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" dependencies = [ "crc32fast", "miniz_oxide", @@ -961,7 +922,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -1019,9 +980,9 @@ dependencies = [ [[package]] name = "gdk4" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8965ed5455cbfa1eb45c14a3b971cbacb43481913a3a5b9078b2ef0d9a01bd4b" +checksum = "7edb019ad581f8ecf8ea8e4baa6df7c483a95b5a59be3140be6a9c3b0c632af6" dependencies = [ "cairo-rs", "gdk-pixbuf", @@ -1034,9 +995,9 @@ dependencies = [ [[package]] name = "gdk4-sys" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeffd4a7d68046c28666d817071bf025254aaed4df35099443f0c306ca6177f3" +checksum = "dbab43f332a3cf1df9974da690b5bb0e26720ed09a228178ce52175372dcfef0" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -1051,9 +1012,9 @@ dependencies = [ [[package]] name = "gdk4-wayland" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25effea07ee7e272b93a896e4d7610362e784196f7e574d0d743af65eb086228" +checksum = "0db9102ff11e55bd65e153c1192abc21ddfa45ede90622e423d4e4a0e5d5f313" dependencies = [ "gdk4", "gdk4-wayland-sys", @@ -1064,9 +1025,9 @@ dependencies = [ [[package]] name = "gdk4-wayland-sys" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5f1c96c42eed419a1ab3957b3200e6fb9e8200975f631b40628785252bfbe3" +checksum = "d48159be256ae0212d5a2b9884627197d08082c7168b28775b53a0f9885d5624" dependencies = [ "glib-sys", "libc", @@ -1075,9 +1036,9 @@ dependencies = [ [[package]] name = "gdk4-win32" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d583176f5673f03d888b0c31ec7022416cb75264baa290a3fb822c76a1e2501" +checksum = "fe66650c41f64e41ada9f85c4bdb96e5549c669e594892240dfb147a63256057" dependencies = [ "gdk4", "gdk4-win32-sys", @@ -1089,9 +1050,9 @@ dependencies = [ [[package]] name = "gdk4-win32-sys" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33d56de9024de610d036ded88cf436bc5e6e6b9554e818bf91ee197d6f8f848" +checksum = "4b5c187546cd3ad9f1787b46c66272d8fcdf8197bfe4f6e2647fe910c39e396d" dependencies = [ "gdk-pixbuf-sys", "gdk4-sys", @@ -1102,9 +1063,9 @@ dependencies = [ [[package]] name = "gdk4-x11" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "708033576e27bfda6c2ab1be59f19369721e90b1ea15d1538f8c598c54aebbab" +checksum = "28c9bbf8ea1ea8469e74c3fdfafc142c9e14810a27f89ddb01b5e9076a60a450" dependencies = [ "gdk4", "gdk4-x11-sys", @@ -1115,9 +1076,9 @@ dependencies = [ [[package]] name = "gdk4-x11-sys" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0275444de1a02ecc8d30fe2a9d8f060e9bece2c43331a19fbf3cdef8cb496820" +checksum = "a3de1709370758192369f5329aa593847797f1c693c95e8a261e9b2e06a5f125" dependencies = [ "gdk4-sys", "glib-sys", @@ -1178,15 +1139,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "gio" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7884cba6b1c5db1607d970cadf44b14a43913d42bc68766eea6a5e2fe0891524" +checksum = "57052f84e8e5999b258e8adf8f5f2af0ac69033864936b8b6838321db2f759b1" dependencies = [ "futures-channel", "futures-core", @@ -1216,9 +1177,9 @@ dependencies = [ [[package]] name = "glib" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331156127e8166dd815cf8d2db3a5beb492610c716c03ee6db4f2d07092af0a7" +checksum = "1c316afb01ce8067c5eaab1fc4f2cd47dc21ce7b6296358605e2ffab23ccbd19" dependencies = [ "bitflags 2.4.0", "futures-channel", @@ -1239,16 +1200,16 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.18.0" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "179643c50bf28d20d2f6eacd2531a88f2f5d9747dd0b86b8af1e8bb5dd0de3c0" +checksum = "f8da903822b136d42360518653fcf154455defc437d3e7a81475bf9a95ff1e47" dependencies = [ "heck", "proc-macro-crate", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -1303,9 +1264,9 @@ dependencies = [ [[package]] name = "gsk4" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b3b9e8090acb325d08cde84b30fc29b963a75fbac93160e9c5a30d2b335742" +checksum = "0d958e351d2f210309b32d081c832d7de0aca0b077aa10d88336c6379bd01f7e" dependencies = [ "cairo-rs", "gdk4", @@ -1318,9 +1279,9 @@ dependencies = [ [[package]] name = "gsk4-sys" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0770d1ede7189092748c4ef5b6921264eb945fd2318a58e8f59dc273000810f8" +checksum = "12bd9e3effea989f020e8f1ff3fa3b8c63ba93d43b899c11a118868853a56d55" dependencies = [ "cairo-sys-rs", "gdk4-sys", @@ -1386,6 +1347,34 @@ dependencies = [ "thiserror", ] +[[package]] +name = "gstreamer-audio" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02343d7fca125d363893744396f4df1af923033a1415ed9b886c32fdd70ae42a" +dependencies = [ + "cfg-if", + "glib", + "gstreamer", + "gstreamer-audio-sys", + "gstreamer-base", + "libc", +] + +[[package]] +name = "gstreamer-audio-sys" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35814f1ce58c811c642b06c6c21bd82ce18df1dc062640d13ac20438c0626b36" +dependencies = [ + "glib-sys", + "gobject-sys", + "gstreamer-base-sys", + "gstreamer-sys", + "libc", + "system-deps", +] + [[package]] name = "gstreamer-base" version = "0.21.0" @@ -1517,6 +1506,36 @@ dependencies = [ "system-deps", ] +[[package]] +name = "gstreamer-pbutils" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e5eabfea8ac22256724f6093927dfd2148018175239036d4721e1dfc59c7d7" +dependencies = [ + "glib", + "gstreamer", + "gstreamer-audio", + "gstreamer-pbutils-sys", + "gstreamer-video", + "libc", + "thiserror", +] + +[[package]] +name = "gstreamer-pbutils-sys" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6faae6e3454bc8ca5986d7ef6477fc44b809bfc952a8680eaedb4f2e001f9d69" +dependencies = [ + "glib-sys", + "gobject-sys", + "gstreamer-audio-sys", + "gstreamer-sys", + "gstreamer-video-sys", + "libc", + "system-deps", +] + [[package]] name = "gstreamer-sys" version = "0.21.0" @@ -1560,9 +1579,9 @@ dependencies = [ [[package]] name = "gtk4" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0973f9b9ade10fc22403810b7283d47b533033715f2aaa36288cd3bf90d63efc" +checksum = "5aeb51aa3e9728575a053e1f43543cd9992ac2477e1b186ad824fd4adfb70842" dependencies = [ "cairo-rs", "field-offset", @@ -1581,9 +1600,9 @@ dependencies = [ [[package]] name = "gtk4-macros" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9f2c4530f3168fe506b0be7bc15f7a93ef38d020edb27d81a921a26cbca851" +checksum = "d57ec49cf9b657f69a05bca8027cff0a8dfd0c49e812be026fc7311f2163832f" dependencies = [ "anyhow", "proc-macro-crate", @@ -1595,9 +1614,9 @@ dependencies = [ [[package]] name = "gtk4-sys" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19fde71ef2e78ac8fb18073c345b5f29609048d4045a345613645aa1163243c1" +checksum = "54d8c4aa23638ce9faa2caf7e2a27d4a1295af2155c8e8d28c4d4eeca7a65eb8" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -1614,9 +1633,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -1639,9 +1658,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" [[package]] name = "heck" @@ -1651,9 +1670,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -1712,9 +1731,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" @@ -1812,12 +1831,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.1", ] [[package]] @@ -1898,17 +1917,11 @@ dependencies = [ "spin", ] -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libadwaita" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06444f4ca05a60693da6e9e2b591bd40a298e65a118a8d5e830771718b3e0253" +checksum = "2fe7e70c06507ed10a16cda707f358fbe60fe0dc237498f78c686ade92fd979c" dependencies = [ "gdk-pixbuf", "gdk4", @@ -1922,9 +1935,9 @@ dependencies = [ [[package]] name = "libadwaita-sys" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021cfe3d1fcfa82411765a791f7e9b32f35dd98ce88d2e3fa10e7320f5cc8ce7" +checksum = "5e10aaa38de1d53374f90deeb4535209adc40cc5dba37f9704724169bceec69a" dependencies = [ "gdk4-sys", "gio-sys", @@ -1938,9 +1951,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.147" +version = "0.2.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" [[package]] name = "libm" @@ -1948,33 +1961,6 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" -[[package]] -name = "libspa" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "667dfbb50c3d1f7ee1d33afdc04d1255923ece7642db3303046e7d63d997d77d" -dependencies = [ - "bitflags 1.3.2", - "cc", - "cookie-factory", - "errno", - "libc", - "libspa-sys", - "nom", - "system-deps", -] - -[[package]] -name = "libspa-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79cf5b88f52534df7ca88d451ae9628e22124e3cc5c60966465a7db479534c7a" -dependencies = [ - "bindgen", - "cc", - "system-deps", -] - [[package]] name = "libsqlite3-sys" version = "0.26.0" @@ -1993,9 +1979,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db" [[package]] name = "locale_config" @@ -2022,9 +2008,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "malloc_buf" @@ -2037,9 +2023,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "memoffset" @@ -2086,12 +2072,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" version = "0.7.1" @@ -2139,26 +2119,14 @@ dependencies = [ [[package]] name = "nix" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", "memoffset 0.7.1", - "pin-utils", - "static_assertions", -] - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", ] [[package]] @@ -2177,9 +2145,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -2206,9 +2174,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" dependencies = [ "num-traits", ] @@ -2296,9 +2264,9 @@ dependencies = [ [[package]] name = "object" -version = "0.31.1" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] @@ -2344,11 +2312,11 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.56" +version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "cfg-if", "foreign-types", "libc", @@ -2365,7 +2333,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -2376,9 +2344,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.91" +version = "0.9.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" dependencies = [ "cc", "libc", @@ -2432,9 +2400,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" +checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067" [[package]] name = "parking_lot" @@ -2475,12 +2443,6 @@ dependencies = [ "hmac", ] -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "percent-encoding" version = "2.3.0" @@ -2489,9 +2451,9 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pin-project-lite" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -2500,32 +2462,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] -name = "pipewire" -version = "0.6.0" +name = "piper" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc2180a4a84b855be86e6cd72fa6fd4318278871d2b1082e7cd05fe64b135ccb" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" dependencies = [ - "anyhow", - "bitflags 1.3.2", - "errno", - "libc", - "libspa", - "libspa-sys", - "nix", - "once_cell", - "pipewire-sys", - "thiserror", -] - -[[package]] -name = "pipewire-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a95290eedb7fb6aa3922fdc0261cd0ddeb940abcdbdef28778928106554d2123" -dependencies = [ - "bindgen", - "libspa-sys", - "system-deps", + "atomic-waker", + "fastrand 2.0.1", + "futures-io", ] [[package]] @@ -2536,9 +2480,9 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "png" -version = "0.17.9" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" +checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -2623,9 +2567,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] @@ -2685,9 +2629,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -2744,9 +2688,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.3" +version = "1.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" +checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" dependencies = [ "aho-corasick", "memchr", @@ -2756,9 +2700,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.6" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" dependencies = [ "aho-corasick", "memchr", @@ -2767,15 +2711,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" dependencies = [ "base64", "bytes", @@ -2825,9 +2769,9 @@ dependencies = [ [[package]] name = "roxmltree" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f595a457b6b8c6cda66a48503e92ee8d19342f905948f29c383200ec9eb1d8" +checksum = "862340e351ce1b271a378ec53f304a5558f7db87f3769dc655a8f6ecbb68b302" dependencies = [ "xmlparser", ] @@ -2840,7 +2784,7 @@ checksum = "1e71971821b3ae0e769e4a4328dbcb517607b434db7697e9aba17203ec14e46a" dependencies = [ "base64", "blake2b_simd", - "constant_time_eq 0.3.0", + "constant_time_eq", ] [[package]] @@ -2849,12 +2793,6 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustc_version" version = "0.4.0" @@ -2866,9 +2804,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.23" +version = "0.37.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +checksum = "4279d76516df406a8bd37e7dff53fd37d1a093f997a3c34a5c21658c126db06d" dependencies = [ "bitflags 1.3.2", "errno", @@ -2880,14 +2818,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.8" +version = "0.38.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" +checksum = "d2f9da0cbd88f9f09e7814e388301c8414c51c62aa6ce1e4b5c551d49d96e531" dependencies = [ "bitflags 2.4.0", "errno", "libc", - "linux-raw-sys 0.4.5", + "linux-raw-sys 0.4.8", "windows-sys", ] @@ -2987,38 +2925,38 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.183" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.183" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] name = "serde_json" -version = "1.0.104" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -3033,7 +2971,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -3059,9 +2997,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -3070,9 +3008,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -3081,19 +3019,13 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "c1b21f559e07218024e7e9f90f96f601825397de0e25420135f7f952453fed0b" dependencies = [ "lazy_static", ] -[[package]] -name = "shlex" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" - [[package]] name = "signal-hook" version = "0.3.17" @@ -3136,18 +3068,18 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" [[package]] name = "socket2" @@ -3161,9 +3093,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" dependencies = [ "libc", "windows-sys", @@ -3213,9 +3145,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.28" +version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ "proc-macro2", "quote", @@ -3249,35 +3181,35 @@ checksum = "af547b166dd1ea4b472165569fc456cfb6818116f854690b0ff205e636523dab" [[package]] name = "tempfile" -version = "3.7.1" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ "cfg-if", - "fastrand 2.0.0", + "fastrand 2.0.1", "redox_syscall", - "rustix 0.38.8", + "rustix 0.38.15", "windows-sys", ] [[package]] name = "thiserror" -version = "1.0.44" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.44" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -3292,9 +3224,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.25" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea" +checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" dependencies = [ "deranged", "itoa", @@ -3305,15 +3237,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ "time-core", ] @@ -3335,9 +3267,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.30.0" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3ce25f50619af8b0aec2eb23deebe84249e19e2ddd393a6e16e3300a6dadfd" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ "backtrace", "bytes", @@ -3346,7 +3278,7 @@ dependencies = [ "num_cpus", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.3", + "socket2 0.5.4", "tokio-macros", "tracing", "windows-sys", @@ -3360,7 +3292,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -3375,9 +3307,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" dependencies = [ "bytes", "futures-core", @@ -3389,9 +3321,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" dependencies = [ "serde", "serde_spanned", @@ -3410,11 +3342,11 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.19.14" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.0.2", "serde", "serde_spanned", "toml_datetime", @@ -3447,7 +3379,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] @@ -3478,9 +3410,9 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uds_windows" @@ -3494,9 +3426,9 @@ dependencies = [ [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] @@ -3509,9 +3441,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -3540,9 +3472,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -3579,15 +3511,15 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "waker-fn" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" [[package]] name = "walkdir" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -3629,7 +3561,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", "wasm-bindgen-shared", ] @@ -3663,7 +3595,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3702,9 +3634,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -3735,9 +3667,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -3750,62 +3682,63 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.10" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5504cc7644f4b593cbc05c4a55bf9bd4e94b867c3c0bd440934174d50482427d" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys", ] [[package]] @@ -3820,9 +3753,9 @@ dependencies = [ [[package]] name = "xmlparser" -version = "0.13.5" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd" +checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" [[package]] name = "zbar-rust" @@ -3913,7 +3846,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.37", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 1e56719..4878082 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,8 @@ rust-version = "1.70" adw = {package = "libadwaita", version = "0.5", features = ["v1_4"]} aes-gcm = "0.10" anyhow = "1.0" -ashpd = {version = "0.6", default-features = false, features = ["pipewire", "gtk4", "tokio", "tracing"]} +aperture = "0.3.2" +ashpd = {version = "0.6", default-features = false, features = ["gtk4", "tokio", "tracing"]} data-encoding = "2.3" diesel = {version = "2.0", features = ["sqlite", "r2d2"]} diesel_migrations = {version = "2.0", features = ["sqlite"]} @@ -17,9 +18,6 @@ futures-channel = "0.3" futures-executor = "0.3" futures-util = "0.3" gettext-rs = {version = "0.7", features = ["gettext-system"]} -gst = {package = "gstreamer", version = "0.21"} -gst_video = { package = "gstreamer-video", version = "0.21"} -gst4gtk = {package = "gst-plugin-gtk4", version = "0.11.0-alpha.1", features = ["wayland", "x11egl", "x11glx"]} gtk = {package = "gtk4", version = "0.7", features = ["v4_10"]} hex = {version = "0.4.3", features = ["serde"]} image = {version = "0.24", default-features = false, features = ["png"]} diff --git a/build-aux/com.belmoussaoui.Authenticator.Devel.json b/build-aux/com.belmoussaoui.Authenticator.Devel.json index ec32d2d..e93e745 100644 --- a/build-aux/com.belmoussaoui.Authenticator.Devel.json +++ b/build-aux/com.belmoussaoui.Authenticator.Devel.json @@ -15,7 +15,7 @@ "--socket=wayland", "--device=dri", "--talk-name=org.freedesktop.secrets", - "--env=RUST_LOG=authenticator=debug,ashpd=debug,oo7=debug", + "--env=RUST_LOG=authenticator=debug,ashpd=debug,oo7=debug,aperture=debug", "--env=G_MESSAGES_DEBUG=none", "--talk-name=org.gtk.vfs.*", "--filesystem=xdg-run/gvfs", diff --git a/data/resources/ui/account_add.ui b/data/resources/ui/account_add.ui index 819f8f9..fd43ec4 100644 --- a/data/resources/ui/account_add.ui +++ b/data/resources/ui/account_add.ui @@ -233,7 +233,6 @@ Camera camera - diff --git a/data/resources/ui/camera.ui b/data/resources/ui/camera.ui index a384d6c..398085b 100644 --- a/data/resources/ui/camera.ui +++ b/data/resources/ui/camera.ui @@ -57,8 +57,8 @@ - - False + + True diff --git a/po/POTFILES.in b/po/POTFILES.in index befba55..413d3dc 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -27,7 +27,6 @@ src/models/algorithm.rs src/widgets/accounts/add.rs src/widgets/accounts/details.rs src/widgets/accounts/row.rs -src/widgets/camera.rs src/widgets/preferences/password_page.rs src/widgets/preferences/window.rs src/widgets/providers/dialog.rs diff --git a/src/main.rs b/src/main.rs index 634101d..a7e8595 100644 --- a/src/main.rs +++ b/src/main.rs @@ -27,8 +27,7 @@ fn init_i18n() -> anyhow::Result<()> { fn main() -> glib::ExitCode { tracing_subscriber::fmt::init(); gtk::init().expect("failed to init gtk"); - gst::init().expect("failed to init gstreamer"); - gst4gtk::plugin_register_static().expect("Failed to register gstgtk4 plugin"); + aperture::init(config::APP_ID); if let Err(err) = init_i18n() { tracing::error!("Failed to initialize i18n {}", err); diff --git a/src/widgets/accounts/add.rs b/src/widgets/accounts/add.rs index fef2567..24d08c7 100644 --- a/src/widgets/accounts/add.rs +++ b/src/widgets/accounts/add.rs @@ -198,11 +198,6 @@ impl AccountAddDialog { name_entry.set_position(entry.cursor_position()); } - #[template_callback] - fn camera_page_hidden(&self, _page: &adw::NavigationPage) { - self.imp().camera.stop(); - } - #[template_callback] fn camera_closed(&self, _camera: Camera) { self.activate_action("add.previous", None).unwrap(); diff --git a/src/widgets/camera.rs b/src/widgets/camera.rs index b2208a6..7c9112d 100644 --- a/src/widgets/camera.rs +++ b/src/widgets/camera.rs @@ -1,22 +1,20 @@ -use std::cell::RefCell; +use std::cell::OnceCell; +use std::os::fd::RawFd; +use std::sync::Once; use adw::subclass::prelude::*; use anyhow::Result; use ashpd::desktop::screenshot::ScreenshotRequest; -use gettextrs::gettext; use glib::once_cell::sync::Lazy; -use gst::prelude::*; use gtk::{ gio, - glib::{self, clone, Receiver}, + glib::{self, clone}, prelude::*, }; use image::GenericImageView; -use super::{CameraItem, CameraRow}; -use crate::{utils::spawn_tokio, widgets::CameraPaintable}; - -static CAMERA_LOCATION: &str = "api.libcamera.location"; +use super::CameraRow; +use crate::utils::spawn_tokio; pub mod screenshot { use super::*; @@ -62,30 +60,18 @@ pub mod screenshot { } } -pub enum CameraEvent { - CodeDetected(String), - StreamStarted, -} - -pub enum CameraState { - NotFound, - Ready, -} - mod imp { use glib::subclass::{InitializingObject, Signal}; use super::*; - #[derive(gtk::CompositeTemplate)] + #[derive(gtk::CompositeTemplate, Default)] #[template(resource = "/com/belmoussaoui/Authenticator/camera.ui")] pub struct Camera { - pub paintable: CameraPaintable, - pub receiver: RefCell>>, #[template_child] pub stack: TemplateChild, #[template_child] - pub picture: TemplateChild, + pub viewfinder: TemplateChild, #[template_child] pub spinner: TemplateChild, #[template_child] @@ -94,8 +80,8 @@ mod imp { pub camera_selection_button: TemplateChild, #[template_child] pub toolbar_view: TemplateChild, - pub stream_list: gio::ListStore, pub selection: gtk::SingleSelection, + pub provider: OnceCell, } #[glib::object_subclass] @@ -113,24 +99,6 @@ mod imp { fn instance_init(obj: &InitializingObject) { obj.init_template(); } - - fn new() -> Self { - let (sender, r) = glib::MainContext::channel(glib::Priority::default()); - let receiver = RefCell::new(Some(r)); - - Self { - paintable: CameraPaintable::new(sender), - receiver, - camera_selection_button: TemplateChild::default(), - spinner: TemplateChild::default(), - stack: TemplateChild::default(), - picture: TemplateChild::default(), - screenshot: TemplateChild::default(), - toolbar_view: TemplateChild::default(), - stream_list: gio::ListStore::new::(), - selection: Default::default(), - } - } } impl ObjectImpl for Camera { @@ -150,14 +118,67 @@ mod imp { fn constructed(&self) { self.parent_constructed(); let obj = self.obj(); - obj.setup_receiver(); - obj.setup_widget(); - obj.set_state(CameraState::NotFound); - self.picture.set_paintable(Some(&self.paintable)); - } - fn dispose(&self) { - self.paintable.close_pipeline(); + let provider = aperture::DeviceProvider::instance(); + self.provider.set(provider.clone()).unwrap(); + + self.viewfinder + .connect_state_notify(glib::clone!(@weak obj => move |_| { + obj.update_viewfinder_state(); + })); + obj.update_viewfinder_state(); + + self.viewfinder.connect_code_detected( + glib::clone!(@weak obj => move|_, code_type, code| { + if matches!(code_type, aperture::CodeType::Qr) { + obj.emit_by_name::<()>("code-detected", &[&code]); + } + }), + ); + + let popover = gtk::Popover::new(); + popover.add_css_class("menu"); + + self.selection.set_model(Some(provider)); + let factory = gtk::SignalListItemFactory::new(); + factory.connect_setup(|_, item| { + let camera_row = CameraRow::default(); + + item.downcast_ref::() + .unwrap() + .set_child(Some(&camera_row)); + }); + let selection = &self.selection; + factory.connect_bind(glib::clone!(@weak selection => move |_, item| { + let item = item.downcast_ref::().unwrap(); + let child = item.child().unwrap(); + let row = child.downcast_ref::().unwrap(); + + let item = item.item().and_downcast::().unwrap(); + row.set_label(&item.display_name()); + + selection.connect_selected_item_notify(glib::clone!(@weak row, @weak item => move |selection| { + if let Some(selected_item) = selection.selected_item() { + row.set_selected(selected_item == item); + } else { + row.set_selected(false); + } + })); + })); + let list_view = gtk::ListView::new(Some(self.selection.clone()), Some(factory)); + popover.set_child(Some(&list_view)); + + self.selection.connect_selected_item_notify( + glib::clone!(@weak obj, @weak popover => move |selection| { + if let Some(selected_item) = selection.selected_item() { + let camera = selected_item.downcast_ref::(); + obj.imp().viewfinder.set_camera(camera); + } + popover.popdown(); + }), + ); + + self.camera_selection_button.set_popover(Some(&popover)); } } @@ -172,19 +193,6 @@ glib::wrapper! { #[gtk::template_callbacks] impl Camera { - pub fn start(&self) { - let imp = self.imp(); - imp.paintable.start(); - self.set_state(CameraState::Ready); - } - - pub fn stop(&self) { - let imp = self.imp(); - imp.paintable.stop(); - imp.stream_list.remove_all(); - imp.selection.set_selected(gtk::INVALID_LIST_POSITION); - } - pub fn connect_close(&self, callback: F) -> glib::SignalHandlerId where F: Fn(&Self) + 'static, @@ -214,46 +222,27 @@ impl Camera { ) } - fn set_streams(&self, streams: Vec) { - let imp = self.imp(); - let mut selected_stream = 0; - for (id, stream) in streams.into_iter().enumerate() { - let default = gettext("Unknown Device"); - let nick = stream - .properties() - .get("node.nick") - .unwrap_or(&default) - .to_string(); + pub async fn scan_from_camera(&self) { + static INIT: Once = Once::new(); + if INIT.is_completed() { + return; + } - if let Some(location) = stream.properties().get(CAMERA_LOCATION) { - if location == "front" { - selected_stream = id; + let provider = self.imp().provider.get().unwrap(); + match spawn_tokio(stream()).await { + Ok(fd) => { + if let Err(err) = provider.set_fd(fd) { + tracing::error!("Could not use the camera portal: {err}"); + } else { + if let Err(err) = provider.start() { + tracing::error!("Could not start the device provider: {err}"); + } else { + tracing::debug!("Device provider started"); + INIT.call_once(|| ()); + }; } } - - let item = CameraItem { - nick, - node_id: stream.node_id(), - }; - imp.stream_list.append(&glib::BoxedAnyObject::new(item)); - } - imp.selection.set_selected(selected_stream as u32); - } - - pub async fn scan_from_camera(&self) { - match spawn_tokio(ashpd::desktop::camera::request()).await { - Ok(Some((stream_fd, nodes_id))) => { - match self.imp().paintable.set_pipewire_fd(stream_fd) { - Ok(_) => { - self.set_streams(nodes_id); - } - Err(err) => tracing::error!("Failed to start the camera stream {err}"), - }; - } - Ok(None) => { - self.set_state(CameraState::NotFound); - } - Err(e) => tracing::error!("Failed to stream {}", e), + Err(err) => tracing::error!("Failed to start the camera portal: {err}"), } } @@ -273,93 +262,38 @@ impl Camera { Ok(()) } - fn set_state(&self, state: CameraState) { + fn update_viewfinder_state(&self) { let imp = self.imp(); + let state = imp.viewfinder.state(); match state { - CameraState::NotFound => { - tracing::info!("The camera state changed: Not Found"); - imp.stack.set_visible_child_name("not-found"); - imp.toolbar_view.set_extend_content_to_top_edge(false); - imp.toolbar_view.remove_css_class("extended"); + aperture::ViewfinderState::Loading => { + imp.stack.set_visible_child_name("loading"); } - CameraState::Ready => { - tracing::info!("The camera state changed: Ready"); + aperture::ViewfinderState::Error => { + imp.stack.set_visible_child_name("not-found"); + } + aperture::ViewfinderState::NoCameras => { + imp.stack.set_visible_child_name("not-found"); + } + aperture::ViewfinderState::Ready => { imp.stack.set_visible_child_name("stream"); - imp.toolbar_view.set_extend_content_to_top_edge(true); - imp.toolbar_view.add_css_class("extended"); - imp.spinner.stop(); } } - } + tracing::info!("The camera state changed: {state:?}"); - fn setup_receiver(&self) { - self.imp().receiver.borrow_mut().take().unwrap().attach( - None, - glib::clone!(@weak self as camera => @default-return glib::ControlFlow::Break, move |event| { - match event { - CameraEvent::CodeDetected(code) => { - camera.emit_by_name::<()>("code-detected", &[&code]); - } - CameraEvent::StreamStarted => { - camera.set_state(CameraState::Ready); - } - } - glib::ControlFlow::Continue - }), - ); - } + let is_ready = matches!(state, aperture::ViewfinderState::Ready); + imp.toolbar_view.set_extend_content_to_top_edge(is_ready); + if is_ready { + imp.toolbar_view.add_css_class("extended"); + } else { + imp.toolbar_view.remove_css_class("extended"); + } - fn setup_widget(&self) { - let imp = self.imp(); - let popover = gtk::Popover::new(); - popover.add_css_class("menu"); - - imp.selection.set_model(Some(&imp.stream_list)); - let factory = gtk::SignalListItemFactory::new(); - factory.connect_setup(|_, item| { - let camera_row = CameraRow::default(); - - item.downcast_ref::() - .unwrap() - .set_child(Some(&camera_row)); - }); - let selection = &imp.selection; - factory.connect_bind(glib::clone!(@weak selection => move |_, item| { - let item = item.downcast_ref::().unwrap(); - let child = item.child().unwrap(); - let row = child.downcast_ref::().unwrap(); - - let item = item.item().and_downcast::().unwrap(); - let camera_item = item.borrow::(); - row.set_label(&camera_item.nick); - - selection.connect_selected_item_notify(glib::clone!(@weak row, @weak item => move |selection| { - if let Some(selected_item) = selection.selected_item() { - row.set_selected(selected_item == item); - } else { - row.set_selected(false); - } - })); - })); - let list_view = gtk::ListView::new(Some(imp.selection.clone()), Some(factory)); - popover.set_child(Some(&list_view)); - - imp.selection.connect_selected_item_notify(glib::clone!(@weak self as obj, @weak popover => move |selection| { - if let Some(selected_item) = selection.selected_item() { - let node_id = selected_item.downcast_ref::().unwrap().borrow::().node_id; - match obj.imp().paintable.set_pipewire_node_id(node_id) { - Ok(_) => { - obj.start(); - }, - Err(err) => { - tracing::error!("Failed to start a camera stream {err}"); - } - } - } - popover.popdown(); - })); - - imp.camera_selection_button.set_popover(Some(&popover)); + if matches!(state, aperture::ViewfinderState::Loading) { + imp.spinner.start(); + } else { + imp.spinner.stop(); + } } #[template_callback] @@ -375,3 +309,10 @@ impl Default for Camera { glib::Object::new() } } + +async fn stream() -> ashpd::Result { + let proxy = ashpd::desktop::camera::Camera::new().await?; + proxy.request_access().await?; + + proxy.open_pipe_wire_remote().await +} diff --git a/src/widgets/camera_paintable.rs b/src/widgets/camera_paintable.rs deleted file mode 100644 index 4e4a6c5..0000000 --- a/src/widgets/camera_paintable.rs +++ /dev/null @@ -1,265 +0,0 @@ -use std::os::unix::io::AsRawFd; - -use glib::once_cell::sync::Lazy; -use gst::prelude::*; -use gtk::{ - gdk, - glib::{self, clone, Sender}, - graphene, - prelude::*, - subclass::prelude::*, -}; - -use crate::widgets::camera::CameraEvent; -static PIPELINE_NAME: Lazy = Lazy::new(|| glib::GString::from("camera")); -/// Fancy Camera with QR code detection using ZBar -/// -/// Pipeline: -/// queue -- videoconvert -- zbar -- fakesink -/// / -/// pipewiresrc -- tee -/// \ -/// queue -- videoflip - glsinkbin -mod imp { - use std::cell::RefCell; - - use super::*; - - #[derive(Default)] - pub struct CameraPaintable { - pub sender: RefCell>>, - pub pipeline: RefCell>, - pub pipewire_element: RefCell>, - pub sink_paintable: RefCell>, - pub guard: RefCell>, - } - - #[glib::object_subclass] - impl ObjectSubclass for CameraPaintable { - const NAME: &'static str = "CameraPaintable"; - type Type = super::CameraPaintable; - type Interfaces = (gdk::Paintable,); - } - - impl ObjectImpl for CameraPaintable { - fn dispose(&self) { - self.obj().close_pipeline(); - } - } - - impl PaintableImpl for CameraPaintable { - fn intrinsic_height(&self) -> i32 { - if let Some(ref paintable) = *self.sink_paintable.borrow() { - paintable.intrinsic_height() - } else { - 0 - } - } - - fn intrinsic_width(&self) -> i32 { - if let Some(ref paintable) = *self.sink_paintable.borrow() { - paintable.intrinsic_width() - } else { - 0 - } - } - - fn snapshot(&self, snapshot: &gdk::Snapshot, width: f64, height: f64) { - if let Some(ref image) = *self.sink_paintable.borrow() { - // Transformation to avoid stretching the camera. We translate and scale the - // image. - let aspect = width / height.max(std::f64::EPSILON); // Do not divide by zero. - let image_aspect = image.intrinsic_aspect_ratio(); - - if image_aspect == 0.0 { - image.snapshot(snapshot, width, height); - return; - }; - - let (new_width, new_height) = match aspect <= image_aspect { - true => (height * image_aspect, height), // Mobile view - false => (width, width / image_aspect), // Landscape - }; - - let p = graphene::Point::new( - ((width - new_width) / 2.0) as f32, - ((height - new_height) / 2.0) as f32, - ); - snapshot.translate(&p); - - image.snapshot(snapshot, new_width, new_height); - } else { - snapshot.append_color( - &gdk::RGBA::BLACK, - &graphene::Rect::new(0f32, 0f32, width as f32, height as f32), - ); - } - } - } -} - -glib::wrapper! { - pub struct CameraPaintable(ObjectSubclass) - @implements gdk::Paintable; -} - -impl CameraPaintable { - pub fn new(sender: Sender) -> Self { - let paintable = glib::Object::new::(); - paintable.imp().sender.replace(Some(sender)); - paintable - } - - pub fn set_pipewire_node_id(&self, node_id: u32) -> anyhow::Result<()> { - let pipewire_element = self.imp().pipewire_element.borrow().clone().unwrap(); - pipewire_element.set_property("path", node_id.to_string()); - tracing::debug!("Loading PipeWire Node ID: {node_id}"); - self.close_pipeline(); - self.init_pipeline(&pipewire_element)?; - Ok(()) - } - - pub fn set_pipewire_fd(&self, fd: F) -> anyhow::Result<()> { - let raw_fd = fd.as_raw_fd(); - let pipewire_element = gst::ElementFactory::make_with_name("pipewiresrc", None)?; - pipewire_element.set_property("fd", raw_fd); - tracing::debug!("Loading PipeWire with FD: {}", raw_fd); - self.imp().pipewire_element.replace(Some(pipewire_element)); - Ok(()) - } - - fn init_pipeline(&self, pipewire_src: &gst::Element) -> anyhow::Result<()> { - tracing::debug!("Init pipeline"); - let imp = self.imp(); - let pipeline = gst::Pipeline::new(); - - let sink = gst::ElementFactory::make_with_name("gtk4paintablesink", None)?; - let paintable = sink.property::("paintable"); - - paintable.connect_invalidate_contents(clone!(@weak self as pt => move |_| { - pt.invalidate_contents(); - })); - - paintable.connect_invalidate_size(clone!(@weak self as pt => move |_| { - pt.invalidate_size(); - })); - let tee = gst::ElementFactory::make_with_name("tee", None)?; - let videoconvert = gst::ElementFactory::make_with_name("videoconvert", None)?; - let queue1 = gst::ElementFactory::make_with_name("queue", None)?; - let queue2 = gst::ElementFactory::make_with_name("queue", None)?; - let zbar = gst::ElementFactory::make_with_name("zbar", None)?; - let fakesink = gst::ElementFactory::make_with_name("fakesink", None)?; - - let videoflip = gst::ElementFactory::make("videoflip") - .property("video-direction", gst_video::VideoOrientationMethod::Auto) - .build()?; - - let sink = if paintable - .property::>("gl-context") - .is_some() - { - gst::ElementFactory::make("glsinkbin") - .property("sink", &sink) - .build()? - } else { - let bin = gst::Bin::default(); - let convert = gst::ElementFactory::make_with_name("videoconvert", None)?; - - bin.add(&convert)?; - bin.add(&sink)?; - convert.link(&sink)?; - - bin.add_pad( - &gst::GhostPad::builder_with_target(&convert.static_pad("sink").unwrap())? - .name("sink") - .build(), - )?; - - bin.upcast() - }; - imp.sink_paintable.replace(Some(paintable)); - - pipeline.add_many([ - pipewire_src, - &tee, - &queue1, - &videoconvert, - &zbar, - &fakesink, - &queue2, - &videoflip, - &sink, - ])?; - - gst::Element::link_many([pipewire_src, &tee, &queue1, &videoconvert, &zbar, &fakesink])?; - tee.link_pads(None, &queue2, None)?; - gst::Element::link_many([&queue2, &videoflip, &sink])?; - - let bus = pipeline.bus().unwrap(); - let guard = bus.add_watch_local( - clone!(@weak self as paintable => @default-return glib::ControlFlow::Break, move |_, msg| { - use gst::MessageView; - let sender = paintable.imp().sender.borrow().as_ref().unwrap().clone(); - match msg.view() { - MessageView::Error(err) => { - tracing::error!( - "Error from {:?}: {} ({:?})", - err.src().map(|s| s.path_string()), - err.error(), - err.debug() - ); - } - MessageView::StateChanged(state) => { - if Some(&*PIPELINE_NAME) == state.src().map(|s| s.name()).as_ref() { - let structure = state.structure().unwrap(); - let new_state = structure.get::("new-state") - .unwrap(); - if new_state == gst::State::Playing { - sender.send(CameraEvent::StreamStarted).unwrap(); - } - } - } - MessageView::Element(e) => { - if let Some(s) = e.structure() { - if let Ok(symbol) = s.get::("symbol") { - sender.send(CameraEvent::CodeDetected(symbol)).unwrap(); - } - } - } - _ => (), - } - glib::ControlFlow::Continue - - }), - )?; - imp.guard.replace(Some(guard)); - imp.pipeline.replace(Some(pipeline)); - Ok(()) - } - - pub fn close_pipeline(&self) { - tracing::debug!("Closing pipeline"); - if let Some(pipeline) = self.imp().pipeline.take() { - if let Err(err) = pipeline.set_state(gst::State::Null) { - tracing::error!("Failed to close the pipeline: {err}"); - } - } - let _ = self.imp().guard.take(); - } - - pub fn start(&self) { - if let Some(pipeline) = &*self.imp().pipeline.borrow() { - if let Err(err) = pipeline.set_state(gst::State::Playing) { - tracing::error!("Failed to start the camera stream: {err}"); - } - } - } - - pub fn stop(&self) { - if let Some(pipeline) = &*self.imp().pipeline.borrow() { - if let Err(err) = pipeline.set_state(gst::State::Null) { - tracing::error!("Failed to stop the camera stream: {err}"); - } - } - } -} diff --git a/src/widgets/camera_row.rs b/src/widgets/camera_row.rs index 33601c0..6f7daed 100644 --- a/src/widgets/camera_row.rs +++ b/src/widgets/camera_row.rs @@ -1,12 +1,5 @@ use gtk::{glib, prelude::*, subclass::prelude::*}; -#[derive(Clone, glib::Boxed)] -#[boxed_type(name = "CameraItem")] -pub struct CameraItem { - pub nick: String, - pub node_id: u32, -} - mod imp { use super::*; @@ -59,8 +52,4 @@ impl CameraRow { pub fn set_selected(&self, selected: bool) { self.imp().checkmark.set_visible(selected); } - - pub fn set_item(&self, item: &CameraItem) { - self.imp().label.set_label(&item.nick); - } } diff --git a/src/widgets/mod.rs b/src/widgets/mod.rs index e77901a..56702dd 100644 --- a/src/widgets/mod.rs +++ b/src/widgets/mod.rs @@ -1,6 +1,5 @@ mod accounts; mod camera; -mod camera_paintable; mod camera_row; mod error_revealer; mod keyring_error_dialog; @@ -12,9 +11,8 @@ mod window; pub use self::{ accounts::{AccountAddDialog, QRCodeData}, - camera::{screenshot, Camera, CameraEvent}, - camera_paintable::CameraPaintable, - camera_row::{CameraItem, CameraRow}, + camera::{screenshot, Camera}, + camera_row::CameraRow, error_revealer::ErrorRevealer, keyring_error_dialog::KeyringErrorDialog, preferences::PreferencesWindow, diff --git a/src/widgets/preferences/window.rs b/src/widgets/preferences/window.rs index 6a10720..ecded9d 100644 --- a/src/widgets/preferences/window.rs +++ b/src/widgets/preferences/window.rs @@ -531,7 +531,6 @@ impl PreferencesWindow { let close_page = gio::ActionEntry::builder("close_page") .activate(clone!(@weak self as win => move |_, _, _| { win.pop_subpage(); - win.imp().camera_page.imp().camera.stop(); })) .build();