DEV Community

Andrei Vasilev
Andrei Vasilev

Posted on

How to Set Up Your Terminal for Maximum Productivity in Development

The internet is flooded with articles on configuring a terminal for productive work, and this guide is another drop in that ocean. It’s designed to be useful for complete beginners or for those looking to try something different.

Following the steps in this guide, you will end up with a terminal that looks similar to the screenshot below.

Image description

Let’s start from defining the software we will use:

  1. The Alacrity terminal is incredibly fast and customizable. Try working with a large project in Vim using, for example, iTerm. You might be pleasantly surprised.
  2. Fish shell
  3. Plugins for fish:
    • oh-my-fish — packet manager for the fish shell
    • bobthefish — nice powerline style theme
    • git — provides a efficient shortcuts for git
    • bass — allows to use bash script/utilities in fish

How to install and setup

  1. Install the Alacritty terminal emulator using your machine’s packet manager or by following the instructions provided in the manual installation guide.
brew install --cask alacritty # for macOS
# or 
sudo snap install alacritty --classic # for unix based os
Enter fullscreen mode Exit fullscreen mode
  1. To configure Alacritty, we need to create a configuration file.
touch $HOME/.config/alacritty/alacritty.toml
# or
touch $HOME/.alacritty.toml
Enter fullscreen mode Exit fullscreen mode

and put an initial configs into it

import = [
  "~/.config/alacritty/catppuccin-mocha.toml" # use a nice looking theme
]

[font]
normal = {family= "JetBrains Mono"} # Good programming font from JetBrain
size = 12.0

[window]
#decorations = "None"
dynamic_padding = true
dimensions = { columns = 160, lines = 45 } # dimensions of the terminal window

[env]
TERM = "xterm-256color"

[selection]
save_to_clipboard = true # save selected text to the clipboard

Enter fullscreen mode Exit fullscreen mode
  1. Install a Fish shell using available package manager or one of some different options from here
brew install fish # for macOS
# or use following commands for Debian system
sudo apt-add-repository ppa:fish-shell/release-3
sudo apt update
sudo apt install fish
Enter fullscreen mode Exit fullscreen mode
  1. Set Fish as a default shell
echo /usr/local/bin/fish | sudo tee -a /etc/shells
chsh -s /usr/local/bin/fish
Enter fullscreen mode Exit fullscreen mode
  1. Restart your terminal and install oh-my-fish package manager
curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install | fish

Enter fullscreen mode Exit fullscreen mode

After that, you will be able to manage your Fish plugins using the following commands:

omf list # List all installed plugins
omf install [plugin name] # Install plugin
omf update [plugin-name]  # Update plugin
omf remove [plugin-name]  # Remove plugin  
Enter fullscreen mode Exit fullscreen mode
  1. Let’s install some plugins mentioned in the beginning, you can use full repository url with plugin to install iLet’s install some plugins mentioned in the beginning. You can use the full repository URL with the plugin to install it.
omf install https://github.com/jhillyerd/plugin-git
omf install bobthefish
omf install bass
Enter fullscreen mode Exit fullscreen mode
  1. To get everything out from the bobthefish theme, we need to install a powerline font.
sudo port select python python27-apple
brew install python

pip install --user powerline-status
Enter fullscreen mode Exit fullscreen mode
  1. Download and install JetBrains Mono font, following this instructions.
  2. Download a catppuccin-mocha theme. You can find more theme options in the GitHub repo.
curl -LO --output-dir ~/.config/alacritty https://github.com/catppuccin/alacritty/raw/main/catppuccin-mocha.toml

Enter fullscreen mode Exit fullscreen mode

At this point, you should have the fast and beautiful modern terminal in use. There are millions of different Fish plugins and Alacritty settings that you can set up to customize the terminal for your particular needs. This is just an initial setup, which can be infinitely modified.

Top comments (0)