From 01a36a94769a1ea8cda6062c7699a2b2eb225587 Mon Sep 17 00:00:00 2001 From: Jake Stanger Date: Sun, 19 Mar 2023 00:14:59 +0000 Subject: [PATCH 1/3] build: update gtk deps --- Cargo.lock | 86 ++++++++++++++++++++++++++++-------------------------- Cargo.toml | 6 ++-- 2 files changed, 47 insertions(+), 45 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 99e8b5d..ea4db34 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -170,9 +170,9 @@ checksum = "2ce4f10ea3abcd6617873bae9f91d1c5332b4a778bd9ce34d0cd517474c1de82" [[package]] name = "atk" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39991bc421ddf72f70159011b323ff49b0f783cc676a7287c59453da2e2531cf" +checksum = "890ef8be2f3db3b3aeec2313487f4d3b24871c7614f08c211e93e009d37e7459" dependencies = [ "atk-sys", "bitflags", @@ -182,9 +182,9 @@ dependencies = [ [[package]] name = "atk-sys" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ad703eb64dc058024f0e57ccfa069e15a413b98dbd50a1a950e743b7f11148" +checksum = "e3bf0a7ca572fbd5762fd8f8cd65a581e06767bc1234913fe1f43e370cff6e90" dependencies = [ "glib-sys", "gobject-sys", @@ -254,9 +254,9 @@ checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" [[package]] name = "cairo-rs" -version = "0.16.3" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "247e1183fa769ac22121f92276dae52f89acaf297f24b1320019f439b6e3b46f" +checksum = "a8af54f5d48af1226928adc1f57edd22f5df1349e7da1fc96ae15cf43db0e871" dependencies = [ "bitflags", "cairo-sys-rs", @@ -268,9 +268,9 @@ dependencies = [ [[package]] name = "cairo-sys-rs" -version = "0.16.3" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c48f4af05fabdcfa9658178e1326efa061853f040ce7d72e33af6885196f421" +checksum = "f55382a01d30e5e53f185eee269124f5e21ab526595b872751278dfbb463594e" dependencies = [ "glib-sys", "libc", @@ -845,9 +845,9 @@ dependencies = [ [[package]] name = "gdk" -version = "0.16.2" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9cb33da481c6c040404a11f8212d193889e9b435db2c14fd86987f630d3ce1" +checksum = "01aaa57fff872150a6eca1ee3d47df93151cbe8942c03f4964dcb2c4633af04c" dependencies = [ "bitflags", "cairo-rs", @@ -861,22 +861,23 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.16.4" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3094f2b8578136d1929cade4e0fff82f573521b579e96cfc24af2458431f176" +checksum = "b023fbe0c6b407bd3d9805d107d9800da3829dc5a676653210f1d5f16d7f59bf" dependencies = [ "bitflags", "gdk-pixbuf-sys", "gio", "glib", "libc", + "once_cell", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.16.3" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3092cf797a5f1210479ea38070d9ae8a5b8e9f8f1be9f32f4643c529c7d70016" +checksum = "7b41bd2b44ed49d99277d3925652a163038bd5ed943ec9809338ffb2f4391e3b" dependencies = [ "gio-sys", "glib-sys", @@ -887,9 +888,9 @@ dependencies = [ [[package]] name = "gdk-sys" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76354f97a913e55b984759a997b693aa7dc71068c9e98bcce51aa167a0a5c5a" +checksum = "2152de9d38bc67a17b3fe49dc0823af5bf874df59ea088c5f28f31cf103de703" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -931,9 +932,9 @@ checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" [[package]] name = "gio" -version = "0.16.3" +version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d4a17d999e6e4e05d87c2bb05b7140d47769bc53211711a33e2f91536458714" +checksum = "2261a3b4e922ec676d1c27ac466218c38cf5dcb49a759129e54bb5046e442125" dependencies = [ "bitflags", "futures-channel", @@ -951,9 +952,9 @@ dependencies = [ [[package]] name = "gio-sys" -version = "0.16.3" +version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9b693b8e39d042a95547fc258a7b07349b1f0b48f4b2fa3108ba3c51c0b5229" +checksum = "6b1d43b0d7968b48455244ecafe41192871257f5740aa6b095eb19db78e362a5" dependencies = [ "glib-sys", "gobject-sys", @@ -964,9 +965,9 @@ dependencies = [ [[package]] name = "glib" -version = "0.16.5" +version = "0.17.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cd04d150a2c63e6779f43aec7e04f5374252479b7bed5f45146d9c0e821f161" +checksum = "cfb53061756195d76969292c2d2e329e01259276524a9bae6c9b73af62854773" dependencies = [ "bitflags", "futures-channel", @@ -979,6 +980,7 @@ dependencies = [ "glib-sys", "gobject-sys", "libc", + "memchr", "once_cell", "smallvec", "thiserror", @@ -986,9 +988,9 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.16.3" +version = "0.17.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e084807350b01348b6d9dbabb724d1a0bb987f47a2c85de200e98e12e30733bf" +checksum = "454924cafe58d9174dc32972261fe271d6cd3c10f5e9ff505522a28dcf601a40" dependencies = [ "anyhow", "heck 0.4.0", @@ -1001,9 +1003,9 @@ dependencies = [ [[package]] name = "glib-sys" -version = "0.16.3" +version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61a4f46316d06bfa33a7ac22df6f0524c8be58e3db2d9ca99ccb1f357b62a65" +checksum = "49f00ad0a1bf548e61adfff15d83430941d9e1bb620e334f779edd1c745680a5" dependencies = [ "libc", "system-deps", @@ -1011,9 +1013,9 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.16.3" +version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3520bb9c07ae2a12c7f2fbb24d4efc11231c8146a86956413fb1a79bb760a0f1" +checksum = "15e75b0000a64632b2d8ca3cf856af9308e3a970844f6e9659bd197f026793d0" dependencies = [ "glib-sys", "libc", @@ -1022,9 +1024,9 @@ dependencies = [ [[package]] name = "gtk" -version = "0.16.2" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4d3507d43908c866c805f74c9dd593c0ce7ba5c38e576e41846639cdcd4bee6" +checksum = "a8c93991994a9ebf208cb70a986ec12dd7145fd20664cb45623c7325f39fec00" dependencies = [ "atk", "bitflags", @@ -1045,9 +1047,9 @@ dependencies = [ [[package]] name = "gtk-layer-shell" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f0ef12cc0d52f9226cbfc83f766a52fc667002ed15ddd1c37a388abe7d03f8c" +checksum = "3d0071c48754367670de0e81bdc999ad11cfca49c1f2cf03e0b309f32d7dbd08" dependencies = [ "bitflags", "gdk", @@ -1060,9 +1062,9 @@ dependencies = [ [[package]] name = "gtk-layer-shell-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7095dbaf56028d8a238e8b8f3039a537587cb7a6efbdba2b539375fe5689295d" +checksum = "5754bcfaadfc3529116af6ae93559b267d88647f965382153a4b8ea9372be75a" dependencies = [ "gdk-sys", "glib-sys", @@ -1073,9 +1075,9 @@ dependencies = [ [[package]] name = "gtk-sys" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b5f8946685d5fe44497007786600c2f368ff6b1e61a16251c89f72a97520a3" +checksum = "4d8eb6a4b93e5a7e6980f7348d08c1cd93d31fae07cf97f20678c5ec41de3d7e" dependencies = [ "atk-sys", "cairo-sys-rs", @@ -1091,9 +1093,9 @@ dependencies = [ [[package]] name = "gtk3-macros" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cfd6557b1018b773e43c8de9d0d13581d6b36190d0501916cbec4731db5ccff" +checksum = "df5f1d7857f81b4032cbfd2020577bd73b4c9f5773767091e69484704eb7ca84" dependencies = [ "anyhow", "proc-macro-crate", @@ -1840,9 +1842,9 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" [[package]] name = "pango" -version = "0.16.5" +version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdff66b271861037b89d028656184059e03b0b6ccb36003820be19f7200b1e94" +checksum = "52c280b82a881e4208afb3359a8e7fde27a1b272280981f1f34610bed5770d37" dependencies = [ "bitflags", "gio", @@ -1854,9 +1856,9 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.16.3" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e134909a9a293e04d2cc31928aa95679c5e4df954d0b85483159bd20d8f047f" +checksum = "4293d0f0b5525eb5c24734d30b0ed02cd02aa734f216883f376b54de49625de8" dependencies = [ "glib-sys", "gobject-sys", diff --git a/Cargo.toml b/Cargo.toml index 4cd4d4e..43745ab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,9 +45,9 @@ workspaces = ["futures-util"] [dependencies] # core -gtk = "0.16.0" -gtk-layer-shell = "0.5.0" -glib = "0.16.2" +gtk = "0.17.0" +gtk-layer-shell = "0.6.0" +glib = "0.17.5" tokio = { version = "1.21.2", features = ["macros", "rt-multi-thread", "time", "process", "sync", "io-util", "net"] } tracing = "0.1.37" tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } From ecdd71a43d267161f84e3c4a3c22e9454c0f7184 Mon Sep 17 00:00:00 2001 From: Jake Stanger Date: Sun, 19 Mar 2023 16:17:31 +0000 Subject: [PATCH 2/3] refactor(config): use `universal-config` crate. XML config is not supported. --- Cargo.lock | 172 ++++++++++++++++++++++++++------------------- Cargo.toml | 15 ++-- src/config/impl.rs | 92 +----------------------- src/main.rs | 9 ++- 4 files changed, 112 insertions(+), 176 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ea4db34..ba49443 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -141,7 +141,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7d78656ba01f1b93024b7c3a0467f1608e4be67d725749fdcd7d2c7678fd7a2" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -158,7 +158,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31e6e93155431f3931513b243d371981bb2770112b370c82745a1d19d2f99364" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -472,7 +472,7 @@ dependencies = [ "codespan-reporting", "once_cell", "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "scratch", "syn 1.0.105", ] @@ -490,7 +490,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1362b0ddcfc4eb0a1f57b68bd77dd99f0e826958a96abd0ae9bd092e114ffed6" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -513,7 +513,7 @@ dependencies = [ "fnv", "ident_case", "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "strsim", "syn 1.0.105", ] @@ -525,7 +525,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -547,7 +547,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -635,7 +635,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e40a16955681d469ab3da85aaa6b42ff656b3c67b52e1d8d3dd36afe97fd462" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -656,7 +656,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -754,7 +754,7 @@ checksum = "13abfd95d43eabb051a8d4b408ef92dfe6d8d4aa17651e5786d5c761e5e6e7ad" dependencies = [ "darling", "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -812,7 +812,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -997,7 +997,7 @@ dependencies = [ "proc-macro-crate", "proc-macro-error", "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -1101,7 +1101,7 @@ dependencies = [ "proc-macro-crate", "proc-macro-error", "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -1359,7 +1359,6 @@ dependencies = [ "hyprland", "indexmap", "lazy_static", - "libcorn", "mpd_client", "mpris", "nix 0.26.2", @@ -1367,19 +1366,17 @@ dependencies = [ "regex", "reqwest", "serde", - "serde_json", - "serde_yaml", "smithay-client-toolkit", "stray", "strip-ansi-escapes", "swayipc-async", "sysinfo", "tokio", - "toml 0.7.0", "tracing", "tracing-appender", "tracing-error", "tracing-subscriber", + "universal-config", "walkdir", "wayland-client", "wayland-protocols", @@ -1685,15 +1682,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "nom8" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8" -dependencies = [ - "memchr", -] - [[package]] name = "notify" version = "5.0.0" @@ -1795,7 +1783,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -1936,7 +1924,7 @@ dependencies = [ "pest", "pest_meta", "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -2008,7 +1996,7 @@ checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", "version_check", ] @@ -2020,15 +2008,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "version_check", ] [[package]] name = "proc-macro2" -version = "1.0.47" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" dependencies = [ "unicode-ident", ] @@ -2041,9 +2029,9 @@ checksum = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" [[package]] name = "quote" -version = "1.0.21" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -2292,29 +2280,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.149" +version = "1.0.157" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256b9932320c590e707b94576e3cc1f7c9024d0ee6612dfbcf1cb106cbe8e055" +checksum = "707de5fcf5df2b5788fca98dd7eab490bc2fd9b7ef1404defc462833b83f25ca" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.149" +version = "1.0.157" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4eae9b04cbffdfd550eb462ed33bc6a1b68c935127d008b27444d08380f94e4" +checksum = "78997f4555c22a7971214540c4a661291970619afd56de19f77e0de86296e1e5" dependencies = [ "proc-macro2", - "quote 1.0.21", - "syn 1.0.105", + "quote 1.0.26", + "syn 2.0.2", ] [[package]] name = "serde_json" -version = "1.0.89" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" +checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" dependencies = [ "itoa", "ryu", @@ -2328,15 +2316,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fe39d9fbb0ebf5eb2c7cb7e2a47e4f462fad1379f1166b8ae49ad9eae89a7ca" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] [[package]] name = "serde_spanned" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c68e921cef53841b8925c2abadd27c9b891d9613bdc43d6b823062866df38e8" +checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" dependencies = [ "serde", ] @@ -2355,9 +2343,9 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.14" +version = "0.9.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d232d893b10de3eb7258ff01974d6ee20663d8e833263c99409d4b13a0209da" +checksum = "f82e6c8c047aa50a7328632d067bcae6ef38772a79e28daf32f735e0e4f3dd10" dependencies = [ "indexmap", "itoa", @@ -2516,7 +2504,7 @@ checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ "heck 0.4.0", "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "rustversion", "syn 1.0.105", ] @@ -2564,7 +2552,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59d3276aee1fa0c33612917969b5172b5be2db051232a6e4826f1a1a9191b045" +dependencies = [ + "proc-macro2", + "quote 1.0.26", "unicode-ident", ] @@ -2630,22 +2629,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", - "quote 1.0.21", - "syn 1.0.105", + "quote 1.0.26", + "syn 2.0.2", ] [[package]] @@ -2737,7 +2736,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -2787,9 +2786,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f560bc7fb3eb31f5eee1340c68a2160cad39605b7b9c9ec32045ddbdee13b85" +checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" dependencies = [ "serde", "serde_spanned", @@ -2799,24 +2798,24 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "886f31a9b85b6182cabd4d8b07df3b451afcc216563748201490940d2a28ed36" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.0" +version = "0.19.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d8716cdc5d20ec88a18a839edaf545edc71efa4a5ff700ef4a102c26cd8fa" +checksum = "dc18466501acd8ac6a3f615dd29a3438f8ca6bb3b19537138b3106e575621274" dependencies = [ "indexmap", - "nom8", "serde", "serde_spanned", "toml_datetime", + "winnow", ] [[package]] @@ -2855,7 +2854,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] @@ -2976,10 +2975,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" [[package]] -name = "unsafe-libyaml" -version = "0.2.4" +name = "universal-config" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e5fa573d8ac5f1a856f8d7be41d390ee973daf97c806b2c1a465e4e1406e68" +checksum = "99ecee14b2d35eec5fb307ec7ff179389807b9b14e97a853e69ad3e3a732391f" +dependencies = [ + "dirs", + "libcorn", + "serde", + "serde_json", + "serde_yaml", + "thiserror", + "toml 0.7.3", + "tracing", +] + +[[package]] +name = "unsafe-libyaml" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad2024452afd3874bf539695e04af6732ba06517424dbf958fdb16a01f3bef6c" [[package]] name = "url" @@ -3046,7 +3061,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", ] [[package]] @@ -3108,7 +3123,7 @@ dependencies = [ "log", "once_cell", "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", "wasm-bindgen-shared", ] @@ -3131,7 +3146,7 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" dependencies = [ - "quote 1.0.21", + "quote 1.0.26", "wasm-bindgen-macro-support", ] @@ -3142,7 +3157,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", "wasm-bindgen-backend", "wasm-bindgen-shared", @@ -3211,7 +3226,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" dependencies = [ "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "xml-rs", ] @@ -3331,6 +3346,15 @@ version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +[[package]] +name = "winnow" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d020b441f92996c80d94ae9166e8501e59c7bb56121189dc9eab3bd8216966" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.10.1" @@ -3403,7 +3427,7 @@ checksum = "1f8fb5186d1c87ae88cf234974c240671238b4a679158ad3b94ec465237349a6" dependencies = [ "proc-macro-crate", "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "regex", "syn 1.0.105", ] @@ -3441,6 +3465,6 @@ checksum = "155247a5d1ab55e335421c104ccd95d64f17cebbd02f50cdbc1c33385f9c4d81" dependencies = [ "proc-macro-crate", "proc-macro2", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.105", ] diff --git a/Cargo.toml b/Cargo.toml index 43745ab..e7c9359 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,10 +20,10 @@ default = [ http = ["dep:reqwest"] "config+all" = ["config+json", "config+yaml", "config+toml", "config+corn"] -"config+json" = ["serde_json"] -"config+yaml" = ["serde_yaml"] -"config+toml" = ["toml"] -"config+corn" = ["libcorn"] +"config+json" = ["universal-config/json"] +"config+yaml" = ["universal-config/yaml"] +"config+toml" = ["universal-config/toml"] +"config+corn" = ["universal-config/corn"] clipboard = ["nix"] @@ -63,6 +63,7 @@ notify = { version = "5.0.0", default-features = false } wayland-client = "0.29.5" wayland-protocols = { version = "0.29.5", features = ["unstable_protocols", "client"] } smithay-client-toolkit = { version = "0.16.0", default-features = false, features = ["calloop"] } +universal-config = { version = "0.2.1", default_features = false } lazy_static = "1.4.0" async_once = "0.2.6" @@ -71,12 +72,6 @@ cfg-if = "1.0.0" # http reqwest = { version = "0.11.14", optional = true } -# config -serde_json = { version = "1.0.82", optional = true } -serde_yaml = { version = "0.9.4", optional = true } -toml = { version = "0.7.0", optional = true } -libcorn = { version = "0.6.1", optional = true } - # clipboard nix = { version = "0.26.2", optional = true } diff --git a/src/config/impl.rs b/src/config/impl.rs index cfd4045..c60e292 100644 --- a/src/config/impl.rs +++ b/src/config/impl.rs @@ -1,18 +1,12 @@ use super::{BarPosition, Config, MonitorConfig}; -use color_eyre::eyre::Result; -use color_eyre::eyre::{ContextCompat, WrapErr}; use color_eyre::{Help, Report}; -use dirs::config_dir; use gtk::Orientation; use serde::{Deserialize, Deserializer}; -use std::path::{Path, PathBuf}; -use std::{env, fs}; -use tracing::instrument; // Manually implement for better untagged enum error handling: // currently open pr: https://github.com/serde-rs/serde/pull/1544 impl<'de> Deserialize<'de> for MonitorConfig { - fn deserialize(deserializer: D) -> std::result::Result + fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { @@ -62,87 +56,3 @@ impl BarPosition { } } } - -impl Config { - /// Attempts to load the config file from file, - /// parse it and return a new instance of `Self`. - pub fn load() -> Result { - let config_path = env::var("IRONBAR_CONFIG").map_or_else( - |_| Self::try_find_config(), - |config_path| { - let path = PathBuf::from(config_path); - if path.exists() { - Ok(path) - } else { - Err(Report::msg(format!( - "Specified config file does not exist: {}", - path.display() - )) - .note("Config file was specified using `IRONBAR_CONFIG` environment variable")) - } - }, - )?; - - Self::load_file(&config_path) - } - - /// Attempts to discover the location of the config file - /// by checking each valid format's extension. - /// - /// Returns the path of the first valid match, if any. - #[instrument] - fn try_find_config() -> Result { - let config_dir = config_dir().wrap_err("Failed to locate user config dir")?; - - let extensions = vec!["json", "toml", "yaml", "yml", "corn"]; - - let file = extensions.into_iter().find_map(|extension| { - let full_path = config_dir - .join("ironbar") - .join(format!("config.{extension}")); - - if Path::exists(&full_path) { - Some(full_path) - } else { - None - } - }); - - file.map_or_else( - || { - Err(Report::msg("Could not find config file") - .suggestion("Ironbar does not include a configuration out of the box") - .suggestion("A guide on writing a config can be found on the wiki:") - .suggestion("https://github.com/JakeStanger/ironbar/wiki/configuration-guide")) - }, - Ok, - ) - } - - /// Loads the config file at the specified path - /// and parses it into `Self` based on its extension. - fn load_file(path: &Path) -> Result { - let file = fs::read(path).wrap_err("Failed to read config file")?; - - let str = std::str::from_utf8(&file)?; - - let extension = path - .extension() - .unwrap_or_default() - .to_str() - .unwrap_or_default(); - - match extension { - #[cfg(feature = "config+json")] - "json" => serde_json::from_str(str).wrap_err("Invalid JSON config"), - #[cfg(feature = "config+toml")] - "toml" => toml::from_str(str).wrap_err("Invalid TOML config"), - #[cfg(feature = "config+yaml")] - "yaml" | "yml" => serde_yaml::from_str(str).wrap_err("Invalid YAML config"), - #[cfg(feature = "config+corn")] - "corn" => libcorn::from_str(str).wrap_err("Invalid Corn config"), - _ => Err(Report::msg(format!("Unsupported config type: {extension}")) - .note("You may need to recompile with support if available")), - } - } -} diff --git a/src/main.rs b/src/main.rs index dff8254..0abb761 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,6 +32,7 @@ use tokio::task::block_in_place; use crate::error::ExitCode; use clients::wayland::{self, WaylandClient}; use tracing::{debug, error, info}; +use universal_config::ConfigLoader; const GTK_APP_ID: &str = "dev.jstanger.ironbar"; const VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -57,13 +58,19 @@ async fn main() -> Result<()> { |display| display, ); - let config = match Config::load() { + let config_res = match env::var("IRONBAR_CONFIG") { + Ok(path) => ConfigLoader::load(path), + Err(_) => ConfigLoader::new("ironbar").find_and_load(), + }; + + let config = match config_res { Ok(config) => config, Err(err) => { error!("{:?}", err); exit(ExitCode::Config as i32) } }; + debug!("Loaded config file"); if let Err(err) = create_bars(app, &display, wayland_client, &config) { From 6221f7454a2da2ec8a5a7f84e6fd35a8dc1a1548 Mon Sep 17 00:00:00 2001 From: Jake Stanger Date: Sun, 19 Mar 2023 16:20:17 +0000 Subject: [PATCH 3/3] refactor: fix new clippy warnings --- src/modules/custom.rs | 4 ++-- src/modules/launcher/mod.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modules/custom.rs b/src/modules/custom.rs index ee9a2f7..13af4f0 100644 --- a/src/modules/custom.rs +++ b/src/modules/custom.rs @@ -116,7 +116,7 @@ impl Widget { let mut builder = Label::builder().use_markup(true); if let Some(name) = self.name { - builder = builder.name(&name); + builder = builder.name(name); } let label = builder.build(); @@ -143,7 +143,7 @@ impl Widget { let mut builder = Button::builder(); if let Some(name) = self.name { - builder = builder.name(&name); + builder = builder.name(name); } let button = builder.build(); diff --git a/src/modules/launcher/mod.rs b/src/modules/launcher/mod.rs index 43f905c..50e96ed 100644 --- a/src/modules/launcher/mod.rs +++ b/src/modules/launcher/mod.rs @@ -438,7 +438,7 @@ impl Module for LauncherModule { .into_iter() .map(|(_, win)| { let button = Button::builder() - .label(&clamp(&win.name)) + .label(clamp(&win.name)) .height_request(40) .build(); @@ -468,7 +468,7 @@ impl Module for LauncherModule { if let Some(buttons) = buttons.get_mut(&app_id) { let button = Button::builder() .height_request(40) - .label(&clamp(&win.name)) + .label(clamp(&win.name)) .build(); {