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
The below command will display all the available shell.
cat /etc/shells
Follow the steps to setup & configure your Terminal
- Install ZSH
- Install & Configure Oh-my-zsh
- Install Themes
- Install Plugins
- Fonts & Colors
- Setup Starship
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
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 your default terminal:
chsh -s $(which zsh)
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
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 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
or ```source
~/.bashrc
~/.zshrc
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"
Agnoster theme
ZSH_THEME="agnoster"
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
set the theme in ZSH_THME variable in the .zshrc file.
ZSH_THEME="powerlevel10k/powerlevel10k"
Configure Powerlevel10k
Type command: p10
to start Powerlevel10k configuration.
configure
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
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 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.
.zshrc
plugins=(git node autojump ... )
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 ...)
**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**
![](https://designdrastic.com/images/articles/terminal-setup/hl3.png)
![](https://designdrastic.com/images/articles/terminal-setup/hl2.png)
**After**
![](https://designdrastic.com/images/articles/terminal-setup/hl4.png)
![](https://designdrastic.com/images/articles/terminal-setup/hl5.png)
**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 )
![Plugin:Z](https://designdrastic.com/images/articles/terminal-setup/z.gif)
> 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
For more options: **https://github.com/powerline/fonts#quick-installation**
**Download and Install the Powerline/Nerd font**
* [Source Code Pro](https://github.com/powerline/fonts/tree/master/SourceCodePro)
* [Fura/Fira Mono Powerline](https://github.com/powerline/fonts/tree/master/FiraMono)
* [Hack](https://github.com/powerline/fonts/tree/master/Hack)
* [Other Poweline Fonts](https://github.com/powerline/fonts)
* [Nerd Fonts](https://github.com/ryanoasis/nerd-fonts)
Then select the preferable front in custom font inside the text tab in Preferences.
[](https://designdrastic.com/images/articles/terminal-setup/preference-text.png)
**Change the colors(color scheme) of the Terminal**
Open the preferences and select the second tab=> Colors.
Available Buil-in Schemes are:
[](https://designdrastic.com/images/articles/terminal-setup/built-in-schemes.png)
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
With Brew
brew install starship
With Scoop
scoop install starship
After installation, add the below line to initialize 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 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='*'
.
.
.
For prompt configuration visit: **https://starship.rs/config/#prompt**
![](https://raw.githubusercontent.com/starship/starship/master/media/demo.gif)
### **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.
![](/images/articles/terminal-setup/tilix.png)
I hope you guys find the article helpful.
Top comments (3)
This is just the ZSH rabbit hole I wanted to jump into
Thanks 😊!
NiCe