@@ -187,6 +187,8 @@ configuration during runtime use the `reload` statement in the command prompt
|
|||||||
|
|
||||||
Possible configuration values are:
|
Possible configuration values are:
|
||||||
|
|
||||||
|
* `command_key`: Key to open command line <single character>, set to `:` by
|
||||||
|
default
|
||||||
* `use_nerdfont`: Turn nerdfont glyphs on/off <true/false>
|
* `use_nerdfont`: Turn nerdfont glyphs on/off <true/false>
|
||||||
* `flip_status_indicators`: By default the statusbar will show a play icon when
|
* `flip_status_indicators`: By default the statusbar will show a play icon when
|
||||||
a track is playing and a pause icon when playback is stopped. If this setting
|
a track is playing and a pause icon when playback is stopped. If this setting
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ pub const CLIENT_ID: &str = "d420a117a32841c2b3474932e49fb54b";
|
|||||||
|
|
||||||
#[derive(Clone, Serialize, Deserialize, Debug, Default)]
|
#[derive(Clone, Serialize, Deserialize, Debug, Default)]
|
||||||
pub struct ConfigValues {
|
pub struct ConfigValues {
|
||||||
|
pub command_key: Option<char>,
|
||||||
pub default_keybindings: Option<bool>,
|
pub default_keybindings: Option<bool>,
|
||||||
pub keybindings: Option<HashMap<String, String>>,
|
pub keybindings: Option<HashMap<String, String>>,
|
||||||
pub theme: Option<ConfigTheme>,
|
pub theme: Option<ConfigTheme>,
|
||||||
|
|||||||
25
src/main.rs
25
src/main.rs
@@ -11,6 +11,7 @@ use std::str::FromStr;
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use clap::{App, Arg};
|
use clap::{App, Arg};
|
||||||
|
use cursive::event::EventTrigger;
|
||||||
use cursive::traits::Identifiable;
|
use cursive::traits::Identifiable;
|
||||||
use librespot_core::authentication::Credentials;
|
use librespot_core::authentication::Credentials;
|
||||||
use librespot_core::cache::Cache;
|
use librespot_core::cache::Cache;
|
||||||
@@ -229,13 +230,23 @@ async fn main() -> Result<(), String> {
|
|||||||
// initial screen is library
|
// initial screen is library
|
||||||
layout.set_screen("library");
|
layout.set_screen("library");
|
||||||
|
|
||||||
cursive.add_global_callback(':', move |s| {
|
let cmd_key = |cfg: Arc<Config>| cfg.values().command_key.unwrap_or(':');
|
||||||
if s.find_name::<ContextMenu>("contextmenu").is_none() {
|
|
||||||
s.call_on_name("main", |v: &mut ui::layout::Layout| {
|
{
|
||||||
v.enable_cmdline();
|
let c = cfg.clone();
|
||||||
});
|
cursive.set_on_post_event(
|
||||||
}
|
EventTrigger::from_fn(move |event| {
|
||||||
});
|
event == &cursive::event::Event::Char(cmd_key(c.clone()))
|
||||||
|
}),
|
||||||
|
move |s| {
|
||||||
|
if s.find_name::<ContextMenu>("contextmenu").is_none() {
|
||||||
|
s.call_on_name("main", |v: &mut ui::layout::Layout| {
|
||||||
|
v.enable_cmdline(cmd_key(cfg.clone()));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
cursive.add_global_callback('/', move |s| {
|
cursive.add_global_callback('/', move |s| {
|
||||||
if s.find_name::<ContextMenu>("contextmenu").is_none() {
|
if s.find_name::<ContextMenu>("contextmenu").is_none() {
|
||||||
|
|||||||
@@ -56,9 +56,9 @@ impl Layout {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn enable_cmdline(&mut self) {
|
pub fn enable_cmdline(&mut self, prefix: char) {
|
||||||
if !self.cmdline_focus {
|
if !self.cmdline_focus {
|
||||||
self.cmdline.set_content(":");
|
self.cmdline.set_content(prefix);
|
||||||
self.cmdline_focus = true;
|
self.cmdline_focus = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user