Add TERM config entry

This commit is contained in:
Anders Rasmussen 2017-02-14 13:22:59 +11:00 committed by Joe Wilm
parent 24c32dc400
commit c49d4a9365
4 changed files with 39 additions and 1 deletions

View File

@ -1,4 +1,17 @@
# Configuration for Alacritty, the GPU enhanced terminal emulator
# Any items in the `env` entry below will be added as
# environment variables. Some entries may override variables
# set by alacritty it self.
env:
# TERM env customization. Default is xterm-256color
# Note: the default TERM value `xterm-256color` does not
# specify all features alacritty supports. This does pose
# a few issues with programs relying on terminfo and the
# `tput` command
TERM: xterm-256color
# Window dimensions in character columns and lines
# (changes require restart)
dimensions:

View File

@ -1,4 +1,16 @@
# Configuration for Alacritty, the GPU enhanced terminal emulator
# Any items in the `env` entry below will be added as
# environment variables. Some entries may override variables
# set by alacritty it self.
env:
# TERM env customization. Default is xterm-256color
# Note: the default TERM value `xterm-256color` does not
# specify all features alacritty supports. This does pose
# a few issues with programs relying on terminfo and the
# `tput` command
TERM: xterm-256color
# Window dimensions in character columns and lines
# (changes require restart)
dimensions:

View File

@ -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())?;

View File

@ -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