DEV Community

Cover image for Ubuntu on Windows (WSL)
Maxime HEBRARD
Maxime HEBRARD

Posted on

Ubuntu on Windows (WSL)

At work I often need to use software or CLI only available on Linux, while keeping contact with my co-workers require access to Microsoft Office and other Windows products...
Back in the days, the only solution was to have two machines and transfer data across. Later came the idea of dual boot, installing both OS on one machine. But we needed to reboot the machine everytime we wanted to change OS. Then I came across VirtualBox, a software running on Windows, that allows to install a Linux OS. The limitation was that CPUs, disk space and RAM were divided between the two OS running concurrently, reducing significantly the compute power of the machine.

Today, a new solution exists: Windows Subsystem for Linux (WSL). It allows to install Linux OS, as a software running on Windows. the Linux core has full access to the resources of the machine, and is fully integrated.

WSL Installation

From microsoft.com.

  • Prerequisites: Windows 10 Build 19041 and higher.
  • Search for Windows PowerShell and click on "Run as administrator"
  • In the terminal, type:
wsl --install
Enter fullscreen mode Exit fullscreen mode
  • Reboot the machine

Ubuntu Installation

wslfetch

  • Ensure that you are connected to internet.
  • Launch the newly installed application "Ubuntu"
  • Wait for the installation process
  • Enter new UNIX username
  • Enter new password
  • Retype new password
  • Check Linux version
wslfetch
Enter fullscreen mode Exit fullscreen mode

Access files

Note that Windows "do not know about" linux file system, but Linux can access all the files in Windows. By default Windows file system is mounted in Linux at /mnt/c/. I recommand to create a symlink (shortcut) of Documents and Downloads, the most used Windows folders, in Linux home directory. That way, the access to data is simplified.

cd
ln -s /mnt/c/Users/hebrardms/Documents Documents
ln -s /mnt/c/Users/hebrardms/Downloads Downloads
Enter fullscreen mode Exit fullscreen mode

Fonts

We will change the default font of the terminal in preparation for the theme we will install later.

  • Open the web browser
  • Visit powerlevel10K - Fonts
  • Install the recommended fonts (MenloLGS)
    • Download the font files from the github links
    • Open the .ttf file
    • Click on "Install"
  • Open Ubuntu
  • Right-click on the logo at the top left corner
  • Select "Properties"
  • Select the font "MesloLGS NF" and size "18"

Color theme

Default terminal colors can be inappropriate. They do not play well with the theme we will install later. To address this issue we will follow tomorrow color theme. Note tomorrow do not provide a theme file dedicated to windows default terminal, but we can define the colors manually.

  • Open Ubuntu
  • Right-click on the logo at the top left corner
  • Select "Properties"
  • Select "Colors"
  • Update the "Color Values" for each color as per the list below

from base16-tomorrow-night
first column is the original value, third column is the tomorrow theme value

default      name    tomorrow
38,38,38    - Black  - 29,31,33
0,55,218    - Blue   - 129,162,190
19,161,14   - Green  - 181,189,104
58,150,221  - Cyan   - 138,190,183
197,15,31   - Red    - 204,102,102
136,23,152  - Purple - 178,148,187
193,156,0   - Yellow - 240,198,116
204,204,204 - White  - 197,200,198
118,118,118 - Black  - 150,152,150
0,55,218    - Blue   - 129,162,190
19,161,14   - Green  - 181,189,104
58,150,221  - Cyan   - 138,190,183
197,15,31   - Red    - 204,102,102
136,23,152  - Purple - 178,148,187
193,156,0   - Yellow - 240,198,116
242,242,242 - White  - 255,255,255
Enter fullscreen mode Exit fullscreen mode
  • Select the first color
  • Click "OK"

colors

Oh My Zsh

WSL come with a minimal terminal. In this section, we will configure the terminal to add some features and style using Oh My ZSH and the theme Powerlevel10k.

  • Open "Ubuntu"
# Install Zsh
sudo apt install zsh -y
# Set Zsh as default shell
chsh -s $(which zsh)
# Close Ubuntu
exit
Enter fullscreen mode Exit fullscreen mode
  • Open "Ubuntu"
  • Setup Zsh, type 0
  • Install Oh My Zsh
sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
Enter fullscreen mode Exit fullscreen mode

OMZ

Powerlevel10K

Theme that add useful infomation right in the prompt.

  • Open the web browser Visite powerlevel10k
  • Follow Powerlevel install instructions...
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
Enter fullscreen mode Exit fullscreen mode
  • Install zsh-autosuggestions plugin that provides autocompletion based on our previous commands
git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
Enter fullscreen mode Exit fullscreen mode
  • Install exa a modern replacement for ls.
wget -c http://old-releases.ubuntu.com/ubuntu/pool/universe/r/rust-exa/exa_0.9.0-4_amd64.deb
sudo apt-get install ./exa_0.9.0-4_amd64.deb
Enter fullscreen mode Exit fullscreen mode
  • Edit .zshrc to enable powerlevel theme
vim .zshrc
Enter fullscreen mode Exit fullscreen mode
  • Press 'insert' to enter insert mode
  • Uncomment options and edit file as follow...
# Enable powerlevel10K
# ZSH_THEME="robbyrussell"
ZSH_THEME="powerlevel10k/powerlevel10k"

# Fix pasting URLs and other text messed up.
DISABLE_MAGIC_FUNCTIONS="true"

# Disable colors in ls.
DISABLE_LS_COLORS="true"

# Enable command auto-correction.
ENABLE_CORRECTION="true"

# Display red dots whilst waiting for completion.
COMPLETION_WAITING_DOTS="true"

# Disable marking untracked files under VCS as dirty. (much faster)
DISABLE_UNTRACKED_FILES_DIRTY="true"

# Enable plugins
plugins=(git zsh-autosuggestions)

# Alias of ls using exa
if [ -x "$(command -v exa)" ]; then
    alias ls="exa --icons"
    alias ll="exa --icons --long"
    alias la="exa --icons --long --all --group"
    alias lt="exa --icons --long --all --group --git --tree"
fi
Enter fullscreen mode Exit fullscreen mode
  • Press 'esc' to exit insert mode
  • Press ':' and 'x' end 'return' to save and quit the file
  • Update Terminal
source .zshrc
Enter fullscreen mode Exit fullscreen mode
  • Follow instructions to customise the prompt

powerlevel

Next, I suggest you follow Environment Manager - Conda.

Top comments (0)