DEV Community

Yogesh Devaliya
Yogesh Devaliya

Posted on • Updated on

Make your Linux Terminal Productive & Beautiful.

1600947596-terminal

In this article, we will configure the Linux terminal/shell, install the plugins/packages to boost up speed, increase productivity, and change the look and feel of your terminal.

First of all, check the active shell using this command.

echo $SHELL 
or 
echo $0
Enter fullscreen mode Exit fullscreen mode

The below command will display all the available shell.

cat /etc/shells
Enter fullscreen mode Exit fullscreen mode

Follow the steps to setup & configure your Terminal

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

Install Zsh Shell ()

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

< /etc/shells grep zsh
outout: 
/bin/zsh
/usr/bin/zsh
Enter fullscreen mode Exit fullscreen mode

Installation

  • For Debian(ubuntu like distros)
sudo apt update
sudo apt install zsh
Enter fullscreen mode Exit fullscreen mode
  • For Redhat
sudo yum install zsh
Enter fullscreen mode Exit fullscreen mode
  • For OpenSuse
zypper install zsh
Enter fullscreen mode Exit fullscreen mode
  • For Arc Linux or Manjaro
pacman -S zsh
Enter fullscreen mode Exit fullscreen mode
  • For Fedora
dnf install zsh
Enter fullscreen mode Exit fullscreen mode
  • For free bsd
pkg install zsh
Enter fullscreen mode Exit fullscreen mode
  • For macOS
brew install zsh
Enter fullscreen mode Exit fullscreen mode

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 your default terminal:

chsh -s $(which zsh)
Enter fullscreen mode Exit fullscreen mode

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

chsh -s /bin/bash or exec bash
or
chsh -s /bin/zsh or exec zsh
Enter fullscreen mode Exit fullscreen mode

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)"
Enter fullscreen mode Exit fullscreen mode

Install via wget

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

Manual Installation

curl -Lo install.sh https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
Enter fullscreen mode Exit fullscreen mode

Check the variable of the .zshrc file to confirm that zsh is activated.

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 the omz plugins and themes.

Themes

The Theme(ZSH_THEME) is a variable of the zshrc(omz) file. To add or update the theme, you've to first install(if theme is not 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 omzs are robbyrussell and agnoster that come with omz installation.

Set the robbyrussell theme

ZSH_THEME="robbyrussell"
Enter fullscreen mode Exit fullscreen mode

Agnoster theme

ZSH_THEME="agnoster"
Enter fullscreen mode Exit fullscreen mode

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

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

Apart from that, you can install external themes as well. Some of the popular 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
Enter fullscreen mode Exit fullscreen mode

set the theme in ZSH_THME variable in the .zshrc file.

ZSH_THEME="powerlevel10k/powerlevel10k"
Enter fullscreen mode Exit fullscreen mode

Configure Powerlevel10k

Type command:

p10 configure

to start Powerlevel10k configuration.

Or else 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
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

Then set the ZSH_THEME variable in .zshrc

ZSH_THEME="spaceship"
Enter fullscreen mode Exit fullscreen mode


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

Plugins

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

plugins=(git node autojump ... )
Enter fullscreen mode Exit fullscreen mode

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

plugins=(git ...)
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

and activate the plugin

plugins=(... zsh-autosuggestions)
Enter fullscreen mode Exit fullscreen mode

Or Manual Installation

git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
Enter fullscreen mode Exit fullscreen mode

and add the following line to ~/.zshrc

source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Then enable the plugin

source ./zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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

plugins=(... zsh-syntax-highlighting)
Enter fullscreen mode Exit fullscreen mode

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 the z plugin, assing z to your plugin variable.

plugins=(... z )
Enter fullscreen mode Exit fullscreen mode

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, glyph, icons, arrow effects, emojis.

Install Powerline fonts

sudo apt-get install fonts-powerline
Enter fullscreen mode Exit fullscreen mode

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, you can make the terminal productive and 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
Enter fullscreen mode Exit fullscreen mode

With Brew

brew install starship
Enter fullscreen mode Exit fullscreen mode

With Scoop

scoop install starship
Enter fullscreen mode Exit fullscreen mode

After installation, add the below line to initialize the Starship

For Bash(~/.bashrc)

eval "$(starship init bash)"
Enter fullscreen mode Exit fullscreen mode

For Zsh(~/.zshrc)

eval "$(starship init zsh)"
Enter fullscreen mode Exit fullscreen mode

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

starship init fish | source
Enter fullscreen mode Exit fullscreen mode

Configuration
Starship uses a TOML file for configuration.

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

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

starship.toml

add_newline = false
symbol = "➜"
[language]
symbol='*'
.
.
.
Enter fullscreen mode Exit fullscreen mode

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

Tmux/Tilix

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

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

I hope you guys find the article helpful.

Top comments (3)

Collapse
 
w3ndo profile image
Patrick Wendo

This is just the ZSH rabbit hole I wanted to jump into

Collapse
 
sidcraftscode profile image
sid

Thanks 😊!

Collapse
 
qiamast profile image
Mahdi Qiamast

NiCe