6 min to read
Closing the inner loop: Powershell & Bash
The new Windows Terminal has unleashed powerful customization options to one of a developer’s most important and frequently used tools. We can take advantage of these new features to chip away at closing the inner development loop.
“… the inner loop is the iterative process that a developer performs when they write, build and debug code.”
If you work a lot with git, you can save yourself a bunch of time hunting around for information on your commits and branches by displaying it right at the prompt.
To get started, we’ll need a couple powershell modules.
- PoshGit PoshGit is a Powershell module that integrates Git by providing summary information that is displayed in the powershell prompt. It also provides tab completion support for common Git commands.
- OhMyPosh OhMyPosh is a theming engine for Windows Powershell that supports integration with PoshGit
From a new powershell prompt, install PoshGit and OhMyPosh
Install-Module posh-git -Scope CurrentUser Install-Module oh-my-posh -Scope CurrentUser
To use the PoshGit modules, they need to be imported within the active powershell session. To automatically import the modules every time a new powershell session is launched, we can add the import commands to the powershell profile.
We’ll also want to set a theme for oh-my-posh. You can pick from a list of pre-built themes from here, or you can create your own. I’m rolling with the Paradox theme.
Add-Content $Profile -Value "Import-Module posh-git" Add-Content $Profile -Value "Import-Module oh-my-posh" Add-Content $Profile -Value "Set-Theme Paradox"
PS C:\> notepad $Profile
Now when you reload Powershell you should see something like this.
Notice that there’s a couple of weird icons showing. This is because the default font for the terminal does not support ligatures. To fix that up, we’re going to need to install a font that supports them.
There a couple popular fonts that support ligatures, most notably Fira Code, Monoid and Hasklig.
The font you choose comes down to personal preference, but I really like the default font that ships with the Windows Terminal; Cascadia Code. However, this takes us back to the original problem. The font doesn’t include the glyphs needed to support the ligatures!
Luckily, Microsoft has also released a version of the font that includes the glyphs up on their Github
Download and install cascadiaPL.ttf
To update the terminal to use a custom font, you will need the font name. This is different from the file name.
- Double click the name of your custom font
- Make note of the font name
Lastly, update the
fontFace property your Windows Terminal profile to use the newly installed font.
Switch up your theme, and you’ve got a sexy looking dev terminal.
To remove oh-my-posh and go back to a default shell, remove or comment out the lines that were added to the Powershell profile.
We’ll need two things:
ZSH The Z shell is a Unix shell that can be used as an interactive login shell and as a command interpreter for shell scripting. Zsh is an extended Bourne shell with many improvements, including some features of Bash, ksh, and tcsh.
Oh-my-zsh Oh-My-Zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with several helpful functions, helpers, plugins and themes.
First, we’ll install an alternate shell called ZSH.
sudo apt install zsh
Then install the theming engine for ZSH called oh-my-zsh.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
The install script will download and install
oh-my-zsh and prompt you to change the default shell to
zsh up and running and
oh-my-zsh ready to go, the prompt can be now customized by downloading themes for
I did a bit of extra googling and found a theme I really like called powerlevel10k.
To install a theme, clone the git repo into a new folder in the
git clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k
To set the theme, edit
~/.zshrc and set
ZSH_THEME= to the location of the
.zsh-theme file, referenced from the root of the
/theme directory. For example, if the full path to the powerlevel theme is
/home/casey/.oh-my-zsh/custom/themes/powerlevel10k/powerlevel10k.zsh-theme I would set the value to:
And finally, we need to install a font that includes all the git related glyphs. I’m using a font called MesloLGS NF which is the recommended font for the powerlevel10k theme.
Once downloaded and installed, edit your Windows Terminal profile and set the
fontFace property to the name of the new font.
Restart your ubuntu shell. You’ll be greeted with a small configuration wizard for the powerlevel10k theme that will take you through all the customization options available to you. Just follow the prompts and configure the theme to your liking.
Here’s what I ended up with.
To revert back to a default shell, run the