Blog | Getting Fancy with Terminal

18

Mar
2015

Getting Fancy with Terminal

One of my recent adventures into NodeJS has led me down the path of MEAN and reading various articles on that, I came across various Terminal alternatives and enhancements. I know, I know, I am late to the party, but when I saw FishShell, I was sold. Then I saw Powerline and liked that too, so here is how to set these up.

First thing is to make sure you have Homebrew installed. Then you can install fish simply by running the following command:

[korey@localhost ~]$ brew install fish

Now that fish is installed, you will have a few options in making it your default shell. Homebrew provides instructions already, but I just wanted it on my account for Terminal, so I changed the shell command in Terminal’s preferences.
term_prefs

Great, now you can use fish anytime you open terminal, but what about getting Powerline setup? The instructions are here, but I will include what I did here for completeness.

[korey@localhost ~]$ brew install python
[korey@localhost ~]$ pip install powerline-status

The next step is to install the patched fonts so your prompt will not have strange characters on it. For this part, you need to download the patched fonts zip from github, and then run the install.sh script included there. The last step here is equally important; you should change the font used by your selected terminal profile to one of the fonts for Powerline.
term_prefs2
Now that Powerline is installed, you will need to update your Fish config to load it.

[korey@localhost ~]$ vi ~/.config/fish/config.fish
# source autojump
[ -f /usr/local/share/autojump/autojump.fish ]; and . /usr/local/share/autojump/autojump.fish
 
#source powerline
set fish_function_path $fish_function_path "/usr/local/lib/python2.7/site-packages/powerline/bindings/fish"
powerline-setup

My last step was to install auto jump, which is another great tool and you can see that it has also been included in the above listing in my Fish config.

[korey@localhost ~]$ brew install autojump

You should now end up with a autocomplete terminal similar to this:
terminal