alacritty

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 0d2f5b0f0f9f5779fe6bcdd3016ed4cfc222f7bd
parent ca9a259caa59e48db3bdfdf021ee26c8bb85be99
Author: Bjorn Neergaard <bjorn@neersighted.com>
Date:   Mon,  3 Dec 2018 15:26:59 -0700

Launch a login shell by default on macOS



Diffstat:
MCHANGELOG.md | 1+
Msrc/tty/unix.rs | 17+++++++++++++----
2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md @@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed a bad type conversion which could cause underflow on a window resize +- Alacritty now spawns a login shell on macOS, as with Terminal.app and iTerm2 ## Version 0.2.3 diff --git a/src/tty/unix.rs b/src/tty/unix.rs @@ -221,9 +221,18 @@ pub fn new<T: ToWinsize>( let (master, slave) = openpty(win.ws_row as _, win.ws_col as _); - let default_shell = &Shell::new(pw.shell); - let shell = config.shell() - .unwrap_or(default_shell); + let default_shell = if cfg!(target_os = "macos") { + let shell_name = pw.shell.rsplit('/').next().unwrap(); + let argv = vec![ + String::from("-c"), + format!("exec -a -{} {}", shell_name, pw.shell), + ]; + + Shell::new_with_args("/bin/bash", argv) + } else { + Shell::new(pw.shell) + }; + let shell = config.shell().unwrap_or(&default_shell); let initial_command = options.command().unwrap_or(shell); @@ -243,7 +252,7 @@ pub fn new<T: ToWinsize>( // Setup shell environment builder.env("LOGNAME", pw.name); builder.env("USER", pw.name); - builder.env("SHELL", shell.program()); + builder.env("SHELL", pw.shell); builder.env("HOME", pw.dir); if let Some(window_id) = window_id {