DEV Community

Cover image for Customize Windows Terminal with WSL2
Karan Shetty
Karan Shetty

Posted on • Edited on

Customize Windows Terminal with WSL2

After customization, the terminal will look something like this:

Terminal

Pre-requisites:

  • You must have WSL or WSL2 installed in your Windows 10 PC. For installation process, you can refer the official docs or watch this video by David Combal.
  • You must have the Windows Terminal or Windows Terminal Preview version installed. The easiest and recommended way to download it is from the Microsoft Store. I prefer to use the preview version as it has more features 😁(but may have some bugs).

Initial steps

  • Open up the Windows Terminal.

  • Open up Ubuntu (or any distro you have installed) in the Windows terminal by clicking on the down arrow next to the + icon.

Alt Text

  • Run the following command to check the version of the distro you have installed. ```

lsb_release -a

If everything worked fine, your distro name and version must be displayed.


- (Optional but best practice) Run the following command to update your Ubuntu packages. For the other distros, run their respective commands.
Enter fullscreen mode Exit fullscreen mode

sudo apt update && sudo apt upgrade -y && sudo apt autoremove && sudo apt autoclean


### Install zsh shell

- Run the command: 
Enter fullscreen mode Exit fullscreen mode

sudo apt install zsh

- To check if zsh if installed, run:
Enter fullscreen mode Exit fullscreen mode

zsh --version

You must see the version of zsh shell you have installed.


- Set zsh as the default login shell by running the following command:
Enter fullscreen mode Exit fullscreen mode

sudo usermod -s /usr/bin/zsh $(whoami)


- Restart you computer and you must see zsh as the default login shell. 😀


### Install oh-my-zsh
There are a ton of other frameworks for zsh shell like prezto, antigen, etc. My favorite is [oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh), but you can also try the other ones.

- Run the command:
Enter fullscreen mode Exit fullscreen mode

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Yaay! It's as easy as that.
You can configure the zsh shell by making changes in the `~/.zshrc` shell. This file runs every time we open the z shell just like the `.bashrc` file runs every time we open the bash shell. 
With the help of oh-my-zsh, a lot of cool plugins can be installed to increase your productivity. [Here](https://medium.com/@ivanaugustobd/your-terminal-can-be-much-much-more-productive-5256424658e8#:~:text=Functional%20%E2%80%94%20let%E2%80%99s%20put%20a%20s%CC%B6m%CC%B6i%CC%B6l%CC%B6e%CC%B6%20%CC%B6o%CC%B6n%CC%B6%20%CC%B6t%CC%B6h%CC%B6a%CC%B6t%CC%B6%20%CC%B6f%CC%B6a%CC%B6c%CC%B6e%CC%B6%20lot%20of%20cool%20features%20in!) is a guide for installing some useful oh-my-zsh plugins.

### Change settings in windows terminal
- In the windows terminal, open Settings by pressing `Ctrl` + `,`. This should open the `settings.json` file in your default editor (Mine is [VS Code](https://code.visualstudio.com/)).
- (Optional) To make Ubuntu as your default profile, copy the `guid` number from the `list`.

![Terminal Settings](https://dev-to-uploads.s3.amazonaws.com/i/zoa4hwhvh7n6zc21wnvp.png)

and paste it at the top in the `defaultProfile` property.

 ![Terminal Settings](https://dev-to-uploads.s3.amazonaws.com/i/l4k4t7w9dotnqpbwrjqp.png)

Next time you open Windows Terminal, Ubuntu must be the default profile opened.

- Download the [Cascadia Code PL](https://github.com/microsoft/cascadia-code/releases) and set it as a default `fontFace`.
(Note: Instead of Cascadia Code PL, you can install and apply one of the Nerd fonts from this [website](https://www.nerdfonts.com/))

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/bepadxop2ygm1knsn284.png)

- Set the `useAcrylic` and `acrylicOpacity` properties to add a beautiful opacity to your terminal.

![Terminal Settings](https://dev-to-uploads.s3.amazonaws.com/i/w09vyqmaupmipvd92h6c.png)

If it isn't working, check if `Transparency Effects` is checked in Settings > Personaliation > Colors.

![Settings](https://dev-to-uploads.s3.amazonaws.com/i/k14ionb2nwa1micvpy7d.png)

If you want to have a look at my full settings, [here](https://gist.github.com/shettykaran21/ab3d5cba710bae43a26739fd9d9e934d) it is.
For all the available settings in the terminal, refer the [official docs](https://docs.microsoft.com/en-us/windows/terminal/customize-settings/profile-settings).

### Install Powerline fonts
- Run the following command:
Enter fullscreen mode Exit fullscreen mode

sudo apt install fonts-powerline

This must install powerline fonts so that weird symbols don't appear in the terminal.
(You can also install one of [Nerd Fonts](https://github.com/ryanoasis/nerd-fonts) and apply it to your terminal settings).


## Install Powerlevel10k theme
- Run the command:
Enter fullscreen mode Exit fullscreen mode

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k


- Open `~/.zshrc` file in your favorite editor. For VS Code, run the command `code ~/.zshrc`. Add the line `ZSH_THEME="powerlevel10k/powerlevel10k"` and save.

![Zshrc](https://dev-to-uploads.s3.amazonaws.com/i/yvihdf82tg415u723n9n.png)

- Run the command `source ~/.zshrc` to apply the changes made in `.zshrc` file.
Configure the p10k settings according to your liking :).

- (Optional) After all this, the terminal should look pretty awesome. But even more customization can be made by opening the file `~/.p10k.zsh` file. Check their [offical github page](https://github.com/romkatv/powerlevel10k) for more info.

**Done!! Your terminal must look similar to this:**

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/j9zf4i6iakz7qrqiybgo.png)


Thank you for reading :). Please do share your feedback ✌

Enter fullscreen mode Exit fullscreen mode

Top comments (3)

Collapse
 
dylajwright profile image
Dylan

Nice article, thanks for sharing.

Collapse
 
shettykaran21 profile image
Karan Shetty

Your welcome 😊

Collapse
 
simong97 profile image
Simon Gurung

Why zsh is slow compared to bash in the wsl2?