Use TERMINAL from environment as default terminal emulator

This commit is contained in:
leiserfg 2020-10-06 21:36:35 +02:00
parent 9fe6980f86
commit f926259a12

View file

@ -1,19 +1,42 @@
use std::env;
use crate::{Error, Result}; use crate::{Error, Result};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
fn default_terminal() -> std::string::String{
match env::var("TERMINAL") {
Ok(val) => val,
Err(_) => "xterm -e".to_owned()
}
}
fn default_selector() -> std::string::String{
"rofi -dmenu -p 'Open With: '".to_owned()
}
fn default_enable_selector() -> bool {
false
}
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
pub struct Config { pub struct Config {
#[serde(default="default_enable_selector")]
pub enable_selector: bool, pub enable_selector: bool,
#[serde(default="default_selector")]
pub selector: String, pub selector: String,
#[serde(default="default_terminal")]
pub terminal_emulator: String, pub terminal_emulator: String,
} }
impl Default for Config { impl Default for Config {
fn default() -> Self { fn default() -> Self {
// This seems repetitive but serde does not uses Default
Config { Config {
enable_selector: false, enable_selector: default_enable_selector(),
selector: "rofi -dmenu -p 'Open With: '".to_owned(), selector: default_selector(),
terminal_emulator: "xterm -e".to_owned(), terminal_emulator: default_terminal()
} }
} }
} }