diff --git a/Cargo.toml b/Cargo.toml index 12863e1..6d8d25a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,7 +26,7 @@ async_once = "0.2.6" indexmap = "1.9.1" futures-util = "0.3.21" chrono = "0.4.19" -reqwest = {version = "0.11.14", features = ["default"] } +reqwest = {version = "0.11.14" } regex = { version = "1.6.0", default-features = false, features = ["std"] } stray = { version = "0.1.2" } dirs = "4.0.0" diff --git a/src/clients/music/mod.rs b/src/clients/music/mod.rs index 554dd7c..15d56cf 100644 --- a/src/clients/music/mod.rs +++ b/src/clients/music/mod.rs @@ -22,7 +22,7 @@ pub struct Track { pub disc: Option, pub genre: Option, pub track: Option, - pub cover_path: Option, + pub cover_path: Option, } #[derive(Clone, Debug)] diff --git a/src/clients/music/mpd.rs b/src/clients/music/mpd.rs index 3dfd48d..6079b12 100644 --- a/src/clients/music/mpd.rs +++ b/src/clients/music/mpd.rs @@ -121,12 +121,16 @@ impl MpdClient { fn convert_song(song: &Song, music_dir: &Path) -> Track { let (track, disc) = song.number(); - let cover_path = music_dir.join( - song.file_path() - .parent() - .expect("Song path should not be root") - .join("cover.jpg"), - ); + let cover_path = music_dir + .join( + song.file_path() + .parent() + .expect("Song path should not be root") + .join("cover.jpg"), + ) + .into_os_string() + .into_string() + .ok(); Track { title: song.title().map(std::string::ToString::to_string), @@ -136,7 +140,7 @@ impl MpdClient { genre: try_get_first_tag(song, &Tag::Genre).map(std::string::ToString::to_string), disc: Some(disc), track: Some(track), - cover_path: Some(cover_path), + cover_path, } } } diff --git a/src/clients/music/mpris.rs b/src/clients/music/mpris.rs index 3d418cf..6f56d21 100644 --- a/src/clients/music/mpris.rs +++ b/src/clients/music/mpris.rs @@ -5,7 +5,6 @@ use color_eyre::Result; use lazy_static::lazy_static; use mpris::{DBusError, Event, Metadata, PlaybackStatus, Player, PlayerFinder}; use std::collections::HashSet; -use std::path::PathBuf; use std::sync::{Arc, Mutex}; use std::thread::sleep; use std::time::Duration; @@ -260,10 +259,7 @@ impl From for Track { .and_then(mpris::MetadataValue::as_str_array) .and_then(|arr| arr.first().map(|val| (*val).to_string())), track: value.track_number().map(|track| track as u64), - cover_path: value - .art_url() - .map(|path| path.replace("file://", "")) - .map(PathBuf::from), + cover_path: value.art_url().map(|s| s.to_string()), } } } diff --git a/src/modules/music/mod.rs b/src/modules/music/mod.rs index c84c35f..1bb4a25 100644 --- a/src/modules/music/mod.rs +++ b/src/modules/music/mod.rs @@ -1,16 +1,16 @@ mod config; +use std::path::PathBuf; use crate::clients::music::{self, MusicClient, PlayerState, PlayerUpdate, Status, Track}; +use crate::image::ImageProvider; use crate::modules::{Module, ModuleInfo, ModuleUpdateEvent, ModuleWidget, WidgetContext}; use crate::popup::Popup; use crate::{send_async, try_send}; use color_eyre::Result; use glib::Continue; -use gtk::gdk_pixbuf::Pixbuf; use gtk::prelude::*; -use gtk::{Button, Image, Label, Orientation, Scale}; +use gtk::{Button, IconTheme, Label, Orientation, Scale}; use regex::Regex; -use std::path::PathBuf; use std::sync::Arc; use std::time::Duration; use tokio::spawn; @@ -213,13 +213,15 @@ impl Module