Add a keybind and shortcut to share the currently playing song

This commit is contained in:
Rasmus Larsen
2019-05-07 23:39:15 +02:00
parent c5a0a73077
commit de1dea5c68
3 changed files with 25 additions and 2 deletions

View File

@@ -33,6 +33,7 @@ unicode-width = "0.1.5"
dbus = { version = "0.6.4", optional = true }
rand = "0.6.5"
webbrowser = "0.5"
clipboard = "0.5.0"
[dependencies.rspotify]
git = "https://github.com/samrayleung/rspotify"

View File

@@ -6,6 +6,7 @@ use cursive::event::{Event, Key};
use cursive::views::ViewRef;
use cursive::Cursive;
use clipboard::{ClipboardContext, ClipboardProvider};
use library::Library;
use queue::{Queue, RepeatSetting};
use spotify::Spotify;
@@ -197,6 +198,25 @@ impl CommandManager {
);
}
{
let queue = queue.clone();
self.register_command(
"share",
Some(Box::new(move |_, _| {
if let Some(url) = queue
.get_current()
.and_then(|t| t.id)
.map(|id| format!("https://open.spotify.com/track/{}", id))
{
let mut ctx: ClipboardContext = ClipboardProvider::new().unwrap();
ctx.set_contents(url).unwrap();
}
Ok(None)
})),
)
}
{
let spotify = spotify.clone();
self.register_command(
@@ -284,9 +304,9 @@ impl CommandManager {
});
}
pub fn register_keybindings<'a>(
pub fn register_keybindings(
this: Arc<Self>,
cursive: &'a mut Cursive,
cursive: &mut Cursive,
keybindings: Option<HashMap<String, String>>,
) {
let mut kb = Self::default_keybindings();
@@ -321,6 +341,7 @@ impl CommandManager {
kb.insert(",".into(), "seek -500".into());
kb.insert("r".into(), "repeat".into());
kb.insert("z".into(), "shuffle".into());
kb.insert("m".into(), "share".into());
kb.insert("F1".into(), "focus queue".into());
kb.insert("F2".into(), "focus search".into());

View File

@@ -2,6 +2,7 @@ extern crate clap;
extern crate crossbeam_channel;
#[macro_use]
extern crate cursive;
extern crate clipboard;
extern crate directories;
extern crate failure;
extern crate futures;