Set up your terminal to boost the productivity, increase the speed and make the user interface beautiful

Configure your shell to boost the productivity, increase the speed and make stunning user interface that you will love working with.

 Yogesh    23 Sep, 2020    125

IMG: Set up your terminal to boost the productivity, increase the speed and make the user interface beautiful

In this article, we will configure the shell/terminal and upgrade the settings, install the packages to increase the productivity and speed, and change the look and feel of the terminal.

First of all, check the activated shell

echo $SHELL 
or 
echo $0

The above command will display your currently activated shell.

cat /etc/shells

The above command will display all the available shells.

Follow the below steps to setup & configure the Terminal

In this article, we consider the Bash terminal that will available in Linux and macOS.

The default terminal that comes with Linux(Ubuntu OS) is Bash(Bourne Shell). In this tutorial, we will first change the shell and then configure it and then update the plugins & color preferences.

Install Zsh Shell

First, check whether zsh is installed or not using below command:

< /etc/shells grep zsh
outout: 
/bin/zsh
/usr/bin/zsh

Installation

  • For Debian(ubuntu like distros)
    sudo apt update
    sudo apt install zsh
  • For Redhat

    sudo yum install zsh
  • For OpenSuse

    zypper install zsh
  • For Arc Linux or Manjaro

    pacman -S zsh
  • For Fedora

    dnf install zsh
  • For free bsd

    pkg install zsh
  • For macOS

    brew install zsh

    or you can download it from source http://zsh.sourceforge.net/Arc/source.html

Official Installation Doc: https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH

Check zsh version: zsh --version

Zsh has been installed successfully.

Now, make zsh as default terminal:

chsh -s $(which zsh)

If you want to switch back to the default bash or any other terminal, then run the below command.

chsh -s /bin/bash or exec bash
or
chsh -s /bin/zsh or exec zsh

then restart the terminal.

Install oh my zsh

Oh my zsh is an open-source framework for managing Zsh configuration.

Install via Curl

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Install via wget

sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

Manual Installation

curl -Lo install.sh https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh

Check the variable of .zshrc file to confirm that zsh is activated.To check whether oh my zsh is active or not, check the variable inside .zshrc file.

Open zshrc file: > sudo nano ~/.zshrc export ZSH="$HOME/.oh-my-zsh"

Make sure the above variable is set inside the zshrc file. If it's not there then edit the file and add the above line.

To apply all the edited changes in the bashrc/zshrc file you must have to run source ~/.bashrc or source ~/.zshrc command.

Next, we will install omz plugins and themes.

To apply the themes and plugins, we've to update the variable of .zshrc config file.

Themes

The Theme(ZSH_THEME) is a variable of zshrc(omz) file. To add or update the theme, you've to first install(if not pre-installed) the theme and then update the theme(ZSH_THEME) variable.

The oh-my-zsh comes with predefined themes. You can set them by setting the ZSH_THEME variable.

The default and popular themes of omz are robbyrussell and agnoster that comes with omz installation.

Set the robbyrussell theme

ZSH_THEME="robbyrussell"

Agnoster theme

ZSH_THEME="agnoster"

There are many more pre-installed theme options available with Oh-my-zsh. For example Pure, Avit, Apple, Bira, etc...

Checkout the full list of Oh-My-Zsh Themes: https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

Apart from that, you can install externally developed themes as well. Some of the popular external themes are Powerlevel10k, Powerlevel9k, Spaceship, Bullet-Train, etc...

Powerlevel10k

Powerlvel10k is a fully customizable and more advanced theme of zsh.

Installation

For Oh my zsh

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

then, add set the theme in ZSH_THME variable in .zshrc file.

ZSH_THEME="powerlevel10k/powerlevel10k"

Configure Powerlevel10k

Type command: p10 configure to start Powerlevel10k configuration.

Or also you can edit the configuration file: ~/.p10k.zsh

For more details: https://github.com/romkatv/powerlevel10k

Spaceship

Another powerful theme is Spaceship. It comes with many features and an extremely customizable zsh prompt theme.

Installation

For Oh My Zsh

git clone https://github.com/denysdovhan/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt" --depth=1

Symlink spaceship.zsh-theme to your oh-my-zsh custom themes directory:

ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"

Then set the ZSH_THEME variable in .zshrc

ZSH_THEME="spaceship"

For more details: https://denysdovhan.com/spaceship-prompt/

Plugins

The Plugins is an array variable that contains a list of activated plugin values in zshrc(omz) file. To add or update the plugins, you've to first install(if not pre-installed) the plugin and then update the plugin variable.

plugins=(git node autojump ... )

The values of the plugins var should be separated by space, not by a comma. Now, install some of the very useful plugins. Git Just add the word git in plugins var.

plugins=(git ...)

zsh-autosuggestions

For Oh-My-Zsh

First, clone the directory using git

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

and activate the plugin

plugins=(... zsh-autosuggestions)

Or Manual Installation

git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions

and add the following line to ~/.zshrc

source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh

and restart the terminal.

zsh-syntax-highlighting Installation

For Zsh

Clone the git repo

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc

Then enable the plugin

source ./zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

For Oh-My-Zsh

Clone the repo

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

And add the zsh-syntax-highlighting value in plugins variable

plugins=(... zsh-syntax-highlighting)

And restart the terminal.

Before

After

z or Zsh-z

Z allows you to jump quickly to the directory that you visited most in the past. Z will remember the path you've entered frequently and helped you to jump around them with few keystrokes.

Z uses regular expression.

To enable z plugin, assing z to your plugin variable.

plugins=(... z )

Plugin:Z

For more oh-my-zsh plugins: https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins

Terminal Preferences

Install the Patched Fonts for the terminal. The patched font will be used to display characters, glyphs, icons, arrow effects, emoji.

Install Powerline fonts

sudo apt-get install fonts-powerline

For more options: https://github.com/powerline/fonts#quick-installation

Download and Install the Powerline/Nerd font

Then select the preferable front in custom font inside the text tab in Preferences.

Change the colors(color scheme) of the Terminal Open the preferences and select the second tab=> Colors.

Available Buil-in Schemes are: Tango & Solarized are recommended.

You can also customize the colors according to your need in the custom tab.

Next, make the terminal faster more customizable with Starship

Starship

Install and configure Starship The Starship is "The minimal, blazing-fast, and infinitely customizable prompt for any shell!"

Installation Using curl

curl -fsSL https://starship.rs/install.sh | bash

With Brew

brew install starship

With Scoop

scoop install starship

After installation, add the below line to init the Starship

For Bash(~/.bashrc)

eval "$(starship init bash)"

For Zsh(~/.zshrc)

eval "$(starship init zsh)"

For Fish(~/.config/fish/config.fish)

starship init fish | source

Configuration Starship uses Ta OML file for configuration.

TOML Doc: https://github.com/toml-lang/toml

To get started configuring starship, create the config file starship.toml inside .config direcotry.

starship.toml

add_newline = false
symbol = "➜"
[language]
symbol='*'
.
.
.

For prompt configuration visit: https://starship.rs/config/#prompt

Tmux/Tilix

tmux is a program which runs in a terminal and allows multiple other terminal programs to be run inside it.

Tilix is similar to Tmux. It is tiling terminal emulator. Tmux/Tilix can split your emulator window in multiple terminal panes.

I hope you guys liked the article.