Most modern distributions still ship with Bash as the default shell. While there is absolutely nothing wrong with Bash in the slightest there is another popular kid on the block called ZSH. ZSH can do most if not all the things Bash can do but with a ton of extra features to boot.

It is completely modular and can be installed and configured for low-end systems while also being able to be completely tricked out if performance is of no concern. Let's install and configure this amazing shell!

sudo pacman -S zsh zsh-completions

Run it once to configure the default settings.

zsh

Install Antigen for advanced plugin management

yay -S antigen-git

Add the following source to your ~/.zshrc file:
source /usr/share/zsh/scripts/antigen/antigen.zsh

Add some awesome plugins like Git support and Syntax hightlighting

# Load the oh-my-zsh's library.
antigen use oh-my-zsh

# Bundles from the default repo (robbyrussell's oh-my-zsh).
antigen bundle git

# Syntax highlighting bundle.
antigen bundle zsh-users/zsh-syntax-highlighting

# Load the theme.
antigen theme af-magic

# Tell antigen that you're done.
antigen apply

Play around with it and if you like it set as default shell for your user.

chsh -s $(which zsh)

Aliasses

Make ZSH look for a .aliases file.

echo '' >> .zshrc
echo 'source $HOME/.aliases' >> .zshrc

Pacman ZSH hook

Install a Pacman hook to update the mirrorlist to specified criterea upon upgrading the pacman-mirrorlist package.

sudo mkdir -p /etc/pacman.d/hooks

Create a new file in /etc/pacman.d/hooks/zshupgrade.hook and paste the following code:

[Trigger]
Operation = Upgrade
Type = Package
Target = zsh

[Action]
Description = Reload zshrc after upgrade
When = PostTransaction
Exec = /usr/bin/env sh -c "/home/<USER>/.zshrc"

Now every time the zsh package gets upgraded we reload the zsh shell.


DOCUMENT HISTORY:

09-25-2018

Added useful Pacman hook for refreshing your zsh shell session after zsh package update. Credits: Tead.

Added document history for transparency sake.