diff --git a/.idea/git_toolbox_blame.xml b/.idea/git_toolbox_blame.xml new file mode 100644 index 00000000..7dc12496 --- /dev/null +++ b/.idea/git_toolbox_blame.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index a35ae678..047bc5cf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "ahash" version = "0.8.3" @@ -214,7 +220,7 @@ checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -231,7 +237,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -279,7 +285,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.6.2", "object", "rustc-demangle", ] @@ -374,7 +380,7 @@ dependencies = [ "glib", "libc", "once_cell", - "thiserror", + "thiserror 1.0.58", ] [[package]] @@ -399,7 +405,7 @@ dependencies = [ "polling 3.3.1", "rustix 0.38.28", "slab", - "thiserror", + "thiserror 1.0.58", ] [[package]] @@ -456,9 +462,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.16" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -466,9 +472,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", @@ -478,14 +484,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -561,6 +567,15 @@ dependencies = [ "libc", ] +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + [[package]] name = "crossbeam-channel" version = "0.5.8" @@ -811,7 +826,7 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -861,6 +876,15 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +[[package]] +name = "fdeflate" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07c6f4c64c1d33a3111c4466f7365ebdcc37c5bd1ea0d62aae2e3d722aacbedb" +dependencies = [ + "simd-adler32", +] + [[package]] name = "field-offset" version = "0.3.5" @@ -883,6 +907,16 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "flate2" +version = "1.0.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +dependencies = [ + "crc32fast", + "miniz_oxide 0.8.0", +] + [[package]] name = "fnv" version = "1.0.7" @@ -951,9 +985,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -961,9 +995,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" @@ -978,9 +1012,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" @@ -999,9 +1033,9 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ "fastrand 2.0.1", "futures-core", @@ -1012,13 +1046,13 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -1039,21 +1073,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1143,7 +1177,7 @@ checksum = "913dce4c5f06c2ea40fc178c06f777ac89fc6b1383e90c254fafb1abe4ba3c82" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", "uuid", ] @@ -1180,7 +1214,7 @@ dependencies = [ "once_cell", "pin-project-lite", "smallvec", - "thiserror", + "thiserror 1.0.58", ] [[package]] @@ -1216,7 +1250,7 @@ dependencies = [ "memchr", "once_cell", "smallvec", - "thiserror", + "thiserror 1.0.58", ] [[package]] @@ -1230,7 +1264,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -1331,7 +1365,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -1355,9 +1389,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" [[package]] name = "heck" @@ -1516,9 +1550,9 @@ dependencies = [ [[package]] name = "hyprland" -version = "0.4.0-alpha.2" +version = "0.4.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d627cd06fb3389f2554b7a4bb21db8c0bfca8863e6e653702cc4c6dbf20d8276" +checksum = "2de3f836e02af5a12f374d3a986867c1dc487a63a6d19477d66c7de50f715895" dependencies = [ "ahash", "derive_more", @@ -1540,7 +1574,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dd8ce4c182ce77e485918f49262425ee51a2746fe97f14084869aeff2fbc38e" dependencies = [ "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -1590,9 +1624,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", "hashbrown", @@ -1601,9 +1635,9 @@ dependencies = [ [[package]] name = "inotify" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc" dependencies = [ "bitflags 1.3.2", "inotify-sys", @@ -1656,7 +1690,7 @@ dependencies = [ "color-eyre", "ctrlc", "dirs", - "futures-lite 2.3.0", + "futures-lite 2.5.0", "futures-signals", "futures-util", "glib", @@ -1671,6 +1705,7 @@ dependencies = [ "mpris", "nix 0.29.0", "notify", + "png", "regex", "reqwest", "schemars", @@ -1712,9 +1747,9 @@ dependencies = [ [[package]] name = "kqueue" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8fc60ba15bf51257aa9807a48a61013db043fcf3a78cb0d916e8e396dcad98" +checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" dependencies = [ "kqueue-sys", "libc", @@ -1722,9 +1757,9 @@ dependencies = [ [[package]] name = "kqueue-sys" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8367585489f01bc55dd27404dcf56b95e6da061a256a666ab23be9ba96a2e587" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" dependencies = [ "bitflags 1.3.2", "libc", @@ -1753,7 +1788,7 @@ dependencies = [ "pest", "pest_derive", "serde", - "thiserror", + "thiserror 1.0.58", ] [[package]] @@ -1896,15 +1931,13 @@ dependencies = [ ] [[package]] -name = "mio" -version = "0.8.11" +name = "miniz_oxide" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "libc", - "log", - "wasi", - "windows-sys 0.48.0", + "adler2", + "simd-adler32", ] [[package]] @@ -1915,6 +1948,7 @@ checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ "hermit-abi 0.3.9", "libc", + "log", "wasi", "windows-sys 0.52.0", ] @@ -1951,7 +1985,7 @@ checksum = "8fe50e71b3206a46eff95e96549aa60953dc072baffaa04b71415024f8f254d2" dependencies = [ "futures", "mpd_client", - "thiserror", + "thiserror 1.0.58", "tokio", "tracing", ] @@ -1991,7 +2025,7 @@ dependencies = [ "derive_is_enum_variant", "enum-kinds", "from_variants", - "thiserror", + "thiserror 1.0.58", ] [[package]] @@ -2048,9 +2082,9 @@ dependencies = [ [[package]] name = "notify" -version = "6.1.1" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" +checksum = "c533b4c39709f9ba5005d8002048266593c1cfaf3c5f0739d5b8ab0c6c504009" dependencies = [ "bitflags 2.4.0", "filetime", @@ -2058,9 +2092,19 @@ dependencies = [ "kqueue", "libc", "log", - "mio 0.8.11", + "mio", + "notify-types", "walkdir", - "windows-sys 0.48.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "notify-types" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7393c226621f817964ffb3dc5704f9509e107a8b024b489cc2c1b217378785df" +dependencies = [ + "instant", ] [[package]] @@ -2156,7 +2200,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -2254,7 +2298,7 @@ version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1acb4a4365a13f749a93f1a094a7805e5cfa0955373a9de860d962eaa3a5fe5a" dependencies = [ - "thiserror", + "thiserror 1.0.58", "ucd-trie", ] @@ -2278,7 +2322,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -2309,7 +2353,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -2330,6 +2374,19 @@ version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +[[package]] +name = "png" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide 0.8.0", +] + [[package]] name = "polling" version = "2.7.0" @@ -2417,9 +2474,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.76" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -2532,19 +2589,19 @@ checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom", "redox_syscall 0.2.16", - "thiserror", + "thiserror 1.0.58", ] [[package]] name = "regex" -version = "1.10.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.4", - "regex-syntax 0.8.2", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -2558,13 +2615,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.4" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.5", ] [[package]] @@ -2575,15 +2632,15 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "base64 0.22.0", "bytes", @@ -2779,7 +2836,7 @@ dependencies = [ "proc-macro2", "quote 1.0.35", "serde_derive_internals", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -2825,22 +2882,22 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.209" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -2851,14 +2908,14 @@ checksum = "330f01ce65a3a5fe59a60c82f3c9a024b573b8a6e875bd233fe5f934e71d54e3" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.127" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -2874,7 +2931,7 @@ checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -2961,6 +3018,12 @@ dependencies = [ "libc", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "slab" version = "0.4.8" @@ -2990,7 +3053,7 @@ dependencies = [ "log", "memmap2", "rustix 0.38.28", - "thiserror", + "thiserror 1.0.58", "wayland-backend", "wayland-client", "wayland-csd-frame", @@ -3082,7 +3145,7 @@ checksum = "44b43b4059d825ccc04adf9726f944d0e3aa20938f4cff3b5c6b53198afcd6b3" dependencies = [ "serde", "serde_json", - "thiserror", + "thiserror 1.0.58", ] [[package]] @@ -3109,9 +3172,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote 1.0.35", @@ -3166,12 +3229,12 @@ dependencies = [ [[package]] name = "system-tray" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82a053bfb84b11f5eb8655a762ba826a2524d02a2f355b0fd6fce4125272f2e0" +checksum = "66066cf85f8a4985ae5a40ca4387036e4f870d95fbf113ffaab714796785d0f2" dependencies = [ "serde", - "thiserror", + "thiserror 2.0.0", "tokio", "tracing", "zbus", @@ -3196,7 +3259,16 @@ version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.58", +] + +[[package]] +name = "thiserror" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15291287e9bff1bc6f9ff3409ed9af665bec7a5fc8ac079ea96be07bca0e2668" +dependencies = [ + "thiserror-impl 2.0.0", ] [[package]] @@ -3207,7 +3279,18 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22efd00f33f93fa62848a7cab956c3d38c8d43095efda1decfc2b3a5dc0b8972" +dependencies = [ + "proc-macro2", + "quote 1.0.35", + "syn 2.0.87", ] [[package]] @@ -3268,14 +3351,14 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.3" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.1", + "mio", "pin-project-lite", "signal-hook-registry", "socket2 0.5.5", @@ -3292,7 +3375,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -3447,7 +3530,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ "crossbeam-channel", - "thiserror", + "thiserror 1.0.58", "time", "tracing-subscriber", ] @@ -3460,7 +3543,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -3585,7 +3668,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "thiserror", + "thiserror 1.0.58", "toml 0.8.12", "tracing", ] @@ -3717,26 +3800,27 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote 1.0.35", - "syn 1.0.109", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -3754,9 +3838,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote 1.0.35", "wasm-bindgen-macro-support", @@ -3764,22 +3848,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 1.0.109", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wayland-backend" diff --git a/Cargo.toml b/Cargo.toml index 70709faa..213e5770 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,7 +68,7 @@ notifications = ["zbus"] sys_info = ["sysinfo", "regex"] -tray = ["system-tray"] +tray = ["system-tray", "png"] upower = ["upower_dbus", "zbus", "futures-lite"] @@ -89,7 +89,7 @@ schema = ["dep:schemars"] gtk = "0.18.1" gtk-layer-shell = "0.8.1" glib = "0.18.5" -tokio = { version = "1.39.3", features = [ +tokio = { version = "1.41.1", features = [ "macros", "rt-multi-thread", "time", @@ -104,11 +104,11 @@ tracing-error = { version = "0.2.0" , default-features = false } tracing-appender = "0.2.3" strip-ansi-escapes = "0.2.0" color-eyre = "0.6.3" -serde = { version = "1.0.209", features = ["derive"] } -indexmap = "2.4.0" +serde = { version = "1.0.214", features = ["derive"] } +indexmap = "2.6.0" dirs = "5.0.1" walkdir = "2.5.0" -notify = { version = "6.1.1", default-features = false } +notify = { version = "7.0.0", default-features = false } wayland-client = "0.31.1" wayland-protocols-wlr = { version = "0.2.0", features = ["client"] } smithay-client-toolkit = { version = "0.18.1", default-features = false, features = [ @@ -119,13 +119,13 @@ ctrlc = "3.4.5" cfg-if = "1.0.0" # cli -clap = { version = "4.5.16", optional = true, features = ["derive"] } +clap = { version = "4.5.20", optional = true, features = ["derive"] } # ipc -serde_json = { version = "1.0.127", optional = true } +serde_json = { version = "1.0.132", optional = true } # http -reqwest = { version = "0.12.7", default-features = false, features = ["default-tls", "http2"], optional = true } +reqwest = { version = "0.12.9", default-features = false, features = ["default-tls", "http2"], optional = true } # cairo lua-src = { version = "547.0.0", optional = true } @@ -149,7 +149,8 @@ futures-signals = { version = "0.3.34", optional = true } sysinfo = { version = "0.29.11", optional = true } # tray -system-tray = { version = "0.2.0", optional = true } +system-tray = { version = "0.3.0", optional = true } +png = { version = "0.17.14", optional = true } # upower upower_dbus = { version = "0.3.2", optional = true } @@ -159,12 +160,12 @@ libpulse-binding = { version = "2.28.1", optional = true } # workspaces swayipc-async = { version = "2.0.1", optional = true } -hyprland = { version = "0.4.0-alpha.2", features = ["silent"], optional = true } -futures-util = { version = "0.3.30", optional = true } +hyprland = { version = "0.4.0-alpha.3", features = ["silent"], optional = true } +futures-util = { version = "0.3.31", optional = true } # shared -futures-lite = { version = "2.3.0", optional = true } # network_manager, upower, workspaces -regex = { version = "1.10.6", default-features = false, features = [ +futures-lite = { version = "2.5.0", optional = true } # network_manager, upower, workspaces +regex = { version = "1.11.1", default-features = false, features = [ "std", ], optional = true } # music, sys_info zbus = { version = "3.15.2", default-features = false, features = ["tokio"], optional = true } # network_manager, notifications, upower diff --git a/docs/Dynamic values.md b/docs/Dynamic values.md index 75ff2c1e..46a89163 100644 --- a/docs/Dynamic values.md +++ b/docs/Dynamic values.md @@ -25,7 +25,7 @@ Dynamic booleans can use a single source of either a script or variable to contr For scripts, you can just write these directly with no notation. Only polling scripts are supported. -The script exit code is used, where `0` is `true` and any other code is `false. +The script exit code is used, where `0` is `true` and any other code is `false`. For variables, use the standard `#name` notation. An empty string, `0` and `false` are treated as false. diff --git a/flake.lock b/flake.lock index 66f2c106..d3f0724a 100644 --- a/flake.lock +++ b/flake.lock @@ -1,17 +1,12 @@ { "nodes": { "crane": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, "locked": { - "lastModified": 1722704454, - "narHash": "sha256-lcut8uZMSa80z+aWpxg+9nM8BKWtpU59rtcpMXtHd1Q=", + "lastModified": 1730060262, + "narHash": "sha256-RMgSVkZ9H03sxC+Vh4jxtLTCzSjPq18UWpiM0gq6shQ=", "owner": "ipetkov", "repo": "crane", - "rev": "852a59f9672c3413d75bca2b3e9cb4c661cacfc3", + "rev": "498d9f122c413ee1154e8131ace5a35a80d8fa76", "type": "github" }, "original": { @@ -40,11 +35,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1722640603, - "narHash": "sha256-TcXjLVNd3VeH1qKPH335Tc4RbFDbZQX+d7rqnDUoRaY=", + "lastModified": 1730272153, + "narHash": "sha256-B5WRZYsRlJgwVHIV6DvidFN7VX7Fg9uuwkRW9Ha8z+w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "81610abc161d4021b29199aa464d6a1a521e0cc9", + "rev": "2d2a9ddbe3f2c00747398f3dc9b05f7f2ebb0f53", "type": "github" }, "original": { @@ -54,11 +49,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1722630782, - "narHash": "sha256-hMyG9/WlUi0Ho9VkRrrez7SeNlDzLxalm9FwY7n/Noo=", + "lastModified": 1730200266, + "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d04953086551086b44b6f3c6b7eeb26294f207da", + "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd", "type": "github" }, "original": { @@ -83,11 +78,11 @@ ] }, "locked": { - "lastModified": 1722738111, - "narHash": "sha256-cWD5pCs9AYb+512/yCx9D0Pl5KcmyuXHeJpsDw/D1vs=", + "lastModified": 1730341826, + "narHash": "sha256-RFaeY7EWzXOmAL2IQEACbnrEza3TgD5UQApHR4hGHhY=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "27ec296d93cb4b2d03e8cbd019b1b4cde8c34280", + "rev": "815d1b3ee71716fc91a7bd149801e1f04d45fbc5", "type": "github" }, "original": { diff --git a/src/clients/mod.rs b/src/clients/mod.rs index a74310b0..7b6b3123 100644 --- a/src/clients/mod.rs +++ b/src/clients/mod.rs @@ -1,4 +1,4 @@ -use crate::{await_sync, Ironbar}; +use crate::await_sync; use color_eyre::Result; use std::path::Path; use std::rc::Rc; @@ -151,9 +151,7 @@ impl Clients { let client = match &self.tray { Some(client) => client.clone(), None => { - let service_name = format!("{}-{}", env!("CARGO_CRATE_NAME"), Ironbar::unique_id()); - - let client = await_sync(async { tray::Client::new(&service_name).await })?; + let client = await_sync(async { tray::Client::new().await })?; let client = Arc::new(client); self.tray.replace(client.clone()); client diff --git a/src/config/common.rs b/src/config/common.rs index f1bc3c7c..d987e853 100644 --- a/src/config/common.rs +++ b/src/config/common.rs @@ -246,6 +246,13 @@ impl CommonConfig { let script = match event.direction() { ScrollDirection::Up => scroll_up_script.as_ref(), ScrollDirection::Down => scroll_down_script.as_ref(), + ScrollDirection::Smooth => { + if event.scroll_deltas().unwrap_or_default().1 > 0.0 { + scroll_down_script.as_ref() + } else { + scroll_up_script.as_ref() + } + } _ => None, }; diff --git a/src/dynamic_value/dynamic_string.rs b/src/dynamic_value/dynamic_string.rs index 6c0cfb52..7c0dbdb9 100644 --- a/src/dynamic_value/dynamic_string.rs +++ b/src/dynamic_value/dynamic_string.rs @@ -22,7 +22,7 @@ enum DynamicStringSegment { /// /// ```rs /// dynamic_string(&text, move |string| { -/// label.set_markup(&string); +/// label.set_label_escaped(&string); /// }); /// ``` pub fn dynamic_string(input: &str, mut f: F) diff --git a/src/gtk_helpers.rs b/src/gtk_helpers.rs index cc88822b..628ac3a6 100644 --- a/src/gtk_helpers.rs +++ b/src/gtk_helpers.rs @@ -1,4 +1,4 @@ -use glib::IsA; +use glib::{markup_escape_text, IsA}; use gtk::prelude::*; use gtk::{Orientation, Widget}; @@ -75,3 +75,22 @@ impl> IronbarGtkExt for W { unsafe { self.set_data(key, value) } } } + +pub trait IronbarLabelExt { + /// Sets the label value to the provided string. + /// + /// If the label does not contain markup `span` tags, + /// the text is escaped to avoid issues with special characters (ie `&`). + /// Otherwise, the text is used verbatim, and it is up to the user to escape. + fn set_label_escaped(&self, label: &str); +} + +impl IronbarLabelExt for gtk::Label { + fn set_label_escaped(&self, label: &str) { + if !label.contains(" { if path.exists() { - load_css(path); + load_css(path, application.clone()); Response::Ok } else { Response::error("File not found") diff --git a/src/main.rs b/src/main.rs index 2d1699ce..a642e735 100644 --- a/src/main.rs +++ b/src/main.rs @@ -179,7 +179,7 @@ impl Ironbar { ); if style_path.exists() { - load_css(style_path); + load_css(style_path, app.clone()); } let (tx, rx) = mpsc::channel(); @@ -464,7 +464,7 @@ where /// Blocks on a `Future` until it resolves. /// /// This is not an `async` operation -/// so can be used outside of an async function. +/// so can be used outside an async function. /// /// Use sparingly, as this risks blocking the UI thread! /// Prefer async functions wherever possible. diff --git a/src/modules/clipboard.rs b/src/modules/clipboard.rs index 751c1157..aea0c32f 100644 --- a/src/modules/clipboard.rs +++ b/src/modules/clipboard.rs @@ -209,16 +209,24 @@ impl Module