From ae305313eb6beb92fb71c15716780835fabbda8a Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Sat, 30 Jan 2021 10:11:20 -0500 Subject: [PATCH] pilno lahoi sway Signed-off-by: Christine Dodrill --- Cargo.lock | 645 ++------------------------------------ Cargo.toml | 6 +- nix/sources.json | 20 +- src/bin/cabytcinysuhei.rs | 65 ++++ src/config.rs | 4 +- src/front.rs | 9 +- src/lib.rs | 89 ++++++ src/main.rs | 81 +---- src/weather.rs | 9 +- src/xsetroot.rs | 6 +- 10 files changed, 220 insertions(+), 714 deletions(-) create mode 100644 src/bin/cabytcinysuhei.rs create mode 100644 src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 2df2289..126c72e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,7 +23,7 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi", "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -34,15 +34,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "base64" -version = "0.12.3" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "bitflags" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bumpalo" @@ -50,12 +44,6 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" -[[package]] -name = "bytes" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" - [[package]] name = "cabytcini" version = "0.3.0" @@ -64,10 +52,10 @@ dependencies = [ "chrono", "env_logger", "log", - "reqwest", "serde", "serde_json", "toml", + "ureq", "xdg", ] @@ -93,14 +81,14 @@ dependencies = [ "num-integer", "num-traits", "time", - "winapi 0.3.9", + "winapi", ] [[package]] -name = "dtoa" -version = "0.4.6" +name = "chunked_transfer" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134951f4028bdadb9b84baf4232681efbf277da25144b9b0ad65df75946c422b" +checksum = "7477065d45a8fe57167bf3cf8bcd3729b54cfcb81cca49bda2d038ea89ae82ca" [[package]] name = "encoding_rs" @@ -124,120 +112,6 @@ dependencies = [ "termcolor", ] -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -dependencies = [ - "bitflags", - "fuchsia-zircon-sys", -] - -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - -[[package]] -name = "futures-channel" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0448174b01148032eed37ac4aed28963aaaa8cfa93569a08e5b479bbc6c2c151" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18eaa56102984bed2c88ea39026cff3ce3b4c7f508ca970cedf2450ea10d4e46" - -[[package]] -name = "futures-io" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1798854a4727ff944a7b12aa999f58ce7aa81db80d2dfaaf2ba06f065ddd2b" - -[[package]] -name = "futures-macro" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36fccf3fc58563b4a14d265027c627c3b665d7fed489427e88e7cc929559efe" -dependencies = [ - "proc-macro-hack", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e3ca3f17d6e8804ae5d3df7a7d35b2b3a6fe89dac84b31872720fc3060a0b11" - -[[package]] -name = "futures-task" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d502af37186c4fef99453df03e374683f8a1eec9dcc1e66b3b82dc8278ce3c" -dependencies = [ - "once_cell", -] - -[[package]] -name = "futures-util" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abcb44342f62e6f3e8ac427b8aa815f724fd705dfad060b18ac7866c15bb8e34" -dependencies = [ - "futures-core", - "futures-io", - "futures-macro", - "futures-task", - "memchr", - "pin-project 1.0.1", - "pin-utils", - "proc-macro-hack", - "proc-macro-nested", - "slab", -] - -[[package]] -name = "h2" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", - "tracing-futures", -] - -[[package]] -name = "hashbrown" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" - [[package]] name = "hermit-abi" version = "0.1.17" @@ -247,39 +121,6 @@ dependencies = [ "libc", ] -[[package]] -name = "http" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "httparse" -version = "1.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" - -[[package]] -name = "httpdate" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" - [[package]] name = "humantime" version = "1.3.0" @@ -289,46 +130,6 @@ dependencies = [ "quick-error", ] -[[package]] -name = "hyper" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f3afcfae8af5ad0576a31e768415edb627824129e8e5a29b8bfccb2f234e835" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project 0.4.27", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37743cc83e8ee85eacfce90f2f4102030d9ff0a95244098d781e9bee4a90abb6" -dependencies = [ - "bytes", - "futures-util", - "hyper", - "log", - "rustls", - "tokio", - "tokio-rustls", - "webpki", -] - [[package]] name = "idna" version = "0.2.0" @@ -340,31 +141,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "indexmap" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" -dependencies = [ - "autocfg", - "hashbrown", -] - -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] - -[[package]] -name = "ipnet" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" - [[package]] name = "itoa" version = "0.4.6" @@ -380,16 +156,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - [[package]] name = "lazy_static" version = "1.4.0" @@ -423,64 +189,6 @@ version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" -[[package]] -name = "mime" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" - -[[package]] -name = "mime_guess" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "mio" -version = "0.6.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" -dependencies = [ - "cfg-if", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", - "libc", - "log", - "miow", - "net2", - "slab", - "winapi 0.2.8", -] - -[[package]] -name = "miow" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", -] - -[[package]] -name = "net2" -version = "0.2.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" -dependencies = [ - "cfg-if", - "libc", - "winapi 0.3.9", -] - [[package]] name = "num-integer" version = "0.1.43" @@ -500,16 +208,6 @@ dependencies = [ "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]] name = "once_cell" version = "1.4.1" @@ -522,70 +220,6 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" -[[package]] -name = "pin-project" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15" -dependencies = [ - "pin-project-internal 0.4.27", -] - -[[package]] -name = "pin-project" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee41d838744f60d959d7074e3afb6b35c7456d0f61cad38a24e35e6553f73841" -dependencies = [ - "pin-project-internal 1.0.1", -] - -[[package]] -name = "pin-project-internal" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-internal" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a4ffa594b66bff340084d4081df649a7dc049ac8d7fc458d8e628bfbbb2f86" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-lite" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "proc-macro-hack" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598" - -[[package]] -name = "proc-macro-nested" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" - [[package]] name = "proc-macro2" version = "1.0.24" @@ -610,12 +244,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - [[package]] name = "regex" version = "1.4.1" @@ -634,43 +262,6 @@ version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8cab7a364d15cde1e505267766a2d3c4e22a843e1a601f0fa7564c0f82ced11c" -[[package]] -name = "reqwest" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9eaa17ac5d7b838b7503d118fa16ad88f440498bf9ffe5424e621f93190d61e" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "http", - "http-body", - "hyper", - "hyper-rustls", - "ipnet", - "js-sys", - "lazy_static", - "log", - "mime", - "mime_guess", - "percent-encoding", - "pin-project-lite", - "rustls", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-rustls", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots", - "winreg", -] - [[package]] name = "ring" version = "0.16.15" @@ -683,14 +274,14 @@ dependencies = [ "spin", "untrusted", "web-sys", - "winapi 0.3.9", + "winapi", ] [[package]] name = "rustls" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81" +checksum = "064fd21ff87c6e87ed4506e68beb42459caa4a0e2eb144932e6776768556980b" dependencies = [ "base64", "log", @@ -746,36 +337,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_urlencoded" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97" -dependencies = [ - "dtoa", - "itoa", - "serde", - "url", -] - -[[package]] -name = "slab" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" - -[[package]] -name = "socket2" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "winapi 0.3.9", -] - [[package]] name = "spin" version = "0.5.2" @@ -819,7 +380,7 @@ checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" dependencies = [ "libc", "wasi", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -828,50 +389,6 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" -[[package]] -name = "tokio" -version = "0.2.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "iovec", - "lazy_static", - "memchr", - "mio", - "num_cpus", - "pin-project-lite", - "slab", -] - -[[package]] -name = "tokio-rustls" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889a" -dependencies = [ - "futures-core", - "rustls", - "tokio", - "webpki", -] - -[[package]] -name = "tokio-util" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - [[package]] name = "toml" version = "0.5.7" @@ -881,58 +398,6 @@ dependencies = [ "serde", ] -[[package]] -name = "tower-service" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" - -[[package]] -name = "tracing" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27" -dependencies = [ - "cfg-if", - "log", - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "tracing-futures" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab7bb6f14721aa00656086e9335d363c5c8747bae02ebe32ea2c7dece5689b4c" -dependencies = [ - "pin-project 0.4.27", - "tracing", -] - -[[package]] -name = "try-lock" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" - -[[package]] -name = "unicase" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -dependencies = [ - "version_check", -] - [[package]] name = "unicode-bidi" version = "0.3.4" @@ -963,6 +428,25 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +[[package]] +name = "ureq" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96014ded8c85822677daee4f909d18acccca744810fd4f8ffc492c284f2324bc" +dependencies = [ + "base64", + "chunked_transfer", + "encoding_rs", + "log", + "once_cell", + "rustls", + "serde", + "serde_json", + "url", + "webpki", + "webpki-roots", +] + [[package]] name = "url" version = "2.1.1" @@ -974,22 +458,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "version_check" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" - -[[package]] -name = "want" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] - [[package]] name = "wasi" version = "0.10.0+wasi-snapshot-preview1" @@ -1003,8 +471,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" dependencies = [ "cfg-if", - "serde", - "serde_json", "wasm-bindgen-macro", ] @@ -1023,18 +489,6 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "wasm-bindgen-macro" version = "0.2.68" @@ -1086,19 +540,13 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8eff4b7516a57307f9349c64bf34caa34b940b66fed4b2fb3136cb7386e5739" +checksum = "82015b7e0b8bad8185994674a13a93306bea76cf5a16c5a181382fd3a5ec2376" dependencies = [ "webpki", ] -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" - [[package]] name = "winapi" version = "0.3.9" @@ -1109,12 +557,6 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" - [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -1127,7 +569,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1136,25 +578,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "winreg" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - [[package]] name = "xdg" version = "2.2.0" diff --git a/Cargo.toml b/Cargo.toml index ff33216..e1ea969 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,8 +16,4 @@ serde_json = "1" serde = { version = "1", features = [ "derive" ] } toml = "0.5" xdg = "2.2" - -[dependencies.reqwest] -version = "0.10" -default-features = false -features = [ "blocking", "json", "rustls-tls" ] +ureq = { version = "2", features = ["json", "charset"] } diff --git a/nix/sources.json b/nix/sources.json index d4eb3a9..659b45b 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -5,10 +5,10 @@ "homepage": "", "owner": "nmattia", "repo": "naersk", - "rev": "1dd63230066a93c61ab7a66934eb0aae3f1a3613", - "sha256": "1xn8m62ypg13jh4zf101qmfa6gy8cl923fgwvk9c33m573h3k154", + "rev": "79129b5c16d299b747b5276afd80b1f325f786ac", + "sha256": "1hjyji8620wrj67vc9801yc424xwm6nprb54j8rsvwhc0g7xgrvn", "type": "tarball", - "url": "https://github.com/nmattia/naersk/archive/1dd63230066a93c61ab7a66934eb0aae3f1a3613.tar.gz", + "url": "https://github.com/nmattia/naersk/archive/79129b5c16d299b747b5276afd80b1f325f786ac.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "niv": { @@ -17,22 +17,22 @@ "homepage": "https://github.com/nmattia/niv", "owner": "nmattia", "repo": "niv", - "rev": "f73bf8d584148677b01859677a63191c31911eae", - "sha256": "0jlmrx633jvqrqlyhlzpvdrnim128gc81q5psz2lpp2af8p8q9qs", + "rev": "3cd7914b2c4cff48927e11c216dadfab7d903fe5", + "sha256": "1agq4nvbhrylf2s77kb4xhh9k7xcwdwggq764k4jgsbs70py8cw3", "type": "tarball", - "url": "https://github.com/nmattia/niv/archive/f73bf8d584148677b01859677a63191c31911eae.tar.gz", + "url": "https://github.com/nmattia/niv/archive/3cd7914b2c4cff48927e11c216dadfab7d903fe5.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "nixpkgs": { - "branch": "nixos-20.03", + "branch": "nixpkgs-unstable", "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to", "homepage": "https://github.com/NixOS/nixpkgs", "owner": "NixOS", "repo": "nixpkgs-channels", - "rev": "0bb35152be895abfd1fc743b42f1c4e56ae71906", - "sha256": "0mydmhr1fm5l0p668wx5wlk3six7k3n56sz41fv0h9zms0lqszf9", + "rev": "502845c3e31ef3de0e424f3fcb09217df2ce6df6", + "sha256": "0fcqpsy6y7dgn0y0wgpa56gsg0b0p8avlpjrd79fp4mp9bl18nda", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs-channels/archive/0bb35152be895abfd1fc743b42f1c4e56ae71906.tar.gz", + "url": "https://github.com/NixOS/nixpkgs-channels/archive/502845c3e31ef3de0e424f3fcb09217df2ce6df6.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } } diff --git a/src/bin/cabytcinysuhei.rs b/src/bin/cabytcinysuhei.rs new file mode 100644 index 0000000..6aad3a1 --- /dev/null +++ b/src/bin/cabytcinysuhei.rs @@ -0,0 +1,65 @@ +use anyhow::Result; +use cabytcini::*; +use chrono::prelude::*; +use std::{ + sync::{Arc, Mutex}, + thread, time, +}; + +const UPDATE_FREQUENCY: u64 = 15000; + +fn main() -> Result<()> { + env_logger::init(); + + println!(r#"{{ "version": 1 }}\n[[]"#); + + let st: State = State::init(); + let mtst = Arc::new(Mutex::new(st)); + let cfg = config::load()?; + + // start front thread + { + let mtst = mtst.clone(); + let cfg = cfg.clone(); + thread::spawn(move || front::update(mtst, cfg)); + } + + // start weather thread + { + let mtst = mtst.clone(); + let cfg = cfg.clone(); + thread::spawn(move || weather::update(mtst, cfg)); + } + + thread::sleep(time::Duration::from_millis(750)); + + loop { + { + let data = mtst.lock().unwrap(); + let mut blocks: Vec = vec![Block { + full_text: data.front.clone(), + }]; + + if let Some(datni) = &data.weather { + blocks.push(Block { + full_text: format!( + "{} {} / {} {}", + datni.currently.temperature, + datni.currently.summary, + datni.daily.data[0].temperature_high, + datni.daily.data[0].temperature_low + ), + }) + } + + blocks.push(Block { + full_text: Local::now().format("%H:%M M%m %-d %a").to_string(), + }); + + println!("{},", serde_json::to_string(&blocks)?); + } + + let so_often = time::Duration::from_millis(UPDATE_FREQUENCY); + thread::sleep(so_often); + } +} diff --git a/src/config.rs b/src/config.rs index c7b7d62..9a23b7b 100644 --- a/src/config.rs +++ b/src/config.rs @@ -7,12 +7,12 @@ use std::{ use xdg::*; #[derive(Deserialize, Serialize, Debug, Clone)] -pub(crate) struct Config { +pub struct Config { pub(crate) front_url: String, pub(crate) weather_url: String, } -pub(crate) fn load() -> Result { +pub fn load() -> Result { let xdg_dirs = BaseDirectories::with_prefix("cabytcini").expect("pu djica lo nu finti lei datnyveiste"); let config_path = xdg_dirs.place_config_file("gaftercu'a.toml")?; diff --git a/src/front.rs b/src/front.rs index 94b1026..84d9898 100644 --- a/src/front.rs +++ b/src/front.rs @@ -4,12 +4,15 @@ use std::{thread, time}; const FIVE_MINUTES: u64 = 60 * 5; -pub(crate) fn update(st: MTState, cfg: Config) { +pub fn update(st: MTState, cfg: Config) { loop { - match reqwest::blocking::get(&cfg.front_url) { + match ureq::get(&cfg.front_url) + .set("User-Agent", crate::APP_USER_AGENT) + .call() + { Ok(who) => { let mut data = st.lock().unwrap(); - let who = who.text().unwrap().trim().to_string(); + let who = who.into_string().unwrap().trim().to_string(); if who != data.front { data.front = who; info!("new front: {}", data.front); diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..3ae269d --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,89 @@ +#[macro_use] +extern crate log; + +use chrono::prelude::*; +use serde::Serialize; +use std::{ + fmt, + sync::{Arc, Mutex}, +}; +use xsetroot::XSetRoot; + +pub mod config; +pub mod front; +pub mod weather; +pub mod xsetroot; + +pub static APP_USER_AGENT: &str = concat!( + env!("CARGO_PKG_NAME"), + "/", + env!("CARGO_PKG_VERSION"), + " +https://tulpa.dev/cadey/cabytcini", +); + +pub type MTState = Arc>; + +pub struct State { + pub msg: String, + pub front: String, + pub weather: Option, +} + +#[derive(Serialize)] +pub struct Block { + pub full_text: String, +} + +impl fmt::Display for State { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.msg) + } +} + +impl State { + pub fn init() -> State { + State { + msg: "".to_string(), + front: "".to_string(), + weather: None, + } + } + + pub fn to_string(&self) -> String { + let now = Local::now().format("%H:%M M%m %-d %a"); + let mut msg = String::new(); + + if self.msg != "" { + msg.push_str(format!("{} | ", self.msg).as_str()); + } + + if self.front != "" { + msg.push_str(format!("{} | ", self.front).as_str()); + } + + match &self.weather { + Some(datni) => msg.push_str( + format!( + "{} {} / {} {} | ", + datni.currently.temperature, + datni.currently.summary, + datni.daily.data[0].temperature_high, + datni.daily.data[0].temperature_low + ) + .as_str(), + ), + None => {} + }; + + msg.push_str(format!("{}", now).as_str()); + msg + } + + pub fn xsetroot(&self) { + let xsr = XSetRoot::init().expect("xsetroot to initialize"); + + if let Err(why) = xsr.render(self.to_string()) { + error!("error setting root window title: {:?}", why); + } + } +} diff --git a/src/main.rs b/src/main.rs index cbb7e2a..df784ca 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,30 +1,16 @@ -mod config; -mod front; -mod weather; -mod xsetroot; - -use anyhow::{Result}; -use chrono::prelude::*; +use anyhow::Result; use log::*; use std::{ - fmt, io::{prelude::*, BufReader}, net::Shutdown, os::unix::net::{UnixListener, UnixStream}, sync::{Arc, Mutex}, thread, time, }; -use xsetroot::XSetRoot; -// Name your user agent after your app? -pub static APP_USER_AGENT: &str = concat!( - env!("CARGO_PKG_NAME"), - "/", - env!("CARGO_PKG_VERSION"), - " +https://tulpa.dev/cadey/cabytcini", -); +use cabytcini::*; -pub(crate) type MTState = Arc>; +pub type MTState = Arc>; fn handle_client(stream: UnixStream, st: MTState) { let mut rdr = BufReader::new(&stream); @@ -47,14 +33,14 @@ fn update_every_so_often(st: MTState) { { let data = st.lock().unwrap(); - data.show(); + data.xsetroot(); } } } fn main() -> Result<()> { let st: State = State::init(); - st.show(); + st.xsetroot(); let mtst = Arc::new(Mutex::new(st)); env_logger::init(); let cfg = config::load()?; @@ -95,60 +81,3 @@ fn main() -> Result<()> { Ok(()) } - -pub(crate) struct State { - msg: String, - front: String, - weather: Option, -} - -impl fmt::Display for State { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{}", self.msg) - } -} - -impl State { - fn init() -> State { - State { - msg: "".to_string(), - front: "".to_string(), - weather: None, - } - } - - pub(crate) fn show(&self) { - let now = Local::now().format("%H:%M M%m %-d %a"); - let xsr = XSetRoot::init().expect("xsetroot to initialize"); - - let mut msg = String::new(); - - if self.msg != "" { - msg.push_str(format!("{} | ", self.msg).as_str()); - } - - if self.front != "" { - msg.push_str(format!("{} | ", self.front).as_str()); - } - - match &self.weather { - Some(datni) => msg.push_str( - format!( - "{} {} / {} {} | ", - datni.currently.temperature, - datni.currently.summary, - datni.daily.data[0].temperature_high, - datni.daily.data[0].temperature_low - ) - .as_str(), - ), - None => {} - }; - - msg.push_str(format!("{}", now).as_str()); - - if let Err(why) = xsr.render(msg) { - error!("error setting root window title: {:?}", why); - } - } -} diff --git a/src/weather.rs b/src/weather.rs index 0bc5574..dac5bfe 100644 --- a/src/weather.rs +++ b/src/weather.rs @@ -1,6 +1,5 @@ use crate::{config::Config, MTState}; use anyhow::Result; -use reqwest::blocking::*; use serde::{Deserialize, Serialize}; use std::{thread, time}; @@ -42,13 +41,15 @@ pub struct Daum { const UPDATE_FREQUENCY: u64 = 15 * 60; // 15 minutes fn get(cfg: &Config) -> Result { - let client = Client::builder().user_agent(crate::APP_USER_AGENT).build()?; - let now: Root = client.get(&cfg.weather_url).send()?.json()?; + let now: Root = ureq::get(&cfg.weather_url) + .set("User-Agent", crate::APP_USER_AGENT) + .call()? + .into_json()?; Ok(now) } -pub(crate) fn update(st: MTState, cfg: Config) { +pub fn update(st: MTState, cfg: Config) { loop { match get(&cfg) { Ok(datni) => { diff --git a/src/xsetroot.rs b/src/xsetroot.rs index 87309a9..18dfe27 100644 --- a/src/xsetroot.rs +++ b/src/xsetroot.rs @@ -3,14 +3,14 @@ use anyhow::Result; use std::process::Command; -pub(crate) struct XSetRoot; +pub struct XSetRoot; impl XSetRoot { - pub(crate) fn init() -> Result { + pub fn init() -> Result { Ok(Self {}) } - pub(crate) fn render(&self, text: String) -> Result<()> { + pub fn render(&self, text: String) -> Result<()> { Command::new("xsetroot").arg("-name").arg(text).output()?; Ok(()) }