aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config.rs10
-rw-r--r--src/tty.rs5
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())?;
diff --git a/src/tty.rs b/src/tty.rs
index ca5fad78..39d3deea 100644
--- a/src/tty.rs
+++ b/src/tty.rs
@@ -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