Threaded to async (#58)

* Add async deps

* Rename blocks to 'BlockManager'

* Refactor "Blocks" to own module

* Make all util fn async

* Remove stray println
This commit is contained in:
Shoelace 2021-05-19 21:44:58 +02:00 committed by GitHub
parent b1d81bf8c9
commit 2a23bd2044
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 631 additions and 160 deletions

486
Cargo.lock generated
View File

@ -1,5 +1,7 @@
# This file is automatically @generated by Cargo. # This file is automatically @generated by Cargo.
# It is not intended for manual editing. # It is not intended for manual editing.
version = 3
[[package]] [[package]]
name = "ahash" name = "ahash"
version = "0.4.7" version = "0.4.7"
@ -28,6 +30,16 @@ dependencies = [
"pkg-config", "pkg-config",
] ]
[[package]]
name = "async-attributes"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5"
dependencies = [
"quote",
"syn",
]
[[package]] [[package]]
name = "async-channel" name = "async-channel"
version = "1.6.1" version = "1.6.1"
@ -39,6 +51,36 @@ dependencies = [
"futures-core", "futures-core",
] ]
[[package]]
name = "async-executor"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965"
dependencies = [
"async-task",
"concurrent-queue",
"fastrand",
"futures-lite",
"once_cell",
"slab",
]
[[package]]
name = "async-global-executor"
version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9586ec52317f36de58453159d48351bc244bc24ced3effc1fce22f3d48664af6"
dependencies = [
"async-channel",
"async-executor",
"async-io",
"async-mutex",
"blocking",
"futures-lite",
"num_cpus",
"once_cell",
]
[[package]] [[package]]
name = "async-io" name = "async-io"
version = "1.4.1" version = "1.4.1"
@ -59,6 +101,24 @@ dependencies = [
"winapi", "winapi",
] ]
[[package]]
name = "async-lock"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6a8ea61bf9947a1007c5cada31e647dbc77b103c679858150003ba697ea798b"
dependencies = [
"event-listener",
]
[[package]]
name = "async-mutex"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e"
dependencies = [
"event-listener",
]
[[package]] [[package]]
name = "async-net" name = "async-net"
version = "1.6.0" version = "1.6.0"
@ -71,12 +131,51 @@ dependencies = [
"futures-lite", "futures-lite",
] ]
[[package]]
name = "async-std"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9f06685bad74e0570f5213741bea82158279a4103d988e57bfada11ad230341"
dependencies = [
"async-attributes",
"async-channel",
"async-global-executor",
"async-io",
"async-lock",
"crossbeam-utils",
"futures-channel",
"futures-core",
"futures-io",
"futures-lite",
"gloo-timers",
"kv-log-macro",
"log",
"memchr",
"num_cpus",
"once_cell",
"pin-project-lite",
"pin-utils",
"slab",
"wasm-bindgen-futures",
]
[[package]] [[package]]
name = "async-task" name = "async-task"
version = "4.0.3" version = "4.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0"
[[package]]
name = "async-trait"
version = "0.1.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "atomic-waker" name = "atomic-waker"
version = "1.0.0" version = "1.0.0"
@ -171,6 +270,12 @@ version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bed57e2090563b83ba8f83366628ce535a7584c9afa4c9fc0612a03925c6df58" checksum = "bed57e2090563b83ba8f83366628ce535a7584c9afa4c9fc0612a03925c6df58"
[[package]]
name = "bytes"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040"
[[package]] [[package]]
name = "cache-padded" name = "cache-padded"
version = "1.1.1" version = "1.1.1"
@ -227,6 +332,27 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac"
[[package]]
name = "crossbeam-utils"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4feb231f0d4d6af81aed15928e58ecf5816aa62a2393e2c82f46973e92a9a278"
dependencies = [
"autocfg",
"cfg-if",
"lazy_static",
]
[[package]]
name = "ctor"
version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e98e2ad1a782e33928b96fc3948e7c355e5af34ba4de7670fe8bac2a3b2006d"
dependencies = [
"quote",
"syn",
]
[[package]] [[package]]
name = "cty" name = "cty"
version = "0.2.1" version = "0.2.1"
@ -265,16 +391,52 @@ dependencies = [
] ]
[[package]] [[package]]
name = "futures-core" name = "futures"
version = "0.3.14" version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "098cd1c6dda6ca01650f1a37a794245eb73181d0d4d4e955e2f3c37db7af1815" checksum = "0e7e43a803dae2fa37c1f6a8fe121e1f7bf9548b4dfc0522a42f34145dadfc27"
dependencies = [
"futures-channel",
"futures-core",
"futures-executor",
"futures-io",
"futures-sink",
"futures-task",
"futures-util",
]
[[package]]
name = "futures-channel"
version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2"
dependencies = [
"futures-core",
"futures-sink",
]
[[package]]
name = "futures-core"
version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1"
[[package]]
name = "futures-executor"
version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "badaa6a909fac9e7236d0620a2f57f7664640c56575b71a7552fbd68deafab79"
dependencies = [
"futures-core",
"futures-task",
"futures-util",
]
[[package]] [[package]]
name = "futures-io" name = "futures-io"
version = "0.3.14" version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "365a1a1fb30ea1c03a830fdb2158f5236833ac81fa0ad12fe35b29cddc35cb04" checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1"
[[package]] [[package]]
name = "futures-lite" name = "futures-lite"
@ -291,6 +453,65 @@ dependencies = [
"waker-fn", "waker-fn",
] ]
[[package]]
name = "futures-macro"
version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4c40298486cdf52cc00cd6d6987892ba502c7656a16a4192a9992b1ccedd121"
dependencies = [
"autocfg",
"proc-macro-hack",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "futures-sink"
version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a57bead0ceff0d6dde8f465ecd96c9338121bb7717d3e7b108059531870c4282"
[[package]]
name = "futures-task"
version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae"
[[package]]
name = "futures-util"
version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967"
dependencies = [
"autocfg",
"futures-channel",
"futures-core",
"futures-io",
"futures-macro",
"futures-sink",
"futures-task",
"memchr",
"pin-project-lite",
"pin-utils",
"proc-macro-hack",
"proc-macro-nested",
"slab",
]
[[package]]
name = "gloo-timers"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891f"
dependencies = [
"futures-channel",
"futures-core",
"js-sys",
"wasm-bindgen",
"web-sys",
]
[[package]] [[package]]
name = "hashbrown" name = "hashbrown"
version = "0.9.1" version = "0.9.1"
@ -300,6 +521,15 @@ dependencies = [
"ahash", "ahash",
] ]
[[package]]
name = "hermit-abi"
version = "0.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "instant" name = "instant"
version = "0.1.9" version = "0.1.9"
@ -317,13 +547,22 @@ checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736"
[[package]] [[package]]
name = "js-sys" name = "js-sys"
version = "0.3.50" version = "0.3.51"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c" checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062"
dependencies = [ dependencies = [
"wasm-bindgen", "wasm-bindgen",
] ]
[[package]]
name = "kv-log-macro"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f"
dependencies = [
"log",
]
[[package]] [[package]]
name = "lazy_static" name = "lazy_static"
version = "1.4.0" version = "1.4.0"
@ -357,6 +596,15 @@ version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
[[package]]
name = "lock_api"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb"
dependencies = [
"scopeguard",
]
[[package]] [[package]]
name = "log" name = "log"
version = "0.4.14" version = "0.4.14"
@ -364,6 +612,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"value-bag",
] ]
[[package]] [[package]]
@ -377,9 +626,9 @@ dependencies = [
[[package]] [[package]]
name = "memchr" name = "memchr"
version = "2.3.4" version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc"
[[package]] [[package]]
name = "minreq" name = "minreq"
@ -395,6 +644,28 @@ dependencies = [
"webpki-roots", "webpki-roots",
] ]
[[package]]
name = "mio"
version = "0.7.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf80d3e903b34e0bd7282b218398aec54e082c840d9baf8339e0080a0c542956"
dependencies = [
"libc",
"log",
"miow",
"ntapi",
"winapi",
]
[[package]]
name = "miow"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
dependencies = [
"winapi",
]
[[package]] [[package]]
name = "mpd" name = "mpd"
version = "0.0.12" version = "0.0.12"
@ -430,6 +701,15 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "ntapi"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44"
dependencies = [
"winapi",
]
[[package]] [[package]]
name = "num-integer" name = "num-integer"
version = "0.1.44" version = "0.1.44"
@ -449,6 +729,16 @@ dependencies = [
"autocfg", "autocfg",
] ]
[[package]]
name = "num_cpus"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
dependencies = [
"hermit-abi",
"libc",
]
[[package]] [[package]]
name = "once_cell" name = "once_cell"
version = "1.7.2" version = "1.7.2"
@ -461,12 +751,43 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
[[package]]
name = "parking_lot"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"
dependencies = [
"instant",
"lock_api",
"parking_lot_core",
]
[[package]]
name = "parking_lot_core"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018"
dependencies = [
"cfg-if",
"instant",
"libc",
"redox_syscall",
"smallvec",
"winapi",
]
[[package]] [[package]]
name = "pin-project-lite" name = "pin-project-lite"
version = "0.2.6" version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905"
[[package]]
name = "pin-utils"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]] [[package]]
name = "pkg-config" name = "pkg-config"
version = "0.3.19" version = "0.3.19"
@ -486,6 +807,18 @@ dependencies = [
"winapi", "winapi",
] ]
[[package]]
name = "proc-macro-hack"
version = "0.5.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
[[package]]
name = "proc-macro-nested"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086"
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.26" version = "1.0.26"
@ -504,6 +837,15 @@ dependencies = [
"proc-macro2", "proc-macro2",
] ]
[[package]]
name = "redox_syscall"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc"
dependencies = [
"bitflags",
]
[[package]] [[package]]
name = "ref_slice" name = "ref_slice"
version = "1.2.1" version = "1.2.1"
@ -530,16 +872,20 @@ name = "rsblocks"
version = "0.1.17" version = "0.1.17"
dependencies = [ dependencies = [
"alsa", "alsa",
"async-std",
"async-trait",
"battery", "battery",
"breadx", "breadx",
"chrono", "chrono",
"dbus", "dbus",
"futures",
"lazy_static", "lazy_static",
"minreq", "minreq",
"mpd", "mpd",
"nix 0.20.0", "nix 0.20.0",
"serde", "serde",
"serde_yaml", "serde_yaml",
"tokio",
] ]
[[package]] [[package]]
@ -567,6 +913,12 @@ version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
[[package]]
name = "scopeguard"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]] [[package]]
name = "sct" name = "sct"
version = "0.6.1" version = "0.6.1"
@ -579,18 +931,18 @@ dependencies = [
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.125" version = "1.0.126"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.125" version = "1.0.126"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -620,12 +972,27 @@ dependencies = [
"yaml-rust", "yaml-rust",
] ]
[[package]]
name = "signal-hook-registry"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16f1d0fef1604ba8f7a073c7e701f213e056707210e9020af4528e0101ce11a6"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "slab" name = "slab"
version = "0.4.3" version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527"
[[package]]
name = "smallvec"
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
[[package]] [[package]]
name = "socket2" name = "socket2"
version = "0.4.0" version = "0.4.0"
@ -644,9 +1011,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]] [[package]]
name = "syn" name = "syn"
version = "1.0.71" version = "1.0.72"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373" checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -679,6 +1046,37 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "tokio"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd3076b5c8cc18138b8f8814895c11eb4de37114a5d127bafdc5e55798ceef37"
dependencies = [
"autocfg",
"bytes",
"libc",
"memchr",
"mio",
"num_cpus",
"once_cell",
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
"tokio-macros",
"winapi",
]
[[package]]
name = "tokio-macros"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c49e3df43841dafb86046472506755d8501c5615673955f6aa17181125d13c37"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "typenum" name = "typenum"
version = "1.13.0" version = "1.13.0"
@ -687,9 +1085,9 @@ checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06"
[[package]] [[package]]
name = "unicode-xid" name = "unicode-xid"
version = "0.2.1" version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
[[package]] [[package]]
name = "untrusted" name = "untrusted"
@ -707,6 +1105,22 @@ dependencies = [
"typenum", "typenum",
] ]
[[package]]
name = "value-bag"
version = "1.0.0-alpha.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd320e1520f94261153e96f7534476ad869c14022aee1e59af7c778075d840ae"
dependencies = [
"ctor",
"version_check",
]
[[package]]
name = "version_check"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
[[package]] [[package]]
name = "waker-fn" name = "waker-fn"
version = "1.1.0" version = "1.1.0"
@ -721,9 +1135,9 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
[[package]] [[package]]
name = "wasm-bindgen" name = "wasm-bindgen"
version = "0.2.73" version = "0.2.74"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9" checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"wasm-bindgen-macro", "wasm-bindgen-macro",
@ -731,9 +1145,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen-backend" name = "wasm-bindgen-backend"
version = "0.2.73" version = "0.2.74"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae" checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900"
dependencies = [ dependencies = [
"bumpalo", "bumpalo",
"lazy_static", "lazy_static",
@ -745,10 +1159,22 @@ dependencies = [
] ]
[[package]] [[package]]
name = "wasm-bindgen-macro" name = "wasm-bindgen-futures"
version = "0.2.73" version = "0.4.24"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f" checksum = "5fba7978c679d53ce2d0ac80c8c175840feb849a161664365d1287b41f2e67f1"
dependencies = [
"cfg-if",
"js-sys",
"wasm-bindgen",
"web-sys",
]
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4"
dependencies = [ dependencies = [
"quote", "quote",
"wasm-bindgen-macro-support", "wasm-bindgen-macro-support",
@ -756,9 +1182,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen-macro-support" name = "wasm-bindgen-macro-support"
version = "0.2.73" version = "0.2.74"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c" checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -769,15 +1195,15 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen-shared" name = "wasm-bindgen-shared"
version = "0.2.73" version = "0.2.74"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489" checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f"
[[package]] [[package]]
name = "web-sys" name = "web-sys"
version = "0.3.50" version = "0.3.51"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a905d57e488fec8861446d3393670fb50d27a262344013181c2cdf9fff5481be" checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582"
dependencies = [ dependencies = [
"js-sys", "js-sys",
"wasm-bindgen", "wasm-bindgen",

View File

@ -13,15 +13,33 @@ description = "a multi threaded status bar for dwm window manager for linux"
[dependencies] [dependencies]
alsa = "0.5" alsa = "0.5"
chrono = "0.4" chrono = "0.4"
dbus = "0.9"
lazy_static = "1.4"
minreq = {version = "2.2", features = ["https","json-using-serde"]}
mpd = "0.0.12" mpd = "0.0.12"
nix = "0.20" nix = "0.20"
serde = {version = "1.0", features = ["derive"]}
serde_yaml = "0.8"
battery = "0.7" battery = "0.7"
dbus = "0.9.1"
serde_yaml = "0.8.15"
lazy_static = "1.4.0"
# Async deps
futures = "0.3.15"
async-trait = "0.1.50"
[dependencies.async-std]
version = "1.9.0"
features = ["attributes"]
[dependencies.tokio]
version = "1.6.0"
features = ["full"]
[dependencies.serde]
version = "1.0.120"
features = ["derive"]
[dependencies.breadx] [dependencies.breadx]
version = "0.1.11" version = "0.1.11"
features = ["async"] features = ["async"]
[dependencies.minreq]
version = "2.2"
features = ["https", "json-using-serde"]

54
src/blockmanager.rs Normal file
View File

@ -0,0 +1,54 @@
use breadx::{display::*, window::Window};
use crate::types::ThreadsData;
pub struct BlockManager {
pub disp: Display<name::NameConnection>,
blocks: Vec<String>,
pub root: Window,
}
impl BlockManager {
pub fn new() -> Self {
let disp = Display::create(None, None).expect("Failed to create x11 connection");
let root = disp.default_screen().root;
Self {
disp,
blocks: vec![String::from(""); 14],
root,
}
}
pub fn update(&mut self, data: ThreadsData) {
match data {
ThreadsData::Spotify(x) => self.blocks[0] = x,
ThreadsData::Mpd(x) => self.blocks[1] = x,
ThreadsData::Sound(x) => self.blocks[2] = x,
ThreadsData::Weather(x) => self.blocks[3] = x,
ThreadsData::NetSpeed(x) => self.blocks[4] = x,
ThreadsData::BitCoins(x) => self.blocks[5] = x,
ThreadsData::PubIp(x) => self.blocks[6] = x,
ThreadsData::Disk(x) => self.blocks[7] = x,
ThreadsData::Memory(x) => self.blocks[8] = x,
ThreadsData::CpuTemp(x) => self.blocks[9] = x,
ThreadsData::LoadAvg(x) => self.blocks[10] = x,
ThreadsData::Battery(x) => self.blocks[11] = x,
ThreadsData::Uptime(x) => self.blocks[12] = x,
ThreadsData::Time(x) => self.blocks[13] = x,
}
let mut x = String::new();
for i in self.blocks.iter() {
x.push_str(i.as_str());
}
self.root
.set_title(&mut self.disp, &x)
.expect("Failed to set title");
}
}
impl Default for BlockManager {
fn default() -> Self {
Self::new()
}
}

View File

@ -2,12 +2,17 @@ mod config;
mod run; mod run;
mod types; mod types;
mod utils; mod utils;
mod blockmanager;
use std::env; use std::env;
use std::process; use std::process;
use blockmanager::BlockManager;
use lazy_static::initialize; use lazy_static::initialize;
fn main() { #[async_std::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
initialize(&config::CONFIG); initialize(&config::CONFIG);
@ -17,6 +22,7 @@ fn main() {
process::exit(1); process::exit(1);
}; };
let blocks = types::Blocks::new(); let blocks = BlockManager::new();
run::run(blocks); run::run(blocks).await;
Ok(())
} }

View File

@ -1,135 +1,121 @@
use crate::blockmanager::*;
use crate::config::CONFIG; use crate::config::CONFIG;
use crate::types::*; use crate::types::*;
use crate::utils::*; use crate::utils::*;
use std::sync::mpsc; use async_std::channel::{unbounded, Sender};
use std::thread; use async_std::task;
use async_std::task::sleep;
use futures::future;
use futures::stream::StreamExt;
use std::time::Duration; use std::time::Duration;
use std::future::Future;
fn spawn_thread_loop<F>(tx: std::sync::mpsc::Sender<ThreadsData>, data: F, delay: f64)
async fn init_block<F, Fut>(tx: Sender<ThreadsData>, block: F, delay: f64)
where where
F: Fn() -> ThreadsData + Send + 'static, F: Fn() -> Fut,
Fut: Future<Output=ThreadsData>
{ {
thread::spawn(move || loop { loop {
tx.send(data()).unwrap(); let _ = tx.send(block().await).await;
thread::sleep(Duration::from_secs_f64(delay)); sleep(Duration::from_secs_f64(delay)).await;
}); }
} }
pub fn run(mut blocks: Blocks) { pub async fn run(mut blocks: BlockManager) {
let (tx, rx) = mpsc::channel(); let (tx, rx) = unbounded();
// loadavrage thread // loadavrage task
if CONFIG.loadavg.enabled { if CONFIG.loadavg.enabled {
spawn_thread_loop(tx.clone(), load_average::get_load_avg, CONFIG.loadavg.delay); let b = init_block(tx.clone(), load_average::get_load_avg, CONFIG.loadavg.delay);
task::spawn(b);
} }
// public ip thread // public ip task
if CONFIG.pub_ip.enabled { if CONFIG.pub_ip.enabled {
spawn_thread_loop(tx.clone(), pub_ip::get_pub_ip, CONFIG.pub_ip.delay); let b = init_block(tx.clone(), pub_ip::get_pub_ip, CONFIG.pub_ip.delay);
task::spawn(b);
} }
// spotify thread // spotify task
if CONFIG.spotify.enabled { if CONFIG.spotify.enabled {
spawn_thread_loop(tx.clone(), spotify::get_spotify, CONFIG.spotify.delay); let b = init_block(tx.clone(), spotify::get_spotify, CONFIG.spotify.delay);
task::spawn(b);
} }
// mpd thread // mpd task
if CONFIG.mpd.enabled { if CONFIG.mpd.enabled {
spawn_thread_loop(tx.clone(), mpd::get_mpd_current, CONFIG.mpd.delay); let b = init_block(tx.clone(), mpd::get_mpd_current, CONFIG.mpd.delay);
task::spawn(b);
} }
// volume thread // volume task
if CONFIG.volume.enabled { if CONFIG.volume.enabled {
spawn_thread_loop(tx.clone(), volume::get_volume, CONFIG.volume.delay); let b = init_block(tx.clone(), volume::get_volume, CONFIG.volume.delay);
task::spawn(b);
} }
// Disk thread // Disk task
if CONFIG.disk.enabled { if
spawn_thread_loop(tx.clone(), disk::get_disk, CONFIG.disk.delay); /*CONFIG.disk.enabled*/
false {
let b = init_block(tx.clone(), disk::get_disk, CONFIG.disk.delay);
task::spawn(b);
} }
// Memory thread // Memory task
if CONFIG.memory.enabled { if
spawn_thread_loop(tx.clone(), memory::get_memory, CONFIG.memory.delay); /*CONFIG.memory.enabled*/
false {
let b = init_block(tx.clone(), memory::get_memory, CONFIG.memory.delay);
task::spawn(b);
} }
// Weather thread // Weather task
if CONFIG.weather.enabled { if CONFIG.weather.enabled {
spawn_thread_loop(tx.clone(), weather::get_weather, CONFIG.weather.delay); let b = init_block(tx.clone(), weather::get_weather, CONFIG.weather.delay);
task::spawn(b);
} }
// Battery thread // Battery task
if CONFIG.battery.enabled { if CONFIG.battery.enabled {
spawn_thread_loop(tx.clone(), battery::get_battery, CONFIG.battery.delay); let b = init_block(tx.clone(), battery::get_battery, CONFIG.battery.delay);
task::spawn(b);
} }
// Cpu temperature thread // Cpu temperature task
if CONFIG.cpu_temperature.enabled { if CONFIG.cpu_temperature.enabled {
spawn_thread_loop(tx.clone(), cpu::get_cpu_temp, CONFIG.cpu_temperature.delay); let b = init_block(tx.clone(), cpu::get_cpu_temp, CONFIG.cpu_temperature.delay);
task::spawn(b);
} }
// Uptime thread // Uptime task
if CONFIG.uptime.enabled { if CONFIG.uptime.enabled {
spawn_thread_loop(tx.clone(), uptime::get_uptime, CONFIG.uptime.delay); let b = init_block(tx.clone(), uptime::get_uptime, CONFIG.uptime.delay);
task::spawn(b);
} }
// BTC thread // BTC task
if CONFIG.bitcoins.enabled { if CONFIG.bitcoins.enabled {
spawn_thread_loop(tx.clone(), bitcoins::get_price, CONFIG.bitcoins.delay); let b = init_block(tx.clone(), bitcoins::get_price, CONFIG.bitcoins.delay);
task::spawn(b);
} }
// net speed thread // net speed task
// get_netspeed will sleep inside the function
if CONFIG.netspeed.enabled { if CONFIG.netspeed.enabled {
let net_tx = tx.clone(); let b = init_block(tx.clone(), netspeed::get_netspeed, 0.);
thread::spawn(move || loop { task::spawn(b);
let net_data = netspeed::get_netspeed();
net_tx.send(net_data).unwrap();
});
} }
// Time thread // Time task
{ let b = init_block(tx, time::get_time, CONFIG.time.delay);
spawn_thread_loop(tx, time::get_time, CONFIG.time.delay); task::spawn(b);
}
//Main // NOTE: order matters to the final format
{
// NOTE: order matters to the final format
let mut bar: Vec<String> = vec![String::from(""); 14]; rx.for_each(|data| {
//iterating the values recieved from the threads blocks.update(data);
for data in rx { future::ready(())
match data { })
ThreadsData::Spotify(x) => bar[0] = x, .await;
ThreadsData::Mpd(x) => bar[1] = x,
ThreadsData::Sound(x) => bar[2] = x,
ThreadsData::Weather(x) => bar[3] = x,
ThreadsData::NetSpeed(x) => bar[4] = x,
ThreadsData::BitCoins(x) => bar[5] = x,
ThreadsData::PubIp(x) => bar[6] = x,
ThreadsData::Disk(x) => bar[7] = x,
ThreadsData::Memory(x) => bar[8] = x,
ThreadsData::CpuTemp(x) => bar[9] = x,
ThreadsData::LoadAvg(x) => bar[10] = x,
ThreadsData::Battery(x) => bar[11] = x,
ThreadsData::Uptime(x) => bar[12] = x,
ThreadsData::Time(x) => bar[13] = x,
}
// match ends here
update(&bar, &mut blocks);
}
}
}
fn update(bar: &[String], blocks: &mut Blocks) {
let mut x = String::new();
for i in bar.iter() {
x.push_str(i.as_str());
}
blocks
.root
.set_title(&mut blocks.disp, &x)
.expect("Failed to set title of root");
} }

View File

@ -1,4 +1,3 @@
use breadx::{display::*, window::Window};
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub enum ThreadsData { pub enum ThreadsData {
@ -140,21 +139,3 @@ pub struct BitCoins {
pub delay: f64, pub delay: f64,
} }
pub struct Blocks {
pub disp: Display<name::NameConnection>,
pub root: Window,
}
impl Blocks {
pub fn new() -> Self {
let disp = Display::create(None, None).expect("Failed to create x11 connection");
let root = disp.default_screen().root;
Self { disp, root }
}
}
impl Default for Blocks {
fn default() -> Self {
Self::new()
}
}

View File

@ -5,7 +5,7 @@ use battery::Manager;
// TODO: better error handeling // TODO: better error handeling
// getting battery percentage // getting battery percentage
pub fn get_battery() -> ThreadsData { pub async fn get_battery() -> ThreadsData {
let battery_manager = if let Ok(manager) = Manager::new() { let battery_manager = if let Ok(manager) = Manager::new() {
manager manager
} else { } else {

View File

@ -7,7 +7,7 @@ struct Response {
price_24h: f64, price_24h: f64,
} }
pub fn get_price() -> ThreadsData { pub async fn get_price() -> ThreadsData {
let url = format!( let url = format!(
"https://api.blockchain.com/v3/exchange/tickers/{}", "https://api.blockchain.com/v3/exchange/tickers/{}",
CONFIG.bitcoins.symbol CONFIG.bitcoins.symbol

View File

@ -3,7 +3,7 @@ use crate::types::ThreadsData;
use std::fs::read_to_string; use std::fs::read_to_string;
// getting cpu temperature // getting cpu temperature
pub fn get_cpu_temp() -> ThreadsData { pub async fn get_cpu_temp() -> ThreadsData {
let buf = match read_to_string("/sys/class/thermal/thermal_zone0/temp") { let buf = match read_to_string("/sys/class/thermal/thermal_zone0/temp") {
Ok(data) => data, Ok(data) => data,
_ => return ThreadsData::CpuTemp(String::from("Error reading temp")), _ => return ThreadsData::CpuTemp(String::from("Error reading temp")),

View File

@ -1,7 +1,7 @@
use crate::config::CONFIG; use crate::config::CONFIG;
use crate::types::ThreadsData; use crate::types::ThreadsData;
pub fn get_disk() -> ThreadsData { pub async fn get_disk() -> ThreadsData {
const GB: u64 = (1024 * 1024) * 1024; const GB: u64 = (1024 * 1024) * 1024;
let statvfs = nix::sys::statvfs::statvfs("/").unwrap(); let statvfs = nix::sys::statvfs::statvfs("/").unwrap();
let mut disk_used = String::new(); let mut disk_used = String::new();

View File

@ -3,7 +3,7 @@ use crate::types::ThreadsData;
use nix::libc::{c_double, c_int, getloadavg}; use nix::libc::{c_double, c_int, getloadavg};
pub fn get_load_avg() -> ThreadsData { pub async fn get_load_avg() -> ThreadsData {
let mut data: [c_double; 3] = [0f64; 3]; let mut data: [c_double; 3] = [0f64; 3];
unsafe { getloadavg(data.as_mut_ptr(), data.len() as c_int) }; unsafe { getloadavg(data.as_mut_ptr(), data.len() as c_int) };
let [load, _, _] = data; let [load, _, _] = data;

View File

@ -7,7 +7,7 @@ mem_used = (mem_total + shmem - mem_free - mem_buffers - mem_cached - mem_srecl
thanks for htop's developer on stackoverflow for providing this algorithm to thanks for htop's developer on stackoverflow for providing this algorithm to
calculate used memory. calculate used memory.
*/ */
pub fn get_memory() -> ThreadsData { pub async fn get_memory() -> ThreadsData {
let buf = match read_to_string("/proc/meminfo") { let buf = match read_to_string("/proc/meminfo") {
Ok(data) => data, Ok(data) => data,
_ => return ThreadsData::Memory(String::from("Error Reading memory!")), _ => return ThreadsData::Memory(String::from("Error Reading memory!")),

View File

@ -12,3 +12,4 @@ pub mod time;
pub mod uptime; pub mod uptime;
pub mod volume; pub mod volume;
pub mod weather; pub mod weather;

View File

@ -3,7 +3,7 @@ use crate::types::ThreadsData;
use mpd::{Client, Song}; use mpd::{Client, Song};
// getting mpd song file // getting mpd song file
pub fn get_mpd_current() -> ThreadsData { pub async fn get_mpd_current() -> ThreadsData {
let stream_path = format!("{}:{}", CONFIG.mpd.host, CONFIG.mpd.port); let stream_path = format!("{}:{}", CONFIG.mpd.host, CONFIG.mpd.port);
let empty_data = ThreadsData::Mpd(String::from("")); let empty_data = ThreadsData::Mpd(String::from(""));
let mut conn = match Client::connect(&stream_path) { let mut conn = match Client::connect(&stream_path) {

View File

@ -1,13 +1,13 @@
use crate::config::CONFIG; use crate::config::CONFIG;
use crate::types::ThreadsData; use crate::types::ThreadsData;
use std::fs::read_to_string; use std::fs::read_to_string;
use std::thread; use async_std::task::sleep;
use std::time::Duration; use std::time::Duration;
pub fn get_netspeed() -> ThreadsData { pub async fn get_netspeed() -> ThreadsData {
let tx1: u64 = parse_speed_file("tx_bytes"); let tx1: u64 = parse_speed_file("tx_bytes");
let rx1: u64 = parse_speed_file("rx_bytes"); let rx1: u64 = parse_speed_file("rx_bytes");
thread::sleep(Duration::from_secs(1)); sleep(Duration::from_secs(1)).await;
let tx2: u64 = parse_speed_file("tx_bytes"); let tx2: u64 = parse_speed_file("tx_bytes");
let rx2: u64 = parse_speed_file("rx_bytes"); let rx2: u64 = parse_speed_file("rx_bytes");

View File

@ -1,7 +1,7 @@
use crate::config::CONFIG; use crate::config::CONFIG;
use crate::types::ThreadsData; use crate::types::ThreadsData;
pub fn get_pub_ip() -> ThreadsData { pub async fn get_pub_ip() -> ThreadsData {
let url = "http://api.ipify.org".to_string(); let url = "http://api.ipify.org".to_string();
let _err = String::from("Error"); let _err = String::from("Error");
let res = match minreq::get(url).send() { let res = match minreq::get(url).send() {

View File

@ -5,7 +5,7 @@ use dbus::{arg, blocking::Connection};
use std::time::Duration; use std::time::Duration;
// getting spotify current artist and title. // getting spotify current artist and title.
pub fn get_spotify() -> ThreadsData { pub async fn get_spotify() -> ThreadsData {
let empty_data = ThreadsData::Spotify(String::from("")); let empty_data = ThreadsData::Spotify(String::from(""));
let conn = match Connection::new_session() { let conn = match Connection::new_session() {
Ok(conn) => conn, Ok(conn) => conn,

View File

@ -2,7 +2,7 @@ use crate::config::CONFIG;
use crate::types::ThreadsData; use crate::types::ThreadsData;
use chrono::prelude::*; use chrono::prelude::*;
pub fn get_time() -> ThreadsData { pub async fn get_time() -> ThreadsData {
let now = Local::now(); let now = Local::now();
let data = format!( let data = format!(
@ -11,6 +11,5 @@ pub fn get_time() -> ThreadsData {
now.format(&CONFIG.time.format), now.format(&CONFIG.time.format),
CONFIG.seperator CONFIG.seperator
); );
ThreadsData::Time(data) ThreadsData::Time(data)
} }

View File

@ -2,7 +2,7 @@ use crate::config::CONFIG;
use crate::types::ThreadsData; use crate::types::ThreadsData;
use nix::time::clock_gettime; use nix::time::clock_gettime;
pub fn get_uptime() -> ThreadsData { pub async fn get_uptime() -> ThreadsData {
let (_, hour, minutes, seconds) = get_uptime_data(); let (_, hour, minutes, seconds) = get_uptime_data();
let uptime = if hour > 0 { let uptime = if hour > 0 {
format!("{}:{}:{}", hour, minutes, seconds) format!("{}:{}:{}", hour, minutes, seconds)

View File

@ -3,7 +3,7 @@ use crate::types::ThreadsData;
use alsa::mixer::{Mixer, SelemChannelId, SelemId}; use alsa::mixer::{Mixer, SelemChannelId, SelemId};
// getting volume percentage // getting volume percentage
pub fn get_volume() -> ThreadsData { pub async fn get_volume() -> ThreadsData {
let card = if CONFIG.volume.card == "PULSE" { let card = if CONFIG.volume.card == "PULSE" {
"pulse" "pulse"
} else { } else {

View File

@ -2,7 +2,7 @@ use crate::config::CONFIG;
use crate::types::ThreadsData; use crate::types::ThreadsData;
// will make a GET request from wttr.in // will make a GET request from wttr.in
pub fn get_weather() -> ThreadsData { pub async fn get_weather() -> ThreadsData {
let format = if CONFIG.weather.format.is_empty() { let format = if CONFIG.weather.format.is_empty() {
String::from("%l:+%t") String::from("%l:+%t")
} else { } else {