]> git.r.bdr.sh - rbdr/lyricli/commitdiff
Add linux config
authorRuben Beltran del Rio <redacted>
Sat, 16 Mar 2024 10:01:41 +0000 (11:01 +0100)
committerRuben Beltran del Rio <redacted>
Sat, 16 Mar 2024 10:01:41 +0000 (11:01 +0100)
Cargo.lock
Cargo.toml
README.md
src/configuration.rs
src/sources/dbus.rs [new file with mode: 0644]
src/sources/mod.rs

index 95c6f9130273130ef527ec6059a47d916c6926ad..2800b09abc9c83d306d2fe30da7593badf32bd3d 100644 (file)
@@ -172,7 +172,7 @@ dependencies = [
  "anstream",
  "anstyle",
  "clap_lex",
- "strsim",
+ "strsim 0.11.0",
 ]
 
 [[package]]
@@ -181,9 +181,9 @@ version = "4.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "syn 2.0.52",
 ]
 
@@ -288,10 +288,67 @@ version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
 dependencies = [
- "quote",
+ "quote 1.0.35",
  "syn 2.0.52",
 ]
 
+[[package]]
+name = "darling"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote 1.0.35",
+ "strsim 0.10.0",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
+dependencies = [
+ "darling_core",
+ "quote 1.0.35",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "dbus"
+version = "0.9.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b"
+dependencies = [
+ "libc",
+ "libdbus-sys",
+ "winapi",
+]
+
+[[package]]
+name = "derive_is_enum_variant"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0ac8859845146979953797f03cc5b282fb4396891807cdb3d04929a88418197"
+dependencies = [
+ "heck 0.3.3",
+ "quote 0.3.15",
+ "syn 0.11.11",
+]
+
 [[package]]
 name = "derive_more"
 version = "0.99.17"
@@ -299,7 +356,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
 dependencies = [
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "syn 1.0.109",
 ]
 
@@ -333,6 +390,17 @@ dependencies = [
  "cfg-if",
 ]
 
+[[package]]
+name = "enum-kinds"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e40a16955681d469ab3da85aaa6b42ff656b3c67b52e1d8d3dd36afe97fd462"
+dependencies = [
+ "proc-macro2",
+ "quote 1.0.35",
+ "syn 1.0.109",
+]
+
 [[package]]
 name = "equivalent"
 version = "1.0.1"
@@ -387,7 +455,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
 dependencies = [
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "syn 2.0.52",
 ]
 
@@ -412,6 +480,27 @@ dependencies = [
  "percent-encoding",
 ]
 
+[[package]]
+name = "from_variants"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e859c8f2057687618905dbe99fc76e836e0a69738865ef90e46fc214a41bbf2"
+dependencies = [
+ "from_variants_impl",
+]
+
+[[package]]
+name = "from_variants_impl"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55a5e644a80e6d96b2b4910fa7993301d7b7926c045b475b62202b20a36ce69e"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote 1.0.35",
+ "syn 1.0.109",
+]
+
 [[package]]
 name = "futf"
 version = "0.1.5"
@@ -521,6 +610,15 @@ version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
 
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
+
 [[package]]
 name = "heck"
 version = "0.4.1"
@@ -543,7 +641,7 @@ dependencies = [
  "mac",
  "markup5ever",
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "syn 1.0.109",
 ]
 
@@ -618,6 +716,12 @@ dependencies = [
  "tokio-native-tls",
 ]
 
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
 [[package]]
 name = "idna"
 version = "0.5.0"
@@ -671,6 +775,15 @@ version = "0.2.153"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
 
+[[package]]
+name = "libdbus-sys"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72"
+dependencies = [
+ "pkg-config",
+]
+
 [[package]]
 name = "linux-raw-sys"
 version = "0.4.13"
@@ -700,6 +813,7 @@ dependencies = [
  "clap",
  "cocoa",
  "libc",
+ "mpris",
  "objc",
  "objc_id",
  "percent-encoding",
@@ -771,6 +885,19 @@ dependencies = [
  "windows-sys 0.48.0",
 ]
 
+[[package]]
+name = "mpris"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55cef955a7826b1e00e901a3652e7a895abd221fb4ab61547e7d0e4c235d7feb"
+dependencies = [
+ "dbus",
+ "derive_is_enum_variant",
+ "enum-kinds",
+ "from_variants",
+ "thiserror",
+]
+
 [[package]]
 name = "native-tls"
 version = "0.2.11"
@@ -860,7 +987,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 dependencies = [
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "syn 2.0.52",
 ]
 
@@ -969,7 +1096,7 @@ dependencies = [
  "phf_generator 0.11.2",
  "phf_shared 0.11.2",
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "syn 2.0.52",
 ]
 
@@ -1030,6 +1157,12 @@ dependencies = [
  "unicode-ident",
 ]
 
+[[package]]
+name = "quote"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
+
 [[package]]
 name = "quote"
 version = "1.0.35"
@@ -1241,7 +1374,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 dependencies = [
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "syn 2.0.52",
 ]
 
@@ -1346,15 +1479,32 @@ dependencies = [
  "phf_generator 0.10.0",
  "phf_shared 0.10.0",
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
 ]
 
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
 [[package]]
 name = "strsim"
 version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
 
+[[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",
+]
+
 [[package]]
 name = "syn"
 version = "1.0.109"
@@ -1362,7 +1512,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
 dependencies = [
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "unicode-ident",
 ]
 
@@ -1373,7 +1523,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07"
 dependencies = [
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "unicode-ident",
 ]
 
@@ -1383,6 +1533,15 @@ version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
 
+[[package]]
+name = "synom"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"
+dependencies = [
+ "unicode-xid",
+]
+
 [[package]]
 name = "system-configuration"
 version = "0.5.1"
@@ -1427,6 +1586,26 @@ dependencies = [
  "utf-8",
 ]
 
+[[package]]
+name = "thiserror"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+dependencies = [
+ "proc-macro2",
+ "quote 1.0.35",
+ "syn 2.0.52",
+]
+
 [[package]]
 name = "tinyvec"
 version = "1.6.0"
@@ -1468,7 +1647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
 dependencies = [
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "syn 2.0.52",
 ]
 
@@ -1548,12 +1727,24 @@ dependencies = [
  "tinyvec",
 ]
 
+[[package]]
+name = "unicode-segmentation"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+
 [[package]]
 name = "unicode-width"
 version = "0.1.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
 
+[[package]]
+name = "unicode-xid"
+version = "0.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"
+
 [[package]]
 name = "url"
 version = "2.5.0"
@@ -1624,7 +1815,7 @@ dependencies = [
  "log",
  "once_cell",
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "syn 2.0.52",
  "wasm-bindgen-shared",
 ]
@@ -1647,7 +1838,7 @@ version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
 dependencies = [
- "quote",
+ "quote 1.0.35",
  "wasm-bindgen-macro-support",
 ]
 
@@ -1658,7 +1849,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
 dependencies = [
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "syn 2.0.52",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
@@ -1680,6 +1871,28 @@ dependencies = [
  "wasm-bindgen",
 ]
 
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
 [[package]]
 name = "windows-sys"
 version = "0.48.0"
@@ -1838,6 +2051,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
 dependencies = [
  "proc-macro2",
- "quote",
+ "quote 1.0.35",
  "syn 2.0.52",
 ]
index ba316a9b3ac910cc5da6a524636d7522131c23f2..cb0850dab7b9689ac453ce28b1fd1abf515e8e38 100644 (file)
@@ -26,6 +26,9 @@ objc = "0.2.7"
 cocoa = "0.25.0"
 objc_id = "0.1.1"
 
+[target.'cfg(target_os = "linux")'.dependencies]
+mpris = "2.0.1"
+
 [profile.release]
 strip = true
 lto = true
index 932cc0299d5510f4d11dc93ce2f4e57d5d6509a3..f4d969a991ccbfb27be73527b6e02e299fc3088b 100644 (file)
--- a/README.md
+++ b/README.md
@@ -59,4 +59,8 @@ make
 make -e profile=release
 ```
 
+### Additional Dependencies
+
+On linux you might need to install the libssl-dev and libdbus-dev
+
 [genius_api_docs]: https://docs.genius.com/
index f6784618490162c6a5f667c3be3561cb5276c2c9..55443eb3b7822c47c325842f40e0f16e2dfdd0c3 100644 (file)
@@ -8,7 +8,7 @@ use serde_json;
 const CONFIG_ENV_VARIABLE: &str = "LYRICLI_CONFIG_DIRECTORY";
 const CONFIG_DEFAULT_LOCATION: &str = "XDG_CONFIG_HOME";
 const CONFIG_FALLBACK_LOCATION: &str = ".config";
-const CONFIG_SUBDIRECTORY: &str = ".config";
+const CONFIG_SUBDIRECTORY: &str = "lyricli";
 const CONFIG_FILENAME: &str = "lyricli.conf";
 
 #[derive(Serialize, Deserialize, Debug)]
@@ -55,7 +55,8 @@ impl Configuration {
         Configuration {
             enabled_sources: vec![
                 "apple_music".to_string(),
-                "spotify".to_string()
+                "spotify".to_string(),
+                "strawberry".to_string()
             ]
         }
     }
diff --git a/src/sources/dbus.rs b/src/sources/dbus.rs
new file mode 100644 (file)
index 0000000..57c5853
--- /dev/null
@@ -0,0 +1,48 @@
+use std::io::Result;
+use mpris::PlayerFinder;
+
+use crate::Track;
+
+use super::LyricsSource;
+
+pub struct Dbus;
+
+impl Dbus {
+    pub fn new() -> Self {
+        Dbus
+    }
+}
+
+impl LyricsSource for Dbus {
+
+    fn name(&self) -> String {
+        "dbus".to_string()
+    }
+
+    fn current_track(&self) -> Option<Track> {
+        let player = PlayerFinder::new().ok()?
+            .find_active().ok()?;
+
+        let metadata = player.get_metadata().ok()?;
+        let name = metadata.title()?.to_string();
+        let artists = metadata.artists()?;
+        let artist = artists.get(0)?.to_string();
+
+        Some(Track {
+            name,
+            artist
+        })
+    }
+
+    fn disable(&self) -> Result<()> {
+        Ok(())
+    }
+
+    fn enable(&self) -> Result<()> {
+        Ok(())
+    }
+
+    fn reset(&self) -> Result<()> {
+        Ok(())
+    }
+}
index 78f749994ca5ce76725639e27ee15560e6b330b6..087a87f4a6cfb553888320ea1784746d17f590d8 100644 (file)
@@ -5,28 +5,16 @@ mod apple_music;
 #[cfg(target_os = "macos")]
 mod spotify;
 
-// #[cfg(not(target_os = "macos"))]
-// mod rhythmbox;
-// #[cfg(not(target_os = "macos"))]
-// mod quod_libe;
-// #[cfg(not(target_os = "macos"))]
-// mod strawberry;
-// #[cfg(not(target_os = "macos"))]
-// mod tauon;
+#[cfg(target_os = "linux")]
+mod dbus;
 
 #[cfg(target_os = "macos")]
 use apple_music::AppleMusic;
 #[cfg(target_os = "macos")]
 use spotify::Spotify;
 
-// #[cfg(not(target_os = "macos"))]
-// use rhythmbox::Rhythmbox;
-// #[cfg(not(target_os = "macos"))]
-// use quod_libet::QuodLibet;
-// #[cfg(not(target_os = "macos"))]
-// use strawberry::Strawberry;
-// #[cfg(not(target_os = "macos"))]
-// use tauon::Tauon;
+#[cfg(target_os = "linux")]
+use dbus::Dbus;
 
 use crate::Track;
 
@@ -94,10 +82,7 @@ pub fn available_sources() -> Vec<Box<dyn LyricsSource>> {
 
     #[cfg(not(target_os = "macos"))]
     {
-        // sources.push(Box::new(Rhythmbox::new()));
-        // sources.push(Box::new(QuodLibet::new()));
-        // sources.push(Box::new(Strawberry::new()));
-        // sources.push(Box::new(Tauon::new()));
+        sources.push(Box::new(Dbus::new()));
     }
 
     sources