diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config.rs | 10 | ||||
-rw-r--r-- | src/tty.rs | 5 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/config.rs b/src/config.rs index fafb61c2..3be8e4c8 100644 --- a/src/config.rs +++ b/src/config.rs @@ -11,6 +11,7 @@ use std::path::{Path, PathBuf}; use std::str::FromStr; use std::sync::mpsc; use std::time::Duration; +use std::collections::HashMap; use ::Rgb; use font::Size; @@ -171,6 +172,10 @@ impl<'a> Shell<'a> { /// Top-level config type #[derive(Debug, Deserialize)] pub struct Config { + /// TERM env variable + #[serde(default)] + env: HashMap<String, String>, + /// Initial dimensions #[serde(default)] dimensions: Dimensions, @@ -267,6 +272,7 @@ impl Default for Config { shell: None, config_path: None, visual_bell: Default::default(), + env: Default::default(), } } } @@ -998,6 +1004,10 @@ impl Config { self.shell.as_ref() } + pub fn env(&self) -> &HashMap<String, String> { + &self.env + } + fn load_from<P: Into<PathBuf>>(path: P) -> Result<Config> { let path = path.into(); let raw = Config::read_file(path.as_path())?; @@ -207,7 +207,10 @@ pub fn new<T: ToWinsize>(config: &Config, options: &Options, size: T) -> Pty { builder.env("USER", pw.name); builder.env("SHELL", shell.program()); builder.env("HOME", pw.dir); - builder.env("TERM", "xterm-256color"); // sigh + builder.env("TERM", "xterm-256color"); // default term until we can supply our own + for (key, value) in config.env().iter() { + builder.env(key, value); + } builder.before_exec(move || { // Create a new process group |