From 3c5f23bd32e0f9d1351275b97c618c7325835a76 Mon Sep 17 00:00:00 2001 From: Pavel Kirilin <win10@list.ru> Date: Thu, 19 Mar 2020 12:10:13 +0400 Subject: [PATCH] Fixed repo structure. Removed GTK. Description: - All helpers moved into lib crate. - All CLI logic moved in bin. - Removed GTK dependency. - Screen resolution now resolving with X11-API. Signed-off-by: Pavel Kirilin <win10@list.ru> --- Cargo.lock | 1308 +++++++++++-------- Cargo.toml | 81 +- PKGBUILD | 3 +- {src => bin}/cli.rs | 10 - bin/cli_modes.rs | 42 + {src => bin}/logging.rs | 2 +- bin/main.rs | 27 + {src => lib}/background.rs | 15 +- {src => lib}/config/image_processors.rs | 0 {src => lib}/config/logger.rs | 0 {src => lib}/config/mod.rs | 0 {src => lib}/dbus_interface/main_dbus.rs | 1 + {src => lib}/dbus_interface/media_player.rs | 1 + {src => lib}/dbus_interface/mod.rs | 1 + {src => lib/dbus_interface}/player_dbus.rs | 21 +- {src => lib}/dbus_interface/statuses.rs | 0 lib/display.rs | 26 + {src => lib}/img_processors/blur.rs | 0 {src => lib}/img_processors/border.rs | 0 {src => lib}/img_processors/crop.rs | 0 {src => lib}/img_processors/mod.rs | 0 {src => lib}/img_processors/none.rs | 0 {src => lib}/img_processors/scale.rs | 0 lib/lib.rs | 16 + {src => lib}/result.rs | 19 +- src/display.rs | 54 - src/main.rs | 43 - systemd/music_bg.service | 2 +- 28 files changed, 893 insertions(+), 779 deletions(-) rename {src => bin}/cli.rs (87%) create mode 100644 bin/cli_modes.rs rename {src => bin}/logging.rs (96%) create mode 100644 bin/main.rs rename {src => lib}/background.rs (74%) rename {src => lib}/config/image_processors.rs (100%) rename {src => lib}/config/logger.rs (100%) rename {src => lib}/config/mod.rs (100%) rename {src => lib}/dbus_interface/main_dbus.rs (99%) rename {src => lib}/dbus_interface/media_player.rs (99%) rename {src => lib}/dbus_interface/mod.rs (74%) rename {src => lib/dbus_interface}/player_dbus.rs (85%) rename {src => lib}/dbus_interface/statuses.rs (100%) create mode 100644 lib/display.rs rename {src => lib}/img_processors/blur.rs (100%) rename {src => lib}/img_processors/border.rs (100%) rename {src => lib}/img_processors/crop.rs (100%) rename {src => lib}/img_processors/mod.rs (100%) rename {src => lib}/img_processors/none.rs (100%) rename {src => lib}/img_processors/scale.rs (100%) create mode 100644 lib/lib.rs rename {src => lib}/result.rs (81%) delete mode 100644 src/display.rs delete mode 100644 src/main.rs diff --git a/Cargo.lock b/Cargo.lock index e8c82f9..c711a27 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -36,32 +36,6 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" -[[package]] -name = "atk" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444daefa55f229af145ea58d77efd23725024ee1f6f3102743709aa6b18c663e" -dependencies = [ - "atk-sys", - "bitflags", - "glib", - "glib-sys", - "gobject-sys", - "libc", -] - -[[package]] -name = "atk-sys" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e552c1776737a4c80110d06b36d099f47c727335f9aaa5d942a72b6863a8ec6f" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "pkg-config", -] - [[package]] name = "atty" version = "0.2.14" @@ -73,6 +47,12 @@ dependencies = [ "winapi 0.3.8", ] +[[package]] +name = "autocfg" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" + [[package]] name = "autocfg" version = "1.0.0" @@ -93,14 +73,23 @@ dependencies = [ [[package]] name = "backtrace-sys" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17b52e737c40a7d75abca20b29a19a0eb7ba9fc72c5a72dd282a0a3c2c0dc35" +checksum = "ca797db0057bae1a7aa2eef3283a874695455cecf08a43bfb8507ee0ebc1ed69" dependencies = [ "cc", "libc", ] +[[package]] +name = "base64" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +dependencies = [ + "byteorder", +] + [[package]] name = "base64" version = "0.11.0" @@ -144,43 +133,20 @@ checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] name = "bytes" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" - -[[package]] -name = "c2-chacha" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" -dependencies = [ - "ppv-lite86", -] - -[[package]] -name = "cairo-rs" -version = "0.8.1" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157049ba9618aa3a61c39d5d785102c04d3b1f40632a706c621a9aedc21e6084" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" dependencies = [ - "bitflags", - "cairo-sys-rs", - "glib", - "glib-sys", - "gobject-sys", - "libc", + "byteorder", + "either", + "iovec", ] [[package]] -name = "cairo-sys-rs" -version = "0.9.2" +name = "bytes" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff65ba02cac715be836f63429ab00a767d48336efc5497c5637afb53b4f14d63" -dependencies = [ - "glib-sys", - "libc", - "pkg-config", -] +checksum = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" [[package]] name = "cc" @@ -202,6 +168,7 @@ checksum = "80094f509cf8b5ae86a4966a39b3ff66cd7e2a3e594accec3743ff3fabeab5b2" dependencies = [ "num-integer", "num-traits", + "serde", "time", ] @@ -220,6 +187,15 @@ dependencies = [ "vec_map", ] +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +dependencies = [ + "bitflags", +] + [[package]] name = "color_quant" version = "1.0.1" @@ -252,6 +228,34 @@ dependencies = [ "custom_derive", ] +[[package]] +name = "cookie" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" +dependencies = [ + "time", + "url 1.7.2", +] + +[[package]] +name = "cookie_store" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c" +dependencies = [ + "cookie", + "failure", + "idna 0.1.5", + "log", + "publicsuffix", + "serde", + "serde_json", + "time", + "try_from", + "url 1.7.2", +] + [[package]] name = "core-foundation" version = "0.7.0" @@ -294,7 +298,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" dependencies = [ - "autocfg", + "autocfg 1.0.0", "cfg-if", "crossbeam-utils", "lazy_static", @@ -319,7 +323,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" dependencies = [ - "autocfg", + "autocfg 1.0.0", "cfg-if", "lazy_static", ] @@ -330,44 +334,11 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9" -[[package]] -name = "darling" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebfa6e6eb98ba452aaea6415e529e4890ab09a36aaf03c71146acf9f0eab89f6" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af196b04f843cd6f1d979c2b3697de0d33050892662efba69112ee7b1fc968" -dependencies = [ - "ident_case", - "proc-macro2 0.3.8", - "quote 0.5.2", - "syn 0.13.11", -] - -[[package]] -name = "darling_macro" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0619148430511a3ecf5e52752a9c948879207ab3096276a5a9ecf8b1e7fbe010" -dependencies = [ - "darling_core", - "quote 0.5.2", - "syn 0.13.11", -] - [[package]] name = "dbus" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd043051adb767dd40f869e6034c8ea4d3a0a719e78d4058f705a8038649059" +checksum = "38f8875bb7afbc20dec12db09e18af3dcbd672b08592d2932950326a6437c616" dependencies = [ "libc", "libdbus-sys", @@ -383,17 +354,6 @@ dependencies = [ "byteorder", ] -[[package]] -name = "derive_is_enum_variant" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ac8859845146979953797f03cc5b282fb4396891807cdb3d04929a88418197" -dependencies = [ - "heck", - "quote 0.3.15", - "syn 0.11.11", -] - [[package]] name = "dirs" version = "2.0.2" @@ -438,21 +398,14 @@ dependencies = [ ] [[package]] -name = "enum-kinds" -version = "0.4.1" +name = "error-chain" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f21c374dea848c19071b1504ca5ad03c9ad0d03d2e509e68f6623b8fcac4b5" +checksum = "d371106cc88ffdfb1eabd7111e432da544f16f3e2d7bf1dfe8bf575f1df045cd" dependencies = [ - "quote 0.4.2", - "syn 0.12.15", + "version_check", ] -[[package]] -name = "error-chain" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3" - [[package]] name = "failure" version = "0.1.7" @@ -469,9 +422,9 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "030a733c8287d6213886dd487564ff5c8f6aae10278b3588ed177f9d18f8d231" dependencies = [ - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", + "proc-macro2", + "quote", + "syn", "synstructure", ] @@ -486,6 +439,18 @@ dependencies = [ "log", ] +[[package]] +name = "flate2" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cfff41391129e0a856d6d822600b8d71179d46879e310417eb9c762eb178b42" +dependencies = [ + "cfg-if", + "crc32fast", + "libc", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.6" @@ -508,25 +473,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] -name = "from_variants" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b7b3795d7bd0d40e33224cbb46adb76a88b72c52143e7bcaad33bd8b6e89e32" -dependencies = [ - "from_variants_impl", -] - -[[package]] -name = "from_variants_impl" -version = "0.4.0" +name = "fuchsia-cprng" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54d084040e9757536fee724381a270bc650a9ca05dcf63a0ad3aaecb1e5b9c0" -dependencies = [ - "darling", - "error-chain", - "quote 0.5.2", - "syn 0.13.11", -] +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "fuchsia-zircon" @@ -544,6 +494,12 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +[[package]] +name = "futures" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" + [[package]] name = "futures-channel" version = "0.3.4" @@ -560,14 +516,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f25592f769825e89b92358db00d26f965761e094951ac44d3663ef25b7ac464a" [[package]] -name = "futures-executor" -version = "0.3.4" +name = "futures-cpupool" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f674f3e1bcb15b37284a90cedf55afdba482ab061c407a9c0ebbd0f3109741ba" +checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" dependencies = [ - "futures-core", - "futures-task", - "futures-util", + "futures", + "num_cpus", ] [[package]] @@ -576,18 +531,6 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a638959aa96152c7a4cddf50fcb1e3fede0583b27157c26e67d6f99904090dc6" -[[package]] -name = "futures-macro" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a5081aa3de1f7542a794a397cde100ed903b0630152d0973479018fd85423a7" -dependencies = [ - "proc-macro-hack", - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", -] - [[package]] name = "futures-sink" version = "0.3.4" @@ -608,77 +551,20 @@ checksum = "22766cf25d64306bedf0384da004d05c9974ab104fcc4528f1236181c18004c5" dependencies = [ "futures-core", "futures-io", - "futures-macro", "futures-task", "memchr", "pin-utils", - "proc-macro-hack", - "proc-macro-nested", "slab", ] [[package]] -name = "gdk" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbe5e8772fc0865c52460cdd7a59d7d47700f44d9809d1dd00eecceb769a7589" -dependencies = [ - "bitflags", - "cairo-rs", - "cairo-sys-rs", - "gdk-pixbuf", - "gdk-sys", - "gio", - "gio-sys", - "glib", - "glib-sys", - "gobject-sys", - "libc", - "pango", -] - -[[package]] -name = "gdk-pixbuf" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e248220c46b329b097d4b158d2717f8c688f16dd76d0399ace82b3e98062bdd7" -dependencies = [ - "gdk-pixbuf-sys", - "gio", - "gio-sys", - "glib", - "glib-sys", - "gobject-sys", - "libc", -] - -[[package]] -name = "gdk-pixbuf-sys" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8991b060a9e9161bafd09bf4a202e6fd404f5b4dd1a08d53a1e84256fb34ab0" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pkg-config", -] - -[[package]] -name = "gdk-sys" -version = "0.9.1" +name = "gethostname" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6adf679e91d1bff0c06860287f80403e7db54c2d2424dce0a470023b56c88fbb" +checksum = "e692e296bfac1d2533ef168d0b60ff5897b8b70a4009276834014dd8924cc028" dependencies = [ - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gio-sys", - "glib-sys", - "gobject-sys", "libc", - "pango-sys", - "pkg-config", + "winapi 0.3.8", ] [[package]] @@ -703,118 +589,21 @@ dependencies = [ ] [[package]] -name = "gio" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cd10f9415cce39b53f8024bf39a21f84f8157afa52da53837b102e585a296a5" -dependencies = [ - "bitflags", - "futures-channel", - "futures-core", - "futures-io", - "futures-util", - "gio-sys", - "glib", - "glib-sys", - "gobject-sys", - "lazy_static", - "libc", -] - -[[package]] -name = "gio-sys" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fad225242b9eae7ec8a063bb86974aca56885014672375e5775dc0ea3533911" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "pkg-config", -] - -[[package]] -name = "glib" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40fb573a09841b6386ddf15fd4bc6655b4f5b106ca962f57ecaecde32a0061c0" -dependencies = [ - "bitflags", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "glib-sys", - "gobject-sys", - "lazy_static", - "libc", -] - -[[package]] -name = "glib-sys" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95856f3802f446c05feffa5e24859fe6a183a7cb849c8449afc35c86b1e316e2" -dependencies = [ - "libc", - "pkg-config", -] - -[[package]] -name = "gobject-sys" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31d1a804f62034eccf370006ccaef3708a71c31d561fee88564abe71177553d9" -dependencies = [ - "glib-sys", - "libc", - "pkg-config", -] - -[[package]] -name = "gtk" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e1e8d70290239c668594002d1b174fcc7d7ef5d26670ee141490ede8facf8f" -dependencies = [ - "atk", - "bitflags", - "cairo-rs", - "cairo-sys-rs", - "cc", - "gdk", - "gdk-pixbuf", - "gdk-pixbuf-sys", - "gdk-sys", - "gio", - "gio-sys", - "glib", - "glib-sys", - "gobject-sys", - "gtk-sys", - "lazy_static", - "libc", - "pango", - "pango-sys", -] - -[[package]] -name = "gtk-sys" -version = "0.9.2" +name = "h2" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53def660c7b48b00b510c81ef2d2fbd3c570f1527081d8d7947f471513e1a4c1" +checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" dependencies = [ - "atk-sys", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "pkg-config", + "byteorder", + "bytes 0.4.12", + "fnv", + "futures", + "http 0.1.21", + "indexmap", + "log", + "slab", + "string", + "tokio-io", ] [[package]] @@ -823,16 +612,16 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d5c295d1c0c68e4e42003d75f908f5e16a1edd1cbe0b0d02e4dc2006a384f47" dependencies = [ - "bytes", + "bytes 0.5.4", "fnv", "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.0", "indexmap", "log", "slab", - "tokio", + "tokio 0.2.13", "tokio-util", ] @@ -854,25 +643,48 @@ dependencies = [ "libc", ] +[[package]] +name = "http" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" +dependencies = [ + "bytes 0.4.12", + "fnv", + "itoa", +] + [[package]] name = "http" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b708cc7f06493459026f53b9a61a7a121a5d1ec6238dee58ea4941132b30156b" dependencies = [ - "bytes", + "bytes 0.5.4", "fnv", "itoa", ] +[[package]] +name = "http-body" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" +dependencies = [ + "bytes 0.4.12", + "futures", + "http 0.1.21", + "tokio-buf", +] + [[package]] name = "http-body" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" dependencies = [ - "bytes", - "http", + "bytes 0.5.4", + "http 0.2.0", ] [[package]] @@ -881,28 +693,71 @@ version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +[[package]] +name = "hyper" +version = "0.12.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" +dependencies = [ + "bytes 0.4.12", + "futures", + "futures-cpupool", + "h2 0.1.26", + "http 0.1.21", + "http-body 0.1.0", + "httparse", + "iovec", + "itoa", + "log", + "net2", + "rustc_version", + "time", + "tokio 0.1.22", + "tokio-buf", + "tokio-executor", + "tokio-io", + "tokio-reactor", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", + "want 0.2.0", +] + [[package]] name = "hyper" version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7b15203263d1faa615f9337d79c1d37959439dc46c2b4faab33286fadc2a1c5" dependencies = [ - "bytes", + "bytes 0.5.4", "futures-channel", "futures-core", "futures-util", - "h2", - "http", - "http-body", + "h2 0.2.2", + "http 0.2.0", + "http-body 0.3.1", "httparse", "itoa", "log", "net2", "pin-project", "time", - "tokio", + "tokio 0.2.13", "tower-service", - "want", + "want 0.3.0", +] + +[[package]] +name = "hyper-tls" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" +dependencies = [ + "bytes 0.4.12", + "futures", + "hyper 0.12.35", + "native-tls", + "tokio-io", ] [[package]] @@ -911,18 +766,23 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3adcd308402b9553630734e9c36b77a7e48b3821251ca2493e8cd596763aafaa" dependencies = [ - "bytes", - "hyper", + "bytes 0.5.4", + "hyper 0.13.3", "native-tls", - "tokio", + "tokio 0.2.13", "tokio-tls", ] [[package]] -name = "ident_case" -version = "1.0.1" +name = "idna" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] [[package]] name = "idna" @@ -937,9 +797,9 @@ dependencies = [ [[package]] name = "image" -version = "0.23.1" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403f0c29211dc50a78eb53eeeae87945d44cb63071881834212f36677fccb2b4" +checksum = "9062b90712d25bc6bb165d110aa59c6b47c849246e341e7b86a98daff9d49f60" dependencies = [ "bytemuck", "byteorder", @@ -963,7 +823,7 @@ dependencies = [ "image", "itertools", "num 0.2.1", - "rand", + "rand 0.7.3", "rand_distr", "rayon", "rulinalg", @@ -976,7 +836,7 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "076f042c5b7b98f31d205f1249267e12a6518c1481e9dae9764af19b707d2292" dependencies = [ - "autocfg", + "autocfg 1.0.0", ] [[package]] @@ -1049,9 +909,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.67" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb147597cdf94ed43ab7a9038716637d2d1bf2bc571da995d0028dec06bd3018" +checksum = "dea0c0405123bba743ee3f91f49b1c7cfb684eef0da0a50110f758ccf24cdff0" [[package]] name = "libdbus-sys" @@ -1062,6 +922,15 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "lock_api" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" +dependencies = [ + "scopeguard", +] + [[package]] name = "log" version = "0.4.8" @@ -1106,11 +975,11 @@ checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" [[package]] name = "memoffset" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" +checksum = "b4fc2c02a7e374099d4ee95a193111f72d2110197fe200272371758f6c3643d8" dependencies = [ - "rustc_version", + "autocfg 1.0.0", ] [[package]] @@ -1169,20 +1038,6 @@ dependencies = [ "ws2_32-sys", ] -[[package]] -name = "mpris" -version = "2.0.0-rc2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "195e67e2b467af5146f517b0d988b5894e425a77c52a9bb5a065513ef3c2e711" -dependencies = [ - "dbus", - "derive_is_enum_variant", - "enum-kinds", - "failure", - "failure_derive", - "from_variants", -] - [[package]] name = "music_bg" version = "0.1.0" @@ -1193,20 +1048,31 @@ dependencies = [ "failure", "failure_derive", "fern", - "gdk", - "gio", - "glib", - "gtk", "image", "imageproc", "log", - "mpris", + "musicbrainz_rs", "read_color", - "reqwest", + "reqwest 0.10.4", "serde", "serde_derive", "structopt", "toml", + "x11rb", +] + +[[package]] +name = "musicbrainz_rs" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b931ae3b4545e7061fed9d7dcfb545bfffcbb23b7e1adca745ffbd2f0d917d" +dependencies = [ + "chrono", + "lazy_static", + "reqwest 0.9.24", + "serde", + "serde_derive", + "serde_json", ] [[package]] @@ -1269,7 +1135,7 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" dependencies = [ - "autocfg", + "autocfg 1.0.0", "num-integer", "num-traits", ] @@ -1280,7 +1146,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" dependencies = [ - "autocfg", + "autocfg 1.0.0", "num-traits", ] @@ -1290,7 +1156,7 @@ version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" dependencies = [ - "autocfg", + "autocfg 1.0.0", "num-traits", ] @@ -1300,18 +1166,18 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfb0800a0291891dd9f4fe7bd9c19384f98f7fbe0cd0f39a2c6b88b9868bbc00" dependencies = [ - "autocfg", + "autocfg 1.0.0", "num-integer", "num-traits", ] [[package]] name = "num-rational" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da4dc79f9e6c81bef96148c8f6b8e72ad4541caa4a24373e900a36da07de03a3" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" dependencies = [ - "autocfg", + "autocfg 1.0.0", "num-bigint", "num-integer", "num-traits", @@ -1323,7 +1189,7 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" dependencies = [ - "autocfg", + "autocfg 1.0.0", ] [[package]] @@ -1362,7 +1228,7 @@ version = "0.9.54" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1024c0a59774200a555087a6da3f253a9095a5f344e353b212ac4c8b8e450986" dependencies = [ - "autocfg", + "autocfg 1.0.0", "cc", "libc", "pkg-config", @@ -1379,32 +1245,37 @@ dependencies = [ ] [[package]] -name = "pango" -version = "0.8.0" +name = "parking_lot" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9c6b728f1be8edb5f9f981420b651d5ea30bdb9de89f1f1262d0084a020577" +checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" dependencies = [ - "bitflags", - "glib", - "glib-sys", - "gobject-sys", - "lazy_static", - "libc", - "pango-sys", + "lock_api", + "parking_lot_core", + "rustc_version", ] [[package]] -name = "pango-sys" -version = "0.9.1" +name = "parking_lot_core" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b93d84907b3cf0819bff8f13598ba72843bee579d5ebc2502e4b0367b4be7d" +checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" dependencies = [ - "glib-sys", - "gobject-sys", + "cfg-if", + "cloudabi", "libc", - "pkg-config", + "redox_syscall", + "rustc_version", + "smallvec 0.6.13", + "winapi 0.3.8", ] +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" + [[package]] name = "percent-encoding" version = "2.1.0" @@ -1426,9 +1297,9 @@ version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "385322a45f2ecf3410c68d2a549a4a2685e8051d0f278e39743ff4e451cb9b3f" dependencies = [ - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -1474,9 +1345,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7959c6467d962050d639361f7703b2051c43036d03493c36f01d440fdd3138a" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", + "proc-macro2", + "quote", + "syn", "version_check", ] @@ -1486,138 +1357,198 @@ version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4002d9f55991d5e019fb940a90e1a95eb80c24e77cb2462dd4dc869604d543a" dependencies = [ - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", + "proc-macro2", + "quote", + "syn", "syn-mid", "version_check", ] [[package]] -name = "proc-macro-hack" -version = "0.5.11" +name = "proc-macro2" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" +checksum = "6c09721c6781493a2a492a96b5a5bf19b65917fe6728884e7c44dd0c60ca3435" dependencies = [ - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", + "unicode-xid", ] [[package]] -name = "proc-macro-nested" -version = "0.1.3" +name = "publicsuffix" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bbaa49075179162b49acac1c6aa45fb4dafb5f13cf6794276d77bc7fd95757b" +dependencies = [ + "error-chain", + "idna 0.2.0", + "lazy_static", + "regex", + "url 2.1.1", +] + +[[package]] +name = "quote" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" +checksum = "2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f" +dependencies = [ + "proc-macro2", +] [[package]] -name = "proc-macro2" -version = "0.2.3" +name = "rand" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd07deb3c6d1d9ff827999c7f9b04cdfd66b1b17ae508e14fe47b620f2282ae0" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "unicode-xid 0.1.0", + "autocfg 0.1.7", + "libc", + "rand_chacha 0.1.1", + "rand_core 0.4.2", + "rand_hc 0.1.0", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg", + "rand_xorshift", + "winapi 0.3.8", ] [[package]] -name = "proc-macro2" -version = "0.3.8" +name = "rand" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b06e2f335f48d24442b35a19df506a835fb3547bc3c06ef27340da9acf5cae7" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "unicode-xid 0.1.0", + "getrandom", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc 0.2.0", ] [[package]] -name = "proc-macro2" -version = "1.0.9" +name = "rand_chacha" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +dependencies = [ + "autocfg 0.1.7", + "rand_core 0.3.1", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +dependencies = [ + "rand_core 0.4.2", +] + +[[package]] +name = "rand_core" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c09721c6781493a2a492a96b5a5bf19b65917fe6728884e7c44dd0c60ca3435" -dependencies = [ - "unicode-xid 0.2.0", -] +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" [[package]] -name = "quote" -version = "0.3.15" +name = "rand_core" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom", +] [[package]] -name = "quote" -version = "0.4.2" +name = "rand_distr" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eca14c727ad12702eb4b6bfb5a232287dcf8385cb8ca83a3eeaf6519c44c408" +checksum = "96977acbdd3a6576fb1d27391900035bf3863d4a16422973a409b488cf29ffb2" dependencies = [ - "proc-macro2 0.2.3", + "rand 0.7.3", ] [[package]] -name = "quote" -version = "0.5.2" +name = "rand_hc" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9949cfe66888ffe1d53e6ec9d9f3b70714083854be20fd5e271b232a017401e8" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" dependencies = [ - "proc-macro2 0.3.8", + "rand_core 0.3.1", ] [[package]] -name = "quote" -version = "1.0.3" +name = "rand_hc" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "proc-macro2 1.0.9", + "rand_core 0.5.1", ] [[package]] -name = "rand" -version = "0.7.3" +name = "rand_isaac" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" dependencies = [ - "getrandom", - "libc", - "rand_chacha", - "rand_core", - "rand_hc", + "rand_core 0.3.1", ] [[package]] -name = "rand_chacha" -version = "0.2.1" +name = "rand_jitter" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" dependencies = [ - "c2-chacha", - "rand_core", + "libc", + "rand_core 0.4.2", + "winapi 0.3.8", ] [[package]] -name = "rand_core" -version = "0.5.1" +name = "rand_os" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" dependencies = [ - "getrandom", + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "winapi 0.3.8", ] [[package]] -name = "rand_distr" -version = "0.2.2" +name = "rand_pcg" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96977acbdd3a6576fb1d27391900035bf3863d4a16422973a409b488cf29ffb2" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "rand", + "autocfg 0.1.7", + "rand_core 0.4.2", ] [[package]] -name = "rand_hc" -version = "0.2.0" +name = "rand_xorshift" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" dependencies = [ - "rand_core", + "rand_core 0.3.1", ] [[package]] @@ -1650,6 +1581,15 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +dependencies = [ + "rand_core 0.3.1", +] + [[package]] name = "read_color" version = "1.0.0" @@ -1673,6 +1613,21 @@ dependencies = [ "rust-argon2", ] +[[package]] +name = "regex" +version = "1.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8900ebc1363efa7ea1c399ccc32daed870b4002651e0bed86e72d501ebbe0048" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe5bd57d1d7414c6b5ed48563a2c855d995ff777729dcd91c369ec7fea395ae" + [[package]] name = "remove_dir_all" version = "0.5.2" @@ -1682,35 +1637,69 @@ dependencies = [ "winapi 0.3.8", ] +[[package]] +name = "reqwest" +version = "0.9.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f88643aea3c1343c804950d7bf983bd2067f5ab59db6d613a08e05572f2714ab" +dependencies = [ + "base64 0.10.1", + "bytes 0.4.12", + "cookie", + "cookie_store", + "encoding_rs", + "flate2", + "futures", + "http 0.1.21", + "hyper 0.12.35", + "hyper-tls 0.3.2", + "log", + "mime", + "mime_guess", + "native-tls", + "serde", + "serde_json", + "serde_urlencoded 0.5.5", + "time", + "tokio 0.1.22", + "tokio-executor", + "tokio-io", + "tokio-threadpool", + "tokio-timer", + "url 1.7.2", + "uuid", + "winreg", +] + [[package]] name = "reqwest" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02b81e49ddec5109a9dcfc5f2a317ff53377c915e9ae9d4f2fb50914b85614e2" dependencies = [ - "base64", - "bytes", + "base64 0.11.0", + "bytes 0.5.4", "encoding_rs", "futures-core", "futures-util", - "http", - "http-body", - "hyper", - "hyper-tls", + "http 0.2.0", + "http-body 0.3.1", + "hyper 0.13.3", + "hyper-tls 0.4.1", "js-sys", "lazy_static", "log", "mime", "mime_guess", "native-tls", - "percent-encoding", + "percent-encoding 2.1.0", "pin-project-lite", "serde", - "serde_urlencoded", + "serde_urlencoded 0.6.1", "time", - "tokio", + "tokio 0.2.13", "tokio-tls", - "url", + "url 2.1.1", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -1733,7 +1722,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" dependencies = [ - "base64", + "base64 0.11.0", "blake2b_simd", "constant_time_eq", "crossbeam-utils", @@ -1768,9 +1757,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" +checksum = "535622e6be132bccd223f4bb2b8ac8d53cda3c7a6394944d3b2b33fb974f9d76" [[package]] name = "schannel" @@ -1833,19 +1822,22 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.104" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" +checksum = "e707fbbf255b8fc8c3b99abb91e7257a622caeb20a9818cbadbeeede4e0932ff" +dependencies = [ + "serde_derive", +] [[package]] name = "serde_derive" -version = "1.0.104" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" +checksum = "ac5d00fc561ba2724df6758a17de23df5914f20e41cb00f94d5b7ae42fffaff8" dependencies = [ - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -1859,6 +1851,18 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_urlencoded" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" +dependencies = [ + "dtoa", + "itoa", + "serde", + "url 1.7.2", +] + [[package]] name = "serde_urlencoded" version = "0.6.1" @@ -1868,7 +1872,7 @@ dependencies = [ "dtoa", "itoa", "serde", - "url", + "url 2.1.1", ] [[package]] @@ -1877,6 +1881,15 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +[[package]] +name = "smallvec" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" +dependencies = [ + "maybe-uninit", +] + [[package]] name = "smallvec" version = "1.2.0" @@ -1892,6 +1905,15 @@ dependencies = [ "byteorder", ] +[[package]] +name = "string" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" +dependencies = [ + "bytes 0.4.12", +] + [[package]] name = "strsim" version = "0.8.0" @@ -1900,9 +1922,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "structopt" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fe43617218c0805c6eb37160119dc3c548110a67786da7218d1c6555212f073" +checksum = "c8faa2719539bbe9d77869bfb15d4ee769f99525e707931452c97b693b3f159d" dependencies = [ "clap", "lazy_static", @@ -1911,48 +1933,15 @@ dependencies = [ [[package]] name = "structopt-derive" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e79c80e0f4efd86ca960218d4e056249be189ff1c42824dcd9a7f51a56f0bd" +checksum = "3f88b8e18c69496aad6f9ddf4630dd7d585bcaf765786cb415b9aec2fe5a0430" dependencies = [ "heck", "proc-macro-error", - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", -] - -[[package]] -name = "syn" -version = "0.11.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" -dependencies = [ - "quote 0.3.15", - "synom", - "unicode-xid 0.0.4", -] - -[[package]] -name = "syn" -version = "0.12.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c97c05b8ebc34ddd6b967994d5c6e9852fa92f8b82b3858c39451f97346dcce5" -dependencies = [ - "proc-macro2 0.2.3", - "quote 0.4.2", - "unicode-xid 0.1.0", -] - -[[package]] -name = "syn" -version = "0.13.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f9bf6292f3a61d2c716723fdb789a41bbe104168e6f496dc6497e531ea1b9b" -dependencies = [ - "proc-macro2 0.3.8", - "quote 0.5.2", - "unicode-xid 0.1.0", + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -1961,9 +1950,9 @@ version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "123bd9499cfb380418d509322d7a6d52e5315f064fe4b3ad18a53d6b92c07859" dependencies = [ - "proc-macro2 1.0.9", - "quote 1.0.3", - "unicode-xid 0.2.0", + "proc-macro2", + "quote", + "unicode-xid", ] [[package]] @@ -1972,18 +1961,9 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7be3539f6c128a931cf19dcee741c1af532c7fd387baa739c03dd2e96479338a" dependencies = [ - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", -] - -[[package]] -name = "synom" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" -dependencies = [ - "unicode-xid 0.0.4", + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -1992,10 +1972,10 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" dependencies = [ - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", - "unicode-xid 0.2.0", + "proc-macro2", + "quote", + "syn", + "unicode-xid", ] [[package]] @@ -2006,7 +1986,7 @@ checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" dependencies = [ "cfg-if", "libc", - "rand", + "rand 0.7.3", "redox_syscall", "remove_dir_all", "winapi 0.3.8", @@ -2043,13 +2023,32 @@ dependencies = [ "winapi 0.3.8", ] +[[package]] +name = "tokio" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" +dependencies = [ + "bytes 0.4.12", + "futures", + "mio", + "num_cpus", + "tokio-current-thread", + "tokio-executor", + "tokio-io", + "tokio-reactor", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", +] + [[package]] name = "tokio" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa5e81d6bc4e67fe889d5783bd2a128ab2e0cfa487e0be16b6a8d177b101616" dependencies = [ - "bytes", + "bytes 0.5.4", "fnv", "iovec", "lazy_static", @@ -2060,6 +2059,120 @@ dependencies = [ "slab", ] +[[package]] +name = "tokio-buf" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" +dependencies = [ + "bytes 0.4.12", + "either", + "futures", +] + +[[package]] +name = "tokio-current-thread" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" +dependencies = [ + "futures", + "tokio-executor", +] + +[[package]] +name = "tokio-executor" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" +dependencies = [ + "crossbeam-utils", + "futures", +] + +[[package]] +name = "tokio-io" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" +dependencies = [ + "bytes 0.4.12", + "futures", + "log", +] + +[[package]] +name = "tokio-reactor" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" +dependencies = [ + "crossbeam-utils", + "futures", + "lazy_static", + "log", + "mio", + "num_cpus", + "parking_lot", + "slab", + "tokio-executor", + "tokio-io", + "tokio-sync", +] + +[[package]] +name = "tokio-sync" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" +dependencies = [ + "fnv", + "futures", +] + +[[package]] +name = "tokio-tcp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" +dependencies = [ + "bytes 0.4.12", + "futures", + "iovec", + "mio", + "tokio-io", + "tokio-reactor", +] + +[[package]] +name = "tokio-threadpool" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" +dependencies = [ + "crossbeam-deque", + "crossbeam-queue", + "crossbeam-utils", + "futures", + "lazy_static", + "log", + "num_cpus", + "slab", + "tokio-executor", +] + +[[package]] +name = "tokio-timer" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" +dependencies = [ + "crossbeam-utils", + "futures", + "slab", + "tokio-executor", +] + [[package]] name = "tokio-tls" version = "0.3.0" @@ -2067,7 +2180,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7bde02a3a5291395f59b06ec6945a3077602fac2b07eeeaf0dee2122f3619828" dependencies = [ "native-tls", - "tokio", + "tokio 0.2.13", ] [[package]] @@ -2076,12 +2189,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930" dependencies = [ - "bytes", + "bytes 0.5.4", "futures-core", "futures-sink", "log", "pin-project-lite", - "tokio", + "tokio 0.2.13", ] [[package]] @@ -2105,6 +2218,15 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" +[[package]] +name = "try_from" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b" +dependencies = [ + "cfg-if", +] + [[package]] name = "unicase" version = "2.6.0" @@ -2129,7 +2251,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" dependencies = [ - "smallvec", + "smallvec 1.2.0", ] [[package]] @@ -2146,21 +2268,20 @@ checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" [[package]] name = "unicode-xid" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" - -[[package]] -name = "unicode-xid" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" [[package]] -name = "unicode-xid" -version = "0.2.0" +name = "url" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +dependencies = [ + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", +] [[package]] name = "url" @@ -2168,9 +2289,18 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" dependencies = [ - "idna", + "idna 0.2.0", "matches", - "percent-encoding", + "percent-encoding 2.1.0", +] + +[[package]] +name = "uuid" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" +dependencies = [ + "rand 0.6.5", ] [[package]] @@ -2191,6 +2321,17 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" +[[package]] +name = "want" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" +dependencies = [ + "futures", + "log", + "try-lock", +] + [[package]] name = "want" version = "0.3.0" @@ -2228,9 +2369,9 @@ dependencies = [ "bumpalo", "lazy_static", "log", - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", + "proc-macro2", + "quote", + "syn", "wasm-bindgen-shared", ] @@ -2252,7 +2393,7 @@ version = "0.2.59" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f6fde1d36e75a714b5fe0cffbb78978f222ea6baebb726af13c78869fdb4205" dependencies = [ - "quote 1.0.3", + "quote", "wasm-bindgen-macro-support", ] @@ -2262,9 +2403,9 @@ version = "0.2.59" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25bda4168030a6412ea8a047e27238cadf56f0e53516e1e83fec0a8b7c786f6d" dependencies = [ - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", + "proc-macro2", + "quote", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2337,3 +2478,14 @@ dependencies = [ "winapi 0.2.8", "winapi-build", ] + +[[package]] +name = "x11rb" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6dd4c5e6edd84edeaddb13be025c1992870220e892424b845121ff40b8d553" +dependencies = [ + "gethostname", + "libc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml index 846f25c..54598f5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,32 +4,31 @@ version = "0.1.0" authors = ["s3rius <win10@list.ru>"] edition = "2018" -[dependencies.failure] # Experimental error handling abstraction. -version = "0.1.7" +[[bin]] +name = "msuic_bg" +path = "bin/main.rs" + +[lib] +name = "music_bg_lib" +path = "lib/lib.rs" +crate-type = ["lib"] + +[dependencies] +failure = "0.1.7" # Experimental error handling abstraction. +log = "0.4" # A lightweight logging facade for Rust. +serde = "1.0" # A generic serialization/deserialization framework. +serde_derive = "1.0.105" # Used to configure toml config stucture. +toml = "0.5.6" # Crate for parsing bin config file. +failure_derive = "0.1.7" # Used to create new error type. +chrono = "0.4.11" # Used to format time in logs. +dirs = "2.0.2" # Used to locate home dir. +dbus = "0.8.2" # Used to listen to D-bus daemon. +structopt = "0.3" # Used to build CLI. +image = "0.23.2" # Creating parsing and manipulating images. +imageproc = "0.20.0" # Bunch of of filters and algos to process images. +read_color = "1.0.0" # What's that? Idunno. +musicbrainz_rs = "0.2.0" -[dependencies.log] # A lightweight logging facade for Rust. - version = "0.4" - -[dependencies.mpris] # Idiomatic MPRIS D-Bus interface library. -version = "2.0.0-rc2" - -[dependencies.serde] # A generic serialization/deserialization framework. -version = "1.0" - -[dependencies.toml] # Crate for parsing music_bg config file. -version = "0.5.6" - -[dependencies.failure_derive] # Used to create new error type. -version = "0.1.7" - -[dependencies.chrono] # Used to format time in logs. -version = "0.4.11" - -[dependencies.serde_derive] # Used to parse toml. -version= "1.0.104" - -[dependencies.dirs] # Used to locate home dir. -version = "2.0.2" [dependencies.fern] # Simple, efficient logging. version = "0.5" @@ -37,38 +36,14 @@ features = [ "colored" ] -[dependencies.dbus] # Used to listen to D-bus daemon. -version = "0.8.1" - [dependencies.reqwest] version = "0.10.4" features = [ "blocking" ] -[dependencies.gtk] -version = "0.8.1" - -[dependencies.gdk] -version = "0.12.1" +[dependencies.x11rb] # Used to interact with X11. +version = "0.4.1" features = [ - "v3_22" -] - -[dependencies.glib] -version = "0.9.3" - -[dependencies.gio] -version = "0.8.1" - -[dependencies.structopt] -version = "0.3" - -[dependencies.image] -version = "0.23.1" - -[dependencies.imageproc] -version = "0.20.0" - -[dependencies.read_color] -version = "1.0.0" \ No newline at end of file + "all-extensions" +] \ No newline at end of file diff --git a/PKGBUILD b/PKGBUILD index 7e57c06..466f3a5 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -8,11 +8,10 @@ url="https://gitlab.le-memese.com/s3rius/music_bg" license=('GPL') options=(!emptydirs) depends=( + 'xorg-server' 'rust' 'systemd' - 'git' 'feh' - 'gtk3' ) makedepends=( 'rust' diff --git a/src/cli.rs b/bin/cli.rs similarity index 87% rename from src/cli.rs rename to bin/cli.rs index 13933cf..4e8454c 100644 --- a/src/cli.rs +++ b/bin/cli.rs @@ -96,14 +96,4 @@ pub fn generate_completions(shell: ShellType) -> MBGResult<()> { Opt::clap().gen_completions(env!("CARGO_PKG_NAME"), shell.into(), "."); info!("Generated completion file in _music_bg"); Ok(()) -} - -pub fn run(opts: Opt) -> MBGResult<()> { - let mode = opts.cmd.unwrap_or_else(|| RunMode::Run); - match mode { - RunMode::Run => start_listen(), - RunMode::GenConf => Config::generate_config(), - RunMode::TestPic(data) => test_processors(data), - RunMode::GenComp(shell) => generate_completions(shell) - } } \ No newline at end of file diff --git a/bin/cli_modes.rs b/bin/cli_modes.rs new file mode 100644 index 0000000..9769f03 --- /dev/null +++ b/bin/cli_modes.rs @@ -0,0 +1,42 @@ +use crate::{RunMode, Opt, TestingPic, generate_completions}; +use music_bg_lib::result::MBGResult; +use music_bg_lib::dbus_interface::player_dbus::setup_connection; +use music_bg_lib::config::Config; +use std::io::Read; +use music_bg_lib::img_processors::process_image; +use music_bg_lib::background::set_wallpaper; +use std::time::Duration; + + +pub fn start_listen() -> MBGResult<()> { + let config = Config::get_props(); + debug!("Found config: \n{:#?}", config); + let mut connection = setup_connection()?; + + loop { + connection.process(Duration::from_millis(500)).unwrap(); + } +} + +pub fn test_processors(test_data: TestingPic) -> MBGResult<()> { + let mut img_file = std::fs::File::open(test_data.input.as_str())?; + let mut image_bytes = Vec::new(); + img_file.read_to_end(&mut image_bytes)?; + let res = process_image(image_bytes)?; + res.save(test_data.output.as_str())?; + if test_data.wallpaper { + set_wallpaper(test_data.output.as_str()); + } + Ok(()) +} + + +pub fn run(opts: Opt) -> MBGResult<()> { + let mode = opts.cmd.unwrap_or_else(|| RunMode::Run); + match mode { + RunMode::Run => start_listen(), + RunMode::GenConf => Config::generate_config(), + RunMode::TestPic(data) => test_processors(data), + RunMode::GenComp(shell) => generate_completions(shell) + } +} \ No newline at end of file diff --git a/src/logging.rs b/bin/logging.rs similarity index 96% rename from src/logging.rs rename to bin/logging.rs index fe3c08f..7ffc978 100644 --- a/src/logging.rs +++ b/bin/logging.rs @@ -3,7 +3,7 @@ use std::str::FromStr; use fern::colors::{Color, ColoredLevelConfig}; use log::LevelFilter; -use crate::config::Config; +use music_bg_lib::config::Config; pub fn setup_logger() -> Result<(), fern::InitError> { let config = Config::get_props().logger; diff --git a/bin/main.rs b/bin/main.rs new file mode 100644 index 0000000..3f4887c --- /dev/null +++ b/bin/main.rs @@ -0,0 +1,27 @@ +#[macro_use] +extern crate log; + +use structopt::StructOpt; + +use crate::logging::setup_logger; +use structopt::clap::Shell; + +use music_bg_lib::result::MBGResult; + +use crate::cli_modes::run; + +pub mod logging; +pub mod cli_modes; + +include!("cli.rs"); + +fn main() -> MBGResult<()> { + let opt: Opt = Opt::from_args(); + let logger = setup_logger(); + if let Err(error) = logger { + error!("Failed to create pretty logger"); + error!("{}", error.to_string()); + error!("Using default logging"); + } + run(opt) +} diff --git a/src/background.rs b/lib/background.rs similarity index 74% rename from src/background.rs rename to lib/background.rs index 7306157..3318ca6 100644 --- a/src/background.rs +++ b/lib/background.rs @@ -1,4 +1,3 @@ -use std::io::Read; use std::process::Command; use dbus::blocking::Connection; @@ -6,7 +5,7 @@ use dbus::Message; use crate::img_processors::process_image; use crate::result::MBGResult; -use crate::TestingPic; + pub fn reset_background_handler(_: (), _: &Connection, message: &Message) -> bool { let member_name = message.read1::<String>(); @@ -36,18 +35,6 @@ pub fn process_image_url(image_url: String) -> MBGResult<()> { Ok(()) } -pub fn test_processors(test_data: TestingPic) -> MBGResult<()> { - let mut img_file = std::fs::File::open(test_data.input.as_str())?; - let mut image_bytes = Vec::new(); - img_file.read_to_end(&mut image_bytes)?; - let res = process_image(image_bytes)?; - res.save(test_data.output.as_str())?; - if test_data.wallpaper { - set_wallpaper(test_data.output.as_str()); - } - Ok(()) -} - pub fn set_wallpaper(path: &str) { debug!("Setting background"); let out = Command::new("feh").arg("--bg-fill").arg(path).output(); diff --git a/src/config/image_processors.rs b/lib/config/image_processors.rs similarity index 100% rename from src/config/image_processors.rs rename to lib/config/image_processors.rs diff --git a/src/config/logger.rs b/lib/config/logger.rs similarity index 100% rename from src/config/logger.rs rename to lib/config/logger.rs diff --git a/src/config/mod.rs b/lib/config/mod.rs similarity index 100% rename from src/config/mod.rs rename to lib/config/mod.rs diff --git a/src/dbus_interface/main_dbus.rs b/lib/dbus_interface/main_dbus.rs similarity index 99% rename from src/dbus_interface/main_dbus.rs rename to lib/dbus_interface/main_dbus.rs index 0e64b13..119ee72 100644 --- a/src/dbus_interface/main_dbus.rs +++ b/lib/dbus_interface/main_dbus.rs @@ -1,6 +1,7 @@ // This code was autogenerated with `dbus-codegen-rust -s -d org.freedesktop.DBus -m None`, see https://github.com/diwic/dbus-rs use dbus::arg; + #[derive(Debug)] pub struct DBusNameOwnerChanged { pub arg0: String, diff --git a/src/dbus_interface/media_player.rs b/lib/dbus_interface/media_player.rs similarity index 99% rename from src/dbus_interface/media_player.rs rename to lib/dbus_interface/media_player.rs index 1a1a9a2..25debf5 100644 --- a/src/dbus_interface/media_player.rs +++ b/lib/dbus_interface/media_player.rs @@ -2,6 +2,7 @@ use dbus::arg; use dbus::blocking; + pub trait OrgMprisMediaPlayer2Player { fn playback_status(&self) -> Result<String, dbus::Error>; fn metadata( diff --git a/src/dbus_interface/mod.rs b/lib/dbus_interface/mod.rs similarity index 74% rename from src/dbus_interface/mod.rs rename to lib/dbus_interface/mod.rs index 07454dc..546792b 100644 --- a/src/dbus_interface/mod.rs +++ b/lib/dbus_interface/mod.rs @@ -1,3 +1,4 @@ pub mod main_dbus; pub mod media_player; pub mod statuses; +pub mod player_dbus; \ No newline at end of file diff --git a/src/player_dbus.rs b/lib/dbus_interface/player_dbus.rs similarity index 85% rename from src/player_dbus.rs rename to lib/dbus_interface/player_dbus.rs index 5ece33b..1c4ef8f 100644 --- a/src/player_dbus.rs +++ b/lib/dbus_interface/player_dbus.rs @@ -6,12 +6,12 @@ use dbus::blocking::Connection; use dbus::message::{MatchRule, SignalArgs}; use dbus::{arg, Message}; -use crate::background::{nitrogen_restore, process_image_url, reset_background_handler}; -use crate::config::Config; + use crate::dbus_interface::main_dbus::DBusNameOwnerChanged; use crate::dbus_interface::media_player::OrgMprisMediaPlayer2Player; use crate::dbus_interface::statuses::PlayerStatus; use crate::result::{MBGError, MBGResult}; +use crate::background::{reset_background_handler, process_image_url, nitrogen_restore}; pub fn player_exit_handler(connection: &Connection) -> MBGResult<()> { connection.add_match( @@ -89,19 +89,4 @@ pub fn setup_connection() -> MBGResult<Connection> { player_exit_handler(&conn)?; player_state_watcher(&conn)?; Ok(conn) -} - -pub fn start_listen() -> MBGResult<()> { - let config = Config::get_props(); - debug!("Found config: \n{:#?}", config); - let mut connection = setup_connection()?; - if gtk::init().is_err() { - return Err(MBGError::X11Error(String::from( - "Failed to initialize GTK.", - ))); - } - - loop { - connection.process(Duration::from_millis(500)).unwrap(); - } -} +} \ No newline at end of file diff --git a/src/dbus_interface/statuses.rs b/lib/dbus_interface/statuses.rs similarity index 100% rename from src/dbus_interface/statuses.rs rename to lib/dbus_interface/statuses.rs diff --git a/lib/display.rs b/lib/display.rs new file mode 100644 index 0000000..c7303e4 --- /dev/null +++ b/lib/display.rs @@ -0,0 +1,26 @@ +use crate::result::MBGResult; +use x11rb::generated::xinerama; + +pub fn get_max_resolution() -> MBGResult<(i32, i32)> { + let (conn, _) = x11rb::connect(None).unwrap(); + let screens_info = xinerama::query_screens(&conn)?.reply()?.screen_info; + let mut max_height = 0; + let mut max_width = 0; + for screen in screens_info.into_iter() { + if screen.width >= max_width && screen.height >= max_height { + max_height = screen.height; + max_width = screen.width; + } + } + Ok((max_height as i32, max_width as i32)) +} + +pub fn update_bg(_img_bytes: Vec<u8>) -> MBGResult<()> { + debug!("TODO: Change background."); + let (conn, _display_num) = x11rb::connect(None).unwrap(); + let screens_info = xinerama::query_screens(&conn)?.reply()?.screen_info; + for screen in screens_info.into_iter() { + info!("{:#?}", screen); + } + Ok(()) +} diff --git a/src/img_processors/blur.rs b/lib/img_processors/blur.rs similarity index 100% rename from src/img_processors/blur.rs rename to lib/img_processors/blur.rs diff --git a/src/img_processors/border.rs b/lib/img_processors/border.rs similarity index 100% rename from src/img_processors/border.rs rename to lib/img_processors/border.rs diff --git a/src/img_processors/crop.rs b/lib/img_processors/crop.rs similarity index 100% rename from src/img_processors/crop.rs rename to lib/img_processors/crop.rs diff --git a/src/img_processors/mod.rs b/lib/img_processors/mod.rs similarity index 100% rename from src/img_processors/mod.rs rename to lib/img_processors/mod.rs diff --git a/src/img_processors/none.rs b/lib/img_processors/none.rs similarity index 100% rename from src/img_processors/none.rs rename to lib/img_processors/none.rs diff --git a/src/img_processors/scale.rs b/lib/img_processors/scale.rs similarity index 100% rename from src/img_processors/scale.rs rename to lib/img_processors/scale.rs diff --git a/lib/lib.rs b/lib/lib.rs new file mode 100644 index 0000000..fe6f470 --- /dev/null +++ b/lib/lib.rs @@ -0,0 +1,16 @@ +#[macro_use] +extern crate log; +#[macro_use] +extern crate serde_derive; +#[macro_use] +extern crate failure; +#[macro_use] +extern crate failure_derive; + + +pub mod img_processors; +pub mod dbus_interface; +pub mod background; +pub mod display; +pub mod config; +pub mod result; diff --git a/src/result.rs b/lib/result.rs similarity index 81% rename from src/result.rs rename to lib/result.rs index be9d7f8..32159ba 100644 --- a/src/result.rs +++ b/lib/result.rs @@ -58,8 +58,17 @@ impl From<image::error::ImageError> for MBGError { } } -// impl From<xcb::base::ConnError> for MBGError { -// fn from(err: xcb::base::ConnError) -> Self { -// MBGError::X11Error(err.to_string()) -// } -// } +impl From<x11rb::errors::ConnectionError> for MBGError { + fn from(error: x11rb::errors::ConnectionError) -> Self { + Self::X11Error(error.to_string()) + } +} + +impl<D> From<x11rb::errors::ReplyError<D>> for MBGError +where + D: AsRef<[u8]>, +{ + fn from(error: x11rb::errors::ReplyError<D>) -> Self { + MBGError::X11Error(error.to_string()) + } +} diff --git a/src/display.rs b/src/display.rs deleted file mode 100644 index e3c9f3e..0000000 --- a/src/display.rs +++ /dev/null @@ -1,54 +0,0 @@ -use gdk::DisplayManager; - -use crate::result::{MBGError, MBGResult}; - -pub fn get_max_resolution() -> MBGResult<(i32, i32)> { - let manager = DisplayManager::get(); - let display = manager.get_default_display(); - if display.is_none() { - return Err(MBGError::X11Error(String::from( - "Default display not found.", - ))); - } - let display = display.unwrap(); - let n = display.get_n_monitors(); - debug!("Connected monitors: {}", n); - let mut height = 0; - let mut width = 0; - for i in 0..n { - let monitor = display.get_monitor(i); - if let Some(monitor) = monitor { - let work_area = monitor.get_workarea(); - if work_area.width >= width && work_area.height >= height { - height = work_area.height; - width = work_area.width; - } - } - } - debug!("Maximum found resolution is {}x{}", width, height); - Ok((height, width)) -} - -// pub fn update_bg(img_bytes: Vec<u8>) -> MBGResult<()> { -// debug!("TODO: Change background."); -// file.write_all(img_bytes.as_slice())?; -// -// // if let Err(setting_error) = out { -// // error!("Can't set background: {}", setting_error.to_string()); -// // } -// -// -// // let screen = display.get_default_screen(); -// // let wins = screen.get_toplevel_windows(); -// // for win in wins.into_iter() { -// // let win_type = win.get_window_type(); -// // debug!("{:?}", win_type); -// // } -// // let (conn, screen_num) = xcb::Connection::connect(None).unwrap(); -// // let setup = conn.get_setup(); -// // let screen = setup.roots().nth(screen_num as usize).unwrap(); -// // let count = setup.roots().count(); -// // debug!("{}", count); -// // debug!("{}x{}", screen.width_in_pixels(), screen.height_in_pixels()); -// Ok(()) -// } diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index cbabcac..0000000 --- a/src/main.rs +++ /dev/null @@ -1,43 +0,0 @@ -#[macro_use] -extern crate failure; -#[macro_use] -extern crate failure_derive; -#[macro_use] -extern crate log; -#[macro_use] -extern crate serde_derive; - -use structopt::StructOpt; - -use crate::background::test_processors; -use crate::config::Config; -use crate::logging::setup_logger; -use crate::player_dbus::start_listen; -use crate::result::{MBGError, MBGResult}; -use structopt::clap::Shell; - -pub mod background; -pub mod config; -pub mod dbus_interface; -pub mod display; -pub mod img_processors; -pub mod logging; -pub mod player_dbus; -pub mod result; - -include!("cli.rs"); - -fn main() -> MBGResult<()> { - let opt: Opt = Opt::from_args(); - let logger = setup_logger(); - if let Err(error) = logger { - error!("Failed to create pretty logger"); - error!("{}", error.to_string()); - error!("Using default logging"); - } - let res = gtk::init(); - if res.is_err() { - return Err(MBGError::X11Error(String::from("Could not connect to GTK"))); - } - run(opt) -} diff --git a/systemd/music_bg.service b/systemd/music_bg.service index c21e9b7..e99a903 100644 --- a/systemd/music_bg.service +++ b/systemd/music_bg.service @@ -7,7 +7,7 @@ Type=simple ExecStart=/usr/bin/music_bg Environment=DISPLAY=:0 ExecStop=/usr/bin/kill -15 $MAINPID -Restart=on-abort +Restart=always [Install] WantedBy=graphical-session.target -- GitLab