diff options
author | Honza Pokorny <honza@redhat.com> | 2017-01-06 22:06:45 -0400 |
---|---|---|
committer | Honza Pokorny <me@honza.ca> | 2017-01-06 22:07:35 -0400 |
commit | ea44427be3af0b400e08f598f35ad48e73bc60a1 (patch) | |
tree | 342b65b1cf8c53d73693c9ed6dfe0f2c94608ce2 /src/tty.rs | |
parent | c73295715629f33e687741769f3079536ed5e104 (diff) | |
download | alacritty-ea44427be3af0b400e08f598f35ad48e73bc60a1.tar.gz alacritty-ea44427be3af0b400e08f598f35ad48e73bc60a1.zip |
Add "shell" option to config
This allows you to configure the shell to use when alacritty starts.
cc: #122
Diffstat (limited to 'src/tty.rs')
-rw-r--r-- | src/tty.rs | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -25,6 +25,7 @@ use libc::{self, winsize, c_int, pid_t, WNOHANG, WIFEXITED, WEXITSTATUS, SIGCHLD use term::SizeInfo; use display::OnResize; +use config::Config; /// Process ID of child process /// @@ -202,14 +203,19 @@ fn get_pw_entry(buf: &mut [i8; 1024]) -> Passwd { } /// Exec a shell -fn execsh() -> ! { +fn execsh(config: &Config) -> ! { let mut buf = [0; 1024]; let pw = get_pw_entry(&mut buf); + let shell = match config.shell() { + Some(shell) => shell.to_str().unwrap(), + None => pw.shell + }; + // setup environment env::set_var("LOGNAME", pw.name); env::set_var("USER", pw.name); - env::set_var("SHELL", pw.shell); + env::set_var("SHELL", shell); env::set_var("HOME", pw.dir); env::set_var("TERM", "xterm-256color"); // sigh @@ -223,7 +229,7 @@ fn execsh() -> ! { } // pw.shell is null terminated - let shell = unsafe { CStr::from_ptr(pw.shell.as_ptr() as *const _) }; + let shell = unsafe { CStr::from_ptr(shell.as_ptr() as *const _) }; let argv = [shell.as_ptr(), ptr::null()]; @@ -239,7 +245,7 @@ fn execsh() -> ! { } /// Create a new tty and return a handle to interact with it. -pub fn new<T: ToWinsize>(size: T) -> Pty { +pub fn new<T: ToWinsize>(config: &Config, size: T) -> Pty { let win = size.to_winsize(); let (master, slave) = openpty(win.ws_row as _, win.ws_col as _); @@ -265,7 +271,7 @@ pub fn new<T: ToWinsize>(size: T) -> Pty { } // Exec a shell! - execsh(); + execsh(config); }, Relation::Parent(pid) => { unsafe { |