15 Tools to Customize Your Terminal and Command Line

15 Tools to Customize Your Terminal and Command Line
customize terminal

Great tooling can improve your workflow significantly and help you write more code. To help determine the best tools to customize your command line and terminal, I asked front end developers at Shopify what apps, packages, and tooling they use every day. We’re sharing their responses so you can start customizing your terminal or command prompt, and start developing more efficiently and beautifully.

Template Icon

Terminal emulation applications 🖼️

If you decide that the newly released Windows Terminal or the default Mac Terminal isn’t for you, there are other terminal emulation applications you can choose from. The top used ones at Shopify are as follows: 

iTerm

customize terminal: iterm

iTerm won by a pretty big landslide, likely because our developers use Macbook Pros at Shopify. iTerm includes features like split panes, hotkey windows, search, and autocomplete. You can also customize the look and feel pretty easily too. 

Hyper.js

customize terminal: hyperjs

Hyper.js is an electron app that works cross platform and is beautifully designed. It’s fully extensible with a public API so you can build your own tooling for it if you want to. It comes with a library of themes and plugins built specifically for it. 

Alacritty

alacritty

Alacritty is also a cross platform terminal emulator with a focus on simplicity and performance. You can install it via brew for Mac or chocolately for Windows. Full installation instructions can be found on GitHub.

Package managers 📦

To install most of the tools that help customize your terminal, you’ll want to install a package manager, which will make installing new packages much easier. Simply follow the global installation instructions for the package manager of your choice. I’ve listed a few below to choose from.

homebrew
Package manager for macOS

chocolatey
Package manager for Windows

npm
Package manager for Javascript

pip
Universal package manager used to install and manage software packages written in Python

You might also like: The 20 Best Atom Packages for Front End Developers.

Shells 🐚

Ever wondered the difference between bash and zsh? When you open your command line you run a shell, which is essentially just a program. By default you probably have Bash (Bourne Again Shell) installed, which essentially passes commands that you type to your computer to execute.

zsh and oh-my-zsh

customize terminal: oh my zsh

Also known as Z Shell, this is a shell similar to Bash, however it becomes infinitely more powerful when using the oh-my-zsh framework. The oh-my-zsh framework comes with thousands of helpful functions, helpers, plugins, and themes.

fish

customize terminal: fish

fish shell is a user-friendly cross platform command line shell. It has autosuggestions, color support, and syntax highlighting without the need to setup or configure—it works out of the box. Installation instructions for all platforms can be found on the fish shell website. 

Command line tools 🛠️

Now that we have a terminal emulator picked out, as well as a shell, let’s take a look at the last round of customization; command line tools! Below are a few helpful tools to get you started.

fzf

customize terminal: fzf

fzf is a command line fuzzy finder. It’s an interactive Unix filter for the command line that can be used with any list: files, command history, processes, hostnames, bookmarks, git commits, and more. Simply run fzf to start searching in your current directory.

ripgrep

customize terminal: ripgrep

ripgrep recursively searches your current directory for a specific regex pattern. It ignores and skips hidden files/directories and binary files.

jump

customize terminal: jump

jump is a really cool command line tool that learns your navigational habits by keeping track of the directories you visit. It then suggests the best directory for the shortest search term.

thef*ck

customize terminal: thefuck

Though a bit risqué, thef*ck is a super helpful tool to fix errors when you mistype previous commands. How many times have you pushed to a branch only to get that pesky up-stream branch error from git? With this tool, just type fuck and choose the right command from a suggested list.

httpie

customize terminal: httpie

httpie is a modern command line HTTP client, basically a more user friendly curl alternative. It allows for sending arbitrary HTTP requests using a simple and natural syntax, and has a nicely colored output.

tldr

customize terminal: tldr pages

tldr provides a selection of community driven man (manual) pages. It also works with a variety of clients like Alfred, VS Code, and even on the web

hub

customize terminal: hub

hub is a command line tool made by GitHub. It wraps git and makes working with GitHub easier by extending it with extra features and commands. 

jq

customize terminal: jq

jq is a command line JSON processor. It has zero runtime dependencies and can be downloaded as a single binary. jq can be used to slice, filter, map, and transform structured data.

nerd-fonts

customize terminal: nerd fonts

To take advantage of many built in features of certain themes and tools, make sure to install Nerd Fonts. It’s a font aggregator, collector, and patcher that includes over 3,600 icons and glyph collections from most major iconic fonts.

Relaxed theme

customize terminal: relaxed theme

This theme works across your terminal emulation application to your text editor of choice. Have the same scheme throughout!

Hot Tip: Browse developers’ dotfiles on GitHub

Other developers store their configurations in dotfile directories on their GitHub account. Try checking out your favorite developer and see if they have their dotfile configurations in a public repository. For more resources on dotfiles check out Lars Kappert’s list.

Get working

Now that you’ve installed 🎉all the things 🎉 you should be ready to get coding, albeit more beautifully and more efficiently than ever before.

What command line customizations have you made? What are the tools you can’t live without? Tell us in the comments below.

About the Author

Tiffany is a Developer Advocacy Lead at Shopify. She specializes in front end development, user experience design, accessibility, and is passionate about inspiring young designers and developers. Previously, she was an Ottawa Chapter Lead for Ladies Learning Code and worked as a Front End Developer at Shopify.

Grow your business with the Shopify Partner Program

Learn more