From 172532056b404923b0bc068b524b23e81a371f18 Mon Sep 17 00:00:00 2001 From: wiiznokes <78230769+wiiznokes@users.noreply.github.com> Date: Sat, 13 Jul 2024 01:13:17 +0200 Subject: [PATCH] improv: desktop entries update --- Cargo.lock | 658 +++++++++--------- Cargo.toml | 40 +- bin/Cargo.toml | 10 +- bin/src/main.rs | 31 +- plugins/Cargo.toml | 29 +- plugins/src/calc/mod.rs | 8 +- plugins/src/cosmic_toplevel/mod.rs | 2 +- .../src/cosmic_toplevel/toplevel_handler.rs | 1 + plugins/src/desktop_entries/mod.rs | 326 +++------ plugins/src/desktop_entries/utils.rs | 1 - plugins/src/lib.rs | 2 +- plugins/src/pop_shell/mod.rs | 17 +- plugins/src/pulse/mod.rs | 2 +- plugins/src/scripts/mod.rs | 4 +- plugins/src/terminal/mod.rs | 30 +- plugins/src/web/mod.rs | 8 +- service/Cargo.toml | 27 +- service/src/lib.rs | 1 - service/src/plugins/config.rs | 8 +- service/src/plugins/external/mod.rs | 7 +- service/src/plugins/mod.rs | 2 - service/src/priority.rs | 2 + src/lib.rs | 2 +- toolkit/Cargo.toml | 2 +- toolkit/examples/man-pages-plugin.rs | 2 +- 25 files changed, 559 insertions(+), 663 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 458c31c..544a5ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -43,56 +43,56 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.82" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "async-broadcast" -version = "0.5.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" dependencies = [ - "event-listener 2.5.3", + "event-listener 5.3.1", + "event-listener-strategy", "futures-core", + "pin-project-lite", ] [[package]] name = "async-channel" -version = "2.2.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 5.3.0", - "event-listener-strategy 0.5.1", + "event-listener-strategy", "futures-core", "pin-project-lite", ] [[package]] name = "async-executor" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a" +checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.0.2", + "fastrand 2.1.0", "futures-lite 2.3.0", "slab", ] [[package]] name = "async-fs" -version = "1.6.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" dependencies = [ - "async-lock 2.8.0", - "autocfg", + "async-lock 3.4.0", "blocking", - "futures-lite 1.13.0", + "futures-lite 2.3.0", ] [[package]] @@ -117,18 +117,18 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" dependencies = [ - "async-lock 3.3.0", + "async-lock 3.4.0", "cfg-if", "concurrent-queue", "futures-io", "futures-lite 2.3.0", "parking", - "polling 3.6.0", - "rustix 0.38.32", + "polling 3.7.1", + "rustix 0.38.34", "slab", "tracing", "windows-sys 0.52.0", @@ -145,12 +145,12 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy 0.4.0", + "event-listener 5.3.1", + "event-listener-strategy", "pin-project-lite", ] @@ -175,55 +175,58 @@ dependencies = [ [[package]] name = "async-process" -version = "1.8.1" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" +checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" dependencies = [ - "async-io 1.13.0", - "async-lock 2.8.0", + "async-channel", + "async-io 2.3.3", + "async-lock 3.4.0", "async-signal", + "async-task", "blocking", "cfg-if", - "event-listener 3.1.0", - "futures-lite 1.13.0", - "rustix 0.38.32", - "windows-sys 0.48.0", + "event-listener 5.3.1", + "futures-lite 2.3.0", + "rustix 0.38.34", + "tracing", + "windows-sys 0.52.0", ] [[package]] name = "async-recursion" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] name = "async-signal" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" dependencies = [ - "async-io 2.3.2", - "async-lock 2.8.0", + "async-io 2.3.3", + "async-lock 3.4.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.32", + "rustix 0.38.34", "signal-hook-registry", "slab", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "async-task" -version = "4.7.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" @@ -233,7 +236,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] @@ -244,15 +247,15 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11" dependencies = [ "addr2line", "cc", @@ -271,9 +274,9 @@ checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" @@ -307,18 +310,15 @@ dependencies = [ [[package]] name = "blocking" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ "async-channel", - "async-lock 3.3.0", "async-task", - "fastrand 2.0.2", "futures-io", "futures-lite 2.3.0", "piper", - "tracing", ] [[package]] @@ -329,30 +329,24 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" +checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - [[package]] name = "bytes" version = "0.5.6" @@ -373,8 +367,8 @@ checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ "bitflags 2.5.0", "log", - "polling 3.6.0", - "rustix 0.38.32", + "polling 3.7.1", + "rustix 0.38.34", "slab", "thiserror", ] @@ -386,16 +380,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" dependencies = [ "calloop", - "rustix 0.38.32", + "rustix 0.38.34", "wayland-backend", "wayland-client", ] [[package]] name = "cc" -version = "1.0.94" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" +checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" [[package]] name = "cfg-if" @@ -403,6 +397,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "chrono" version = "0.4.38" @@ -418,9 +418,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] @@ -454,7 +454,7 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cosmic-client-toolkit" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-protocols#e4e6f8ca4d7c239c02a8cdfd48a74cb0969425eb" +source = "git+https://github.com/pop-os/cosmic-protocols#f16efccaffdbe60b81d1a500be6e81851dc1dad4" dependencies = [ "cosmic-protocols", "libc", @@ -465,12 +465,13 @@ dependencies = [ [[package]] name = "cosmic-protocols" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-protocols#e4e6f8ca4d7c239c02a8cdfd48a74cb0969425eb" +source = "git+https://github.com/pop-os/cosmic-protocols#f16efccaffdbe60b81d1a500be6e81851dc1dad4" dependencies = [ "bitflags 2.5.0", "wayland-backend", "wayland-client", - "wayland-protocols", + "wayland-protocols 0.32.1", + "wayland-protocols-wlr 0.3.1", "wayland-scanner", "wayland-server", ] @@ -486,9 +487,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crypto-common" @@ -508,9 +509,9 @@ checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" [[package]] name = "darling" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" dependencies = [ "darling_core", "darling_macro", @@ -518,27 +519,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", - "syn 2.0.60", + "strsim", + "syn 2.0.66", ] [[package]] name = "darling_macro" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] @@ -551,17 +552,6 @@ dependencies = [ "serde", ] -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "digest" version = "0.10.7" @@ -629,10 +619,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] -name = "enumflags2" -version = "0.7.9" +name = "endi" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" dependencies = [ "enumflags2_derive", "serde", @@ -640,13 +636,13 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] @@ -657,9 +653,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -673,31 +669,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "3.1.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", @@ -706,21 +680,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 4.0.3", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" -dependencies = [ - "event-listener 5.3.0", + "event-listener 5.3.1", "pin-project-lite", ] @@ -735,9 +699,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "flume" @@ -777,14 +741,15 @@ dependencies = [ [[package]] name = "freedesktop-desktop-entry" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fefe79ec93a6aeaa938981fe3e11b4ed1b2f9deacc6bb631585bc48252d1bfa" +checksum = "e33809936d2fa9ac78750c5c04696a7aabdb09f928454957c77a2c8247f5ff98" dependencies = [ "dirs 5.0.1", "gettext-rs", + "log", "memchr", - "strsim 0.11.1", + "strsim", "textdistance", "thiserror", "xdg", @@ -859,7 +824,7 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.0.2", + "fastrand 2.1.0", "futures-core", "futures-io", "parking", @@ -874,7 +839,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] @@ -949,9 +914,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -982,9 +947,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "hashbrown" @@ -994,9 +959,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hermit-abi" @@ -1100,9 +1065,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" dependencies = [ "bytes 1.6.0", "futures-channel", @@ -1111,7 +1076,7 @@ dependencies = [ "http-body", "hyper", "pin-project-lite", - "socket2 0.5.6", + "socket2 0.5.7", "tokio", "tower", "tower-service", @@ -1175,15 +1140,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "serde", ] [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -1234,9 +1199,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" @@ -1250,9 +1215,9 @@ dependencies = [ [[package]] name = "libmimalloc-sys" -version = "0.1.35" +version = "0.1.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664" +checksum = "0e7bb23d733dfcc8af652a78b7bf232f0e967710d044732185e561e47c0336b6" dependencies = [ "cc", "libc", @@ -1276,9 +1241,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "locale_config" @@ -1295,9 +1260,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -1351,15 +1316,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.1" @@ -1371,9 +1327,9 @@ dependencies = [ [[package]] name = "mimalloc" -version = "0.1.39" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c" +checksum = "e9186d86b79b52f4a77af65604b51225e8db1d6ee7e3f41aec1e40829c71a176" dependencies = [ "libmimalloc-sys", ] @@ -1386,9 +1342,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" dependencies = [ "adler", ] @@ -1425,14 +1381,15 @@ dependencies = [ [[package]] name = "nix" -version = "0.26.4" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "cfg-if", + "cfg_aliases", "libc", - "memoffset 0.7.1", + "memoffset", ] [[package]] @@ -1443,9 +1400,9 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -1497,9 +1454,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" dependencies = [ "memchr", ] @@ -1575,7 +1532,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] @@ -1592,12 +1549,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" dependencies = [ "atomic-waker", - "fastrand 2.0.2", + "fastrand 2.1.0", "futures-io", ] @@ -1625,15 +1582,15 @@ dependencies = [ [[package]] name = "polling" -version = "3.6.0" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6" +checksum = "5e6a007746f34ed64099e88783b0ae369eaa3da6392868ba262e2af9b8fbaea1" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 0.38.32", + "rustix 0.38.34", "tracing", "windows-sys 0.52.0", ] @@ -1689,14 +1646,13 @@ dependencies = [ "serde_json", "slab", "smithay-client-toolkit", - "strsim 0.11.1", + "strsim", "switcheroo-control", "sysfs-class", "tokio", "tracing", "url", "urlencoding", - "ward", "zbus", "zvariant", ] @@ -1721,12 +1677,11 @@ dependencies = [ "serde_json", "serde_with", "slab", - "strsim 0.11.1", + "strsim", "tokio", "tokio-stream", "toml", "tracing", - "tracing-subscriber", ] [[package]] @@ -1759,19 +1714,18 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "once_cell", - "toml_edit 0.19.15", + "toml_edit 0.21.1", ] [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" dependencies = [ "unicode-ident", ] @@ -1897,7 +1851,7 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "bytes 1.6.0", "futures-core", "futures-util", @@ -1961,9 +1915,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustix" @@ -1981,14 +1935,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ "bitflags 2.5.0", "errno", "libc", - "linux-raw-sys 0.4.13", + "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] @@ -2012,21 +1966,21 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" -version = "0.102.2" +version = "0.102.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" +checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" dependencies = [ "ring", "rustls-pki-types", @@ -2035,9 +1989,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scoped-tls" @@ -2053,9 +2007,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.198" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] @@ -2074,20 +2028,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", "ryu", @@ -2102,14 +2056,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ "serde", ] @@ -2128,11 +2082,11 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.7.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", @@ -2146,14 +2100,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.7.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6561dc161a9224638a31d876ccdfefbc1df91d3f3a8342eddb35f055d48c7655" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] @@ -2178,9 +2132,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -2214,14 +2168,14 @@ dependencies = [ "log", "memmap2 0.9.4", "pkg-config", - "rustix 0.38.32", + "rustix 0.38.34", "thiserror", "wayland-backend", "wayland-client", "wayland-csd-frame", "wayland-cursor", - "wayland-protocols", - "wayland-protocols-wlr", + "wayland-protocols 0.31.2", + "wayland-protocols-wlr 0.2.0", "wayland-scanner", "xkbcommon", "xkeysym", @@ -2239,9 +2193,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -2262,12 +2216,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - [[package]] name = "strsim" version = "0.11.1" @@ -2283,7 +2231,7 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "switcheroo-control" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#ce9c789fe6c26d01487fe37e968a8f88047e95e0" +source = "git+https://github.com/pop-os/dbus-settings-bindings#badfc6a0bbe7c93927fe32692795699a675ae4c4" dependencies = [ "zbus", ] @@ -2301,9 +2249,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.60" +version = "2.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" dependencies = [ "proc-macro2", "quote", @@ -2338,8 +2286,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", - "fastrand 2.0.2", - "rustix 0.38.32", + "fastrand 2.1.0", + "rustix 0.38.34", "windows-sys 0.52.0", ] @@ -2351,22 +2299,22 @@ checksum = "d321c8576c2b47e43953e9cce236550d4cd6af0a6ce518fe084340082ca6037b" [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] @@ -2427,9 +2375,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "bytes 1.6.0", @@ -2437,20 +2385,20 @@ dependencies = [ "mio", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.6", + "socket2 0.5.7", "tokio-macros", "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] @@ -2477,30 +2425,30 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.12" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.12", + "toml_edit 0.22.14", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.15" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap 2.2.6", "toml_datetime", @@ -2509,15 +2457,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.12" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" +checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.6", + "winnow 0.6.13", ] [[package]] @@ -2533,7 +2481,6 @@ dependencies = [ "tokio", "tower-layer", "tower-service", - "tracing", ] [[package]] @@ -2554,7 +2501,6 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -2568,7 +2514,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", ] [[package]] @@ -2586,6 +2532,7 @@ version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ + "chrono", "matchers", "once_cell", "regex", @@ -2613,7 +2560,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" dependencies = [ - "memoffset 0.9.1", + "memoffset", "tempfile", "winapi", ] @@ -2685,9 +2632,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "waker-fn" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] name = "want" @@ -2698,12 +2645,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "ward" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cbcd609d606e1307a1530061482ed2ee3fc9963128990238cefb2013127b61e" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -2731,7 +2672,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", "wasm-bindgen-shared", ] @@ -2765,7 +2706,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.66", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2778,13 +2719,13 @@ checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wayland-backend" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" +checksum = "34e9e6b6d4a2bb4e7e69433e0b35c7923b95d4dc8503a84d25ec917a4bbfdf07" dependencies = [ "cc", "downcast-rs", - "rustix 0.38.32", + "rustix 0.38.34", "scoped-tls", "smallvec", "wayland-sys", @@ -2792,12 +2733,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.2" +version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" +checksum = "1e63801c85358a431f986cffa74ba9599ff571fc5774ac113ed3b490c19a1133" dependencies = [ "bitflags 2.5.0", - "rustix 0.38.32", + "rustix 0.38.34", "wayland-backend", "wayland-scanner", ] @@ -2815,11 +2756,11 @@ dependencies = [ [[package]] name = "wayland-cursor" -version = "0.31.1" +version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" +checksum = "a206e8b2b53b1d3fcb9428fec72bc278ce539e2fa81fe2bfc1ab27703d5187b9" dependencies = [ - "rustix 0.38.32", + "rustix 0.38.34", "wayland-client", "xcursor", ] @@ -2829,6 +2770,18 @@ name = "wayland-protocols" version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +dependencies = [ + "bitflags 2.5.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d0f1056570486e26a3773ec633885124d79ae03827de05ba6c85f79904026c" dependencies = [ "bitflags 2.5.0", "wayland-backend", @@ -2846,15 +2799,29 @@ dependencies = [ "bitflags 2.5.0", "wayland-backend", "wayland-client", - "wayland-protocols", + "wayland-protocols 0.31.2", "wayland-scanner", ] [[package]] -name = "wayland-scanner" -version = "0.31.1" +name = "wayland-protocols-wlr" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" +checksum = "a7dab47671043d9f5397035975fe1cac639e5bca5cc0b3c32d09f01612e34d24" +dependencies = [ + "bitflags 2.5.0", + "wayland-backend", + "wayland-client", + "wayland-protocols 0.32.1", + "wayland-scanner", + "wayland-server", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67da50b9f80159dec0ea4c11c13e24ef9e7574bd6ce24b01860a175010cea565" dependencies = [ "proc-macro2", "quick-xml", @@ -2863,23 +2830,23 @@ dependencies = [ [[package]] name = "wayland-server" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e6e4d5c285bc24ba4ed2d5a4bd4febd5fd904451f465973225c8e99772fdb7" +checksum = "63e89118bd072ba6ce0f9c2c92fa41f72d1d78a138d2abc497a80a8264565559" dependencies = [ "bitflags 2.5.0", "downcast-rs", "io-lifetimes 2.0.3", - "rustix 0.38.32", + "rustix 0.38.34", "wayland-backend", "wayland-scanner", ] [[package]] name = "wayland-sys" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +checksum = "105b1842da6554f91526c14a2a2172897b7f745a805d62af4ce698706be79c12" dependencies = [ "dlib", "log", @@ -2898,9 +2865,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +checksum = "3c452ad30530b54a4d8e71952716a212b08efd0f3562baa66c29a618b07da7c3" dependencies = [ "rustls-pki-types", ] @@ -3086,9 +3053,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.6" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" dependencies = [ "memchr", ] @@ -3117,12 +3084,12 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "xdg-home" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" dependencies = [ "libc", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -3138,9 +3105,9 @@ dependencies = [ [[package]] name = "xkeysym" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" dependencies = [ "bytemuck", ] @@ -3153,30 +3120,27 @@ checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" [[package]] name = "zbus" -version = "3.15.2" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6" +checksum = "989c3977a7aafa97b12b9a35d21cdcff9b0d2289762b14683f45d66b1ba6c48f" dependencies = [ "async-broadcast", "async-executor", "async-fs", - "async-io 1.13.0", - "async-lock 2.8.0", + "async-io 2.3.3", + "async-lock 3.4.0", "async-process", "async-recursion", "async-task", "async-trait", "blocking", - "byteorder", - "derivative", "enumflags2", - "event-listener 2.5.3", + "event-listener 5.3.1", "futures-core", "futures-sink", "futures-util", "hex", "nix", - "once_cell", "ordered-stream", "rand", "serde", @@ -3185,7 +3149,7 @@ dependencies = [ "static_assertions", "tracing", "uds_windows", - "winapi", + "windows-sys 0.52.0", "xdg-home", "zbus_macros", "zbus_names", @@ -3194,23 +3158,22 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "3.15.2" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5" +checksum = "6fe9de53245dcf426b7be226a4217dd5e339080e5d46e64a02d6e5dcbf90fca1" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "regex", - "syn 1.0.109", + "syn 2.0.66", "zvariant_utils", ] [[package]] name = "zbus_names" -version = "2.6.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" dependencies = [ "serde", "static_assertions", @@ -3219,19 +3182,18 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" [[package]] name = "zvariant" -version = "3.15.2" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db" +checksum = "9aa6d31a02fbfb602bfde791de7fedeb9c2c18115b3d00f3a36e489f46ffbbc7" dependencies = [ - "byteorder", + "endi", "enumflags2", - "libc", "serde", "static_assertions", "zvariant_derive", @@ -3239,24 +3201,24 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "3.15.2" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9" +checksum = "642bf1b6b6d527988b3e8193d20969d53700a36eac734d21ae6639db168701c8" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "1.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" +checksum = "fc242db087efc22bd9ade7aa7809e4ba828132edc312871584a6b4391bdf8786" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", ] diff --git a/Cargo.toml b/Cargo.toml index 6088732..5802645 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,27 +5,51 @@ license = "MPL-2.0" authors = ["Michael Aaron Murphy "] description = "Library for writing plugins and frontends for pop-launcher" repository = "https://github.com/pop-os/launcher" -edition = "2018" +edition.workspace = true [workspace] members = ["bin", "plugins", "service", "toolkit"] +resolver = "2" + +[workspace.package] +edition = "2021" + +[workspace.dependencies] +anyhow = "1.0.82" +serde = { version = "1.0.198", features = ["derive"] } +serde_json = "1.0.116" +tracing = "0.1.40" +dirs = "5.0.1" +serde_with = "3.7.0" +futures = "0.3.30" +flume = "0.11.0" +toml = "0.8.12" +regex = "1.10.4" +ron = "0.8.1" +tokio = "1.37.0" +tokio-stream = "0.1.15" [dependencies] const_format = "0.2.32" -dirs = "5.0.1" -futures = "0.3.30" -serde = { version = "1.0.198", features = ["derive"] } -serde_json = "1.0.116" -serde_with = "3.7.0" +dirs.workspace = true +futures.workspace = true +serde.workspace = true +serde_json.workspace = true +serde_with.workspace = true [profile.release] lto = "fat" panic = "abort" [dependencies.tokio] -version = "1.37.0" +workspace = true features = ["io-std", "io-util"] [dependencies.tokio-stream] -version = "0.1.15" +workspace = true features = ["io-util"] + + + +# [patch.crates-io] +# freedesktop-desktop-entry = { path = "../freedesktop-desktop-entry" } diff --git a/bin/Cargo.toml b/bin/Cargo.toml index dcc70c7..1e1fd31 100644 --- a/bin/Cargo.toml +++ b/bin/Cargo.toml @@ -1,19 +1,19 @@ [package] name = "pop-launcher-bin" version = "1.2.3" -edition = "2018" license = "GPL-3.0-only" +edition.workspace = true publish = false # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] pop-launcher-toolkit = { path = "../toolkit" } -tracing = "0.1.40" -tracing-subscriber = { version = "0.3.18", default-features = false, features = ["std", "fmt", "env-filter"] } -dirs = "5.0.1" +tracing.workspace = true +tracing-subscriber = { version = "0.3.18", default-features = false, features = ["std", "fmt", "env-filter", "chrono"] } +dirs.workspace = true mimalloc = "0.1.39" [dependencies.tokio] -version = "1.37.0" +workspace = true features = ["rt"] diff --git a/bin/src/main.rs b/bin/src/main.rs index f9b37ac..cb7bdc9 100644 --- a/bin/src/main.rs +++ b/bin/src/main.rs @@ -5,6 +5,8 @@ use pop_launcher_toolkit::plugins; use pop_launcher_toolkit::service; use mimalloc::MiMalloc; +use tracing_subscriber::layer::SubscriberExt; +use tracing_subscriber::EnvFilter; #[global_allocator] static GLOBAL: MiMalloc = MiMalloc; @@ -37,7 +39,10 @@ async fn main() { } } +// todo: support journald once this issue is resolved: https://github.com/tokio-rs/tracing/issues/2348 fn init_logging(cmd: &str) { + use tracing_subscriber::{fmt, Registry}; + let logdir = match dirs::state_dir() { Some(dir) => dir.join("pop-launcher/"), None => dirs::home_dir() @@ -49,15 +54,27 @@ fn init_logging(cmd: &str) { let logfile = std::fs::OpenOptions::new() .create(true) - .truncate(true) - .write(true) + .append(true) .open(logdir.join([cmd, ".log"].concat().as_str()).as_path()); if let Ok(file) = logfile { - use tracing_subscriber::{fmt, EnvFilter}; - fmt() - .with_env_filter(EnvFilter::from_default_env()) - .with_writer(file) - .init(); + if let Ok(meta) = file.metadata() { + if meta.len() > 1000 { + let _ = file.set_len(0); + } + } + + let filter_layer = EnvFilter::try_from_default_env() + .or_else(|_| EnvFilter::try_new("warn")) + .unwrap(); + + let fmt_layer = fmt::layer() + .with_target(false) + .with_timer(fmt::time::ChronoLocal::new("%T".into())) + .with_writer(file); + + let subscriber = Registry::default().with(filter_layer).with(fmt_layer); + + tracing::subscriber::set_global_default(subscriber).expect("Failed to set subscriber"); } } diff --git a/plugins/Cargo.toml b/plugins/Cargo.toml index 49dfc1c..e5ffe45 100644 --- a/plugins/Cargo.toml +++ b/plugins/Cargo.toml @@ -3,34 +3,33 @@ name = "pop-launcher-plugins" version = "1.2.3" license = "GPL-3.0-only" authors = ["Michael Aaron Murphy "] -edition = "2018" +edition.workspace = true publish = false [dependencies] async-pidfd = "0.1.4" fork = "0.1.23" -freedesktop-desktop-entry = "0.6.0" +freedesktop-desktop-entry = "0.6.2" human_format = "1.1.0" human-sort = "0.2.2" new_mime_guess = "4.0.1" pop-launcher = { path = "../" } -regex = "1.10.4" -ron = "0.8.1" -serde = "1.0.198" -serde_json = "1.0.116" +regex.workspace = true +ron.workspace = true +serde.workspace = true +serde_json.workspace = true slab = "0.4.9" strsim = "0.11.1" -tracing = "0.1.40" +tracing.workspace = true urlencoding = "2.1.3" -zbus = "3.15.2" -zvariant = "3.15.2" -ward = "2.1.0" +zbus = "4.2.2" +zvariant = "4.1.1" url = "2.5.0" sysfs-class = "0.1.3" -anyhow = "1.0.82" -flume = "0.11.0" -dirs = "5.0.1" -futures = "0.3.30" +anyhow.workspace = true +flume.workspace = true +dirs.workspace = true +futures.workspace = true bytes = "1.6.0" recently-used-xbel = "1.0.0" @@ -49,5 +48,5 @@ default-features = false features = ["rustls-tls"] [dependencies.tokio] -version = "1.37.0" +workspace = true features = ["fs", "io-std", "macros", "process", "rt"] diff --git a/plugins/src/calc/mod.rs b/plugins/src/calc/mod.rs index fe88c71..e3b1db9 100644 --- a/plugins/src/calc/mod.rs +++ b/plugins/src/calc/mod.rs @@ -116,13 +116,13 @@ impl App { async fn qcalc(regex: &mut Regex, expression: &str, decimal_comma: bool) -> Option { let mut command = Command::new("qalc"); - command.args(&["-u8"]); - command.args(&["-set", "maxdeci 9"]); + command.args(["-u8"]); + command.args(["-set", "maxdeci 9"]); if decimal_comma { - command.args(&["-set", "decimal comma on"]); + command.args(["-set", "decimal comma on"]); } else { - command.args(&["-set", "decimal comma off"]); + command.args(["-set", "decimal comma off"]); } let spawn = command diff --git a/plugins/src/cosmic_toplevel/mod.rs b/plugins/src/cosmic_toplevel/mod.rs index 4c7b9b1..56cc04f 100644 --- a/plugins/src/cosmic_toplevel/mod.rs +++ b/plugins/src/cosmic_toplevel/mod.rs @@ -213,7 +213,7 @@ impl App { } send(&mut self.tx, PluginResponse::Finished).await; - let _ = self.tx.flush(); + let _ = self.tx.flush().await; } } diff --git a/plugins/src/cosmic_toplevel/toplevel_handler.rs b/plugins/src/cosmic_toplevel/toplevel_handler.rs index ff7421e..e7d29ef 100644 --- a/plugins/src/cosmic_toplevel/toplevel_handler.rs +++ b/plugins/src/cosmic_toplevel/toplevel_handler.rs @@ -34,6 +34,7 @@ pub enum ToplevelEvent { Update(ZcosmicToplevelHandleV1, ToplevelInfo), } +#[allow(dead_code)] #[derive(Debug, Clone)] pub struct Toplevel { pub name: String, diff --git a/plugins/src/desktop_entries/mod.rs b/plugins/src/desktop_entries/mod.rs index 3b00cd7..c43c52e 100644 --- a/plugins/src/desktop_entries/mod.rs +++ b/plugins/src/desktop_entries/mod.rs @@ -4,45 +4,15 @@ use crate::*; use freedesktop_desktop_entry as fde; -use freedesktop_desktop_entry::{ - default_paths, get_languages_from_env, DesktopEntry, Iter as DesktopIter, PathSource, -}; +use freedesktop_desktop_entry::DesktopEntry; use futures::StreamExt; use pop_launcher::*; use std::borrow::Cow; -use std::hash::{Hash, Hasher}; -use std::path::PathBuf; use tokio::io::AsyncWrite; -use utils::path_string; +use utils::get_description; pub(crate) mod utils; -#[derive(Debug, Eq)] -struct Item { - appid: String, - description: String, - exec: String, - icon: Option, - keywords: Option>, - name: String, - path: PathBuf, - prefers_non_default_gpu: bool, - src: PathSource, - actions: Vec, -} - -impl Hash for Item { - fn hash(&self, state: &mut H) { - self.appid.hash(state); - } -} - -impl PartialEq for Item { - fn eq(&self, other: &Self) -> bool { - self.appid == other.appid - } -} - pub async fn main() { let mut app = App::new(async_stdout()); app.reload().await; @@ -71,7 +41,9 @@ pub async fn main() { const EXCLUSIONS: &[&str] = &["GNOME Shell", "Initial Setup"]; struct App { - entries: Vec, + current_desktop: Option>, + is_desktop_cosmic: bool, + desktop_entries: Vec>, locales: Vec, tx: W, gpus: Option>, @@ -79,8 +51,14 @@ struct App { impl App { fn new(tx: W) -> Self { + let current_desktop = fde::current_desktop(); Self { - entries: Vec::new(), + current_desktop: fde::current_desktop(), + is_desktop_cosmic: current_desktop + .unwrap_or_default() + .iter() + .any(|e| e == "cosmic"), + desktop_entries: Vec::new(), locales: fde::get_languages_from_env(), tx, gpus: None, @@ -88,127 +66,89 @@ impl App { } async fn reload(&mut self) { - self.entries.clear(); + self.desktop_entries.clear(); let mut deduplicator = std::collections::HashSet::new(); + let locales = fde::get_languages_from_env(); - let current = current_desktop(); - let current = current - .as_ref() - .map(|x| x.split(':').collect::>()); + let paths = fde::Iter::new(fde::default_paths()); - for path in DesktopIter::new(default_paths()) { - let src = PathSource::guess_from(&path); - if let Ok(bytes) = std::fs::read_to_string(&path) { - if let Ok(entry) = - DesktopEntry::from_str(&path, &bytes, &get_languages_from_env()) - { - // Do not show if our desktop is defined in `NotShowIn`. - if let Some(not_show_in) = entry.desktop_entry("NotShowIn") { - let current = ward::ward!(current.as_ref(), else { continue }); - - let matched = not_show_in - .to_ascii_lowercase() - .split(';') - .any(|desktop| current.iter().any(|c| *c == desktop)); - - if matched { - continue; - } + let desktop_entries = DesktopEntry::from_paths(paths, &locales) + .filter_map(|de| { + de.ok().and_then(|de| { + if deduplicator.contains(de.appid.as_ref()) { + return None; } - // Track this condition so that we can override `NoDisplay` if this is true. - let mut only_show_in = false; + if de.name(&self.locales).is_none() { + return None; + } - // Do not show if our desktop is not defined in `OnlyShowIn`. - if let Some(desktops) = entry.only_show_in() { - let current = ward::ward!(current.as_ref(), else { continue }); - - only_show_in = desktops - .to_ascii_lowercase() - .split(';') - .any(|desktop| current.iter().any(|c| *c == desktop)); - - if !only_show_in { - continue; - } + match de.exec() { + Some(exec) => match exec.split_ascii_whitespace().next() { + Some(exec) => { + if exec == "false" { + return None; + } + } + None => return None, + }, + None => return None, } // Avoid showing the GNOME Shell entry entirely - if entry + if de .name(&[] as &[&str]) .map_or(false, |v| EXCLUSIONS.contains(&v.as_ref())) { - continue; + return None; } - // And also avoid showing anything that's set as `NoDisplay` - if !only_show_in && entry.no_display() { - continue; - } - - if let Some((name, exec)) = entry.name(&self.locales).zip(entry.exec()) { - if let Some(exec) = exec.split_ascii_whitespace().next() { - if exec == "false" { - continue; + // Do not show if our desktop is defined in `NotShowIn`. + if let Some(not_show_in) = de.not_show_in() { + if let Some(current_desktop) = &self.current_desktop { + if not_show_in.iter().any(|not_show| { + current_desktop + .iter() + .any(|desktop| ¬_show.to_ascii_lowercase() == desktop) + }) { + return None; } - - let item = Item { - appid: entry.appid.to_string(), - name: name.to_string(), - description: entry - .comment(&self.locales) - .as_deref() - .unwrap_or("") - .to_owned(), - keywords: entry.keywords(&self.locales).map(|keywords| { - keywords.split(';').map(String::from).collect() - }), - icon: Some( - entry - .icon() - .map(|x| x.to_owned()) - .unwrap_or_else(|| "application-x-executable".to_string()), - ), - exec: exec.to_owned(), - path: path.clone(), - prefers_non_default_gpu: entry.prefers_non_default_gpu(), - src, - actions: entry - .actions() - .map(|actions| { - actions - .split(';') - .filter_map(|action| { - entry.action_entry_localized( - action, - "Name", - &self.locales, - ) - }) - .map(Cow::into_owned) - .collect::>() - }) - .unwrap_or_default(), - }; - - deduplicator.insert(item); } } - } - } - } - self.entries.extend(deduplicator); + // Do not show if our desktop is not defined in `OnlyShowIn`. + if let Some(only_show_in) = de.only_show_in() { + if let Some(current_desktop) = &self.current_desktop { + if !only_show_in.iter().any(|show_in| { + current_desktop + .iter() + .any(|desktop| &show_in.to_ascii_lowercase() == desktop) + }) { + return None; + } + } + } else { + if de.no_display() { + return None; + } + } + deduplicator.insert(de.appid.to_string()); + Some(de) + }) + }) + .collect::>(); + + self.desktop_entries = desktop_entries; self.gpus = try_get_gpus().await; } async fn activate(&mut self, id: u32) { - if let Some(entry) = self.entries.get(id as usize) { + if let Some(entry) = self.desktop_entries.get(id as usize) { let response = PluginResponse::DesktopEntry { - path: entry.path.clone(), - gpu_preference: if entry.prefers_non_default_gpu { + path: entry.path.to_path_buf(), + gpu_preference: if entry.prefers_non_default_gpu() { GpuPreference::NonDefault } else { GpuPreference::Default @@ -221,33 +161,29 @@ impl App { } async fn activate_context(&mut self, id: u32, context: u32) { - if let Some(entry) = self.entries.get(id as usize) { - let is_cosmic = matches!(current_desktop().as_deref(), Some("cosmic")); + if let Some(entry) = self.desktop_entries.get(id as usize) { let gpu_len = self.gpus.as_ref().map(Vec::len).unwrap_or(0) as u32; - let gpu_preference = if is_cosmic { + let gpu_preference = if self.is_desktop_cosmic { if context < gpu_len { GpuPreference::SpecificIdx(context) - } else { - if entry.prefers_non_default_gpu { - GpuPreference::NonDefault - } else { - GpuPreference::Default - } - } - } else { - if !entry.prefers_non_default_gpu { + } else if entry.prefers_non_default_gpu() { GpuPreference::NonDefault } else { GpuPreference::Default } + } else if !entry.prefers_non_default_gpu() { + GpuPreference::NonDefault + } else { + GpuPreference::Default }; let response = PluginResponse::DesktopEntry { - path: entry.path.clone(), + path: entry.path.to_path_buf(), gpu_preference, - action_name: (is_cosmic && context >= gpu_len) - .then(|| entry.actions[(context - gpu_len) as usize].clone()), + action_name: (self.is_desktop_cosmic && context >= gpu_len).then(|| { + entry.actions().unwrap_or_default()[(context - gpu_len) as usize].to_string() + }), }; send(&mut self.tx, response).await; @@ -255,10 +191,11 @@ impl App { } async fn context(&mut self, id: u32) { - if let Some(entry) = self.entries.get(id as usize) { - let options = match current_desktop().as_deref() { - Some("cosmic") => self.cosmic_context(entry).await, - _ => self.gnome_context(entry).await, + if let Some(entry) = self.desktop_entries.get(id as usize) { + let options = if self.is_desktop_cosmic { + self.cosmic_context(entry).await + } else { + self.gnome_context(entry).await }; if !options.is_empty() { @@ -270,65 +207,37 @@ impl App { } async fn search(&mut self, query: &str) { - let query = query.to_ascii_lowercase(); + for (id, entry) in self.desktop_entries.iter().enumerate() { + let score = fde::matching::get_entry_score(query, entry, &self.locales, &[]); - let &mut Self { - ref entries, - ref mut tx, - .. - } = self; + if score > 0.6 { + let response = PluginResponse::Append(PluginSearchResult { + id: id as u32, + name: entry.name(&self.locales).unwrap_or_default().to_string(), + description: get_description(entry, &self.locales), + keywords: entry + .keywords(&self.locales) + .map(|v| v.iter().map(|e| e.to_string()).collect()), + icon: entry + .icon() + .map(|e| Cow::Owned(e.to_string())) + .map(IconSource::Name), + exec: entry.exec().map(|e| e.to_string()), + ..Default::default() + }); - let mut items = Vec::with_capacity(16); - - for (id, entry) in entries.iter().enumerate() { - items.extend(entry.name.split_ascii_whitespace()); - - if let Some(keywords) = entry.keywords.as_ref() { - items.extend(keywords.iter().map(String::as_str)); - } - - items.push(entry.exec.as_str()); - - for search_interest in items.drain(..) { - let search_interest = search_interest.to_ascii_lowercase(); - let append = search_interest.starts_with(&*query) - || query - .split_ascii_whitespace() - .any(|query| search_interest.contains(&*query)) - || strsim::jaro_winkler(&*query, &*search_interest) > 0.6; - - if append { - let desc_source = path_string(&entry.src); - - let response = PluginResponse::Append(PluginSearchResult { - id: id as u32, - name: entry.name.clone(), - description: if entry.description.is_empty() { - desc_source.to_string() - } else { - format!("{} - {}", desc_source, entry.description) - }, - keywords: entry.keywords.clone(), - icon: entry.icon.clone().map(Cow::Owned).map(IconSource::Name), - exec: Some(entry.exec.clone()), - ..Default::default() - }); - - send(tx, response).await; - - break; - } + send(&mut self.tx, response).await; } } - send(tx, PluginResponse::Finished).await; + send(&mut self.tx, PluginResponse::Finished).await; } - async fn gnome_context(&self, entry: &Item) -> Vec { + async fn gnome_context(&self, entry: &DesktopEntry<'_>) -> Vec { if self.gpus.is_some() { vec![ContextOption { id: 0, - name: (if entry.prefers_non_default_gpu { + name: (if entry.prefers_non_default_gpu() { "Launch Using Integrated Graphics Card" } else { "Launch Using Discrete Graphics Card" @@ -340,11 +249,11 @@ impl App { } } - async fn cosmic_context(&self, entry: &Item) -> Vec { + async fn cosmic_context(&self, entry: &DesktopEntry<'_>) -> Vec { let mut options = Vec::new(); if let Some(gpus) = self.gpus.as_ref() { - let default_idx = if entry.prefers_non_default_gpu { + let default_idx = if entry.prefers_non_default_gpu() { gpus.iter().position(|gpu| !gpu.default).unwrap_or(0) } else { gpus.iter().position(|gpu| gpu.default).unwrap_or(0) @@ -355,17 +264,17 @@ impl App { name: format!( "Launch using {}{}", gpu.name, - (i == default_idx).then_some(" (default)").unwrap_or("") + if i == default_idx { " (default)" } else { "" } ), }); } } let options_offset = self.gpus.as_ref().map(|gpus| gpus.len()).unwrap_or(0); - for (i, action) in entry.actions.iter().enumerate() { + for (i, action) in entry.actions().unwrap_or_default().iter().enumerate() { options.push(ContextOption { id: (i + options_offset) as u32, - name: action.clone(), + name: action.to_string(), }); } @@ -373,17 +282,6 @@ impl App { } } -fn current_desktop() -> Option { - std::env::var("XDG_CURRENT_DESKTOP").ok().map(|x| { - let x = x.to_ascii_lowercase(); - if x == "unity" { - "gnome".to_owned() - } else { - x - } - }) -} - async fn try_get_gpus() -> Option> { let connection = zbus::Connection::system().await.ok()?; let proxy = switcheroo_control::SwitcherooControlProxy::new(&connection) diff --git a/plugins/src/desktop_entries/utils.rs b/plugins/src/desktop_entries/utils.rs index ba649a2..ba9a252 100644 --- a/plugins/src/desktop_entries/utils.rs +++ b/plugins/src/desktop_entries/utils.rs @@ -25,7 +25,6 @@ pub fn get_description<'a>(de: &'a DesktopEntry<'a>, locales: &[String]) -> Stri let desc_source = path_string(&path_source).to_string(); - match de.comment(locales) { Some(desc) => { if desc.is_empty() { diff --git a/plugins/src/lib.rs b/plugins/src/lib.rs index b29cc09..dd26932 100644 --- a/plugins/src/lib.rs +++ b/plugins/src/lib.rs @@ -39,7 +39,7 @@ pub async fn or(future1: impl Future, future2: impl Future Cow<'static, str> { if path.is_dir() { Cow::Borrowed("inode/directory") - } else if let Some(guess) = new_mime_guess::from_path(&path).first() { + } else if let Some(guess) = new_mime_guess::from_path(path).first() { Cow::Owned(guess.essence_str().to_owned()) } else { Cow::Borrowed("text/plain") diff --git a/plugins/src/pop_shell/mod.rs b/plugins/src/pop_shell/mod.rs index e944701..8946f58 100644 --- a/plugins/src/pop_shell/mod.rs +++ b/plugins/src/pop_shell/mod.rs @@ -6,7 +6,7 @@ use freedesktop_desktop_entry::{self as fde, get_languages_from_env}; use futures::StreamExt; use pop_launcher::*; use serde::{Deserialize, Serialize}; -use std::{convert::TryFrom, fs, path::PathBuf, sync::Arc}; +use std::{convert::TryFrom, fs, path::PathBuf}; use tokio::io::{AsyncWrite, AsyncWriteExt}; use zbus::Connection; use zvariant::{Signature, Type}; @@ -36,7 +36,7 @@ pub async fn main() { Ok(conn) => conn, Err(_) => { let mut out = async_stdout(); - let _ = crate::send(&mut out, PluginResponse::Deactivate); + let _ = crate::send(&mut out, PluginResponse::Deactivate).await; return; } }; @@ -86,7 +86,7 @@ impl App { &mut self, method: &str, args: &A, - ) -> zbus::Result> { + ) -> zbus::Result { self.connection .call_method(Some(DEST), PATH, Some(DEST), method, args) .await @@ -95,7 +95,8 @@ impl App { async fn reload(&mut self) { if let Ok(message) = self.call_method("WindowList", &()).await { self.entries = message - .body::>() + .body() + .deserialize() .expect("pop-shell returned invalid WindowList response"); } } @@ -139,7 +140,11 @@ impl App { if let Some(name) = path.file_stem() { if desktop_entry == name { if let Ok(data) = fs::read_to_string(path) { - if let Ok(entry) = fde::DesktopEntry::from_str(path, &data, &get_languages_from_env()) { + if let Ok(entry) = fde::DesktopEntry::from_str( + path, + &data, + &get_languages_from_env(), + ) { if let Some(icon) = entry.icon() { icon_name = Cow::Owned(icon.to_owned()); } @@ -167,6 +172,6 @@ impl App { } send(&mut self.tx, PluginResponse::Finished).await; - let _ = self.tx.flush(); + let _ = self.tx.flush().await; } } diff --git a/plugins/src/pulse/mod.rs b/plugins/src/pulse/mod.rs index 0ea1868..f4ced7b 100644 --- a/plugins/src/pulse/mod.rs +++ b/plugins/src/pulse/mod.rs @@ -138,7 +138,7 @@ fn pactl_sinks() -> flume::Receiver { tokio::spawn(async move { let child = tokio::process::Command::new("pactl") .env("LANG", "C") - .args(&["list", "sinks"]) + .args(["list", "sinks"]) .stdout(std::process::Stdio::piped()) .spawn(); diff --git a/plugins/src/scripts/mod.rs b/plugins/src/scripts/mod.rs index 80e430b..b0b75d7 100644 --- a/plugins/src/scripts/mod.rs +++ b/plugins/src/scripts/mod.rs @@ -221,9 +221,9 @@ async fn load_from(path: &Path, paths: &mut VecDeque, tx: Sender