I have been using the combination of ZSH + iTerm2 on my command line environment even before Apple adopted ZSH on macOS Catalina. My first experience with ZSH was utilizing a collection of plugins and configs from oh-my-zsh. After some time, I decided to change to another group of plugins and configurations called YADR (Yet Another Dotfile Repo). I also created my customization on top of YADR expired by my friend Panachi, who also did the same. I had no problem with these combinations, although the YADR project became outdated, and iTerm2 didn’t evolve much in the latest updates, so I decided to change my environment to try and learn something new.

This post is not a tutorial but an experience sharing about changing my dev environment. I strongly encourage you to check the official documents if you want to change your setup and face some issues.

Alacritty

I started searching for a new terminal emulator. I wanted something fast, reliable, and with a nice set of features since I spend a lot of time using the terminal during my day. During my search, one of my colleagues introduced me to Alacritty, and I thought it was cool. Alacritty is a GPU-Accelerated terminal emulator with a nice feature set, and since I was thinking about giving tmux another try, I decided to go with it.

I haven’t yet done much on Alacritty, but I was delighted with the default configuration, and with minimal changes, I could get in almost the way I wanted.

My basic configuration includes the NerdFonts, which I was already using with iTerm2, and a set of Alacritty themes that you can find in this repo, you can see what my .alacritty.yml` looks like below.

# ~/.alacritty.yml
# Font and style
font:
  normal:
    family: Hack Nerd Font
    style: Regular
  bold:
    family: Hack Nerd Font
    style: Regular
  italic:
    family: Hack Nerd Font
    style: Italic
  bold_italic:
    family: Hack Nerd Font
    style: Bold Italic
  size: 16
  offset:
    x: 0
    y: 0
  glyph_offset:
    x: 0
    y: 0

# Theme
import:
  - ~/.alacritty-colorscheme/themes/argonaut.yaml

I’m using a theme called argonaut, that’s what my Alacritty looks like at the moment of this post.

Alacritty screen shot

Fish

I often see people talking about Fish shell on Twitter, Reddit, etc. I was curious about Fish shell, but I never looked into them in detail, and now since I have decided to refresh my environment and try something new, and to be honest, I didn’t spend any time looking for another alternative.

Why fish? Fish is a fully-equipped command line shell (like bash or zsh) that is smart and user-friendly. Fish supports powerful features like syntax highlighting, autosuggestions, and tab completions that just work, with nothing to learn or configure.
If you want to make your command line more productive, more useful, and more fun, without learning a bunch of arcane syntax and configuration options, then fish might be just what you’re looking for! https://fishshell.com/docs/current/tutorial.html

I’m not going into details about how to install fish and set it as your default shell. Please check the official documentation tutorial to understand all those steps https://fishshell.com/docs/current/tutorial.html.

So far, I’m enjoying Fish shell. Features like Autosuggestions, Tab Completions, and Syntax Highlighting are handy. But of course, there is a learning curve to start using Fish. For example, create an alias or set an environment variable that uses a different syntax.

The more I use Fish more I discover about its features, and I’m very impressed by the number of features and integrations Fish has. I’m not going to share my fish.config file yet on this post, but I plan to share my entire config on my GitHub.

tmux

tmux is an open-source terminal multiplexer for Unix-like operating systems. It allows multiple terminal sessions to be accessed simultaneously in a single window. It is useful for running more than one command-line program at the same time.
Wikipedia https://en.wikipedia.org/wiki/Tmux

I tried tmux a long time ago; for some reason, my experience was slightly frustrating, but I decided to give tmux another try. Since I’m still getting used to tmux, I did change a few configurations to enable the mouse and clear command to be able to clean up the screen and scroll back to the top; maybe I will come up with more configurations in the future, but for now, the default key bidding works fine to me.

That’s what my .tmux.conf looks like now.

# .tmux.conf
# enable mouse integration for "tab" change etc
setw -g mouse on

# Enable terminal clear scrollback / Ctrl + l 
set -g default-terminal xterm-256color

Here is a tmux cheat sheet I found with some basic commands like create and navigate between windows, panes, sessions, etc.