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