ZSH on Windows without WSL

Well, WSL it’s a good way to have a Unix environment on Windows, but sadly his performance and memory consumption leads me to find another alternative… and I found it in a place closer than I expected.

1. Bash

The first step is to downloa…


This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Camilo Martinez

Well, WSL it's a good way to have a Unix environment on Windows, but sadly his performance and memory consumption leads me to find another alternative... and I found it in a place closer than I expected.

1. Bash

The first step is to download and install git with bash terminal support.

2. ZSH

At least Bash is better than the windows CMD, but ZSH is in another league with his productivity boosts. So we are going to install ZSH over Bash.

Download ZSH

Download the latest MSYS2 zsh package from the MSYS2 package repository. The file will be named something along the lines of zsh-#.#-#-x86_64.pkg.tar.zst

zst files can be decompressed with PeaZip

Install

Extract the contents of the archive (which should include etc and usr folders) into your Git Bash installation directory. This is likely to be under C:\Program Files\Git. Merge the contents of the folder if asked (no files should be getting overridden).

Setup

Open the Git Bash terminal and run zsh command, then verify the installed version.

zsh --version
zsh 5.9 (x86_64-pc-msys)

Configure zsh as the default shell by appending the following to your ~/.bashrc file:

if [ -t 1 ]; then
  exec zsh
fi

Windows can mangle some UTF-8 encoded text, causing unexpected characters to be displayed in your terminal. To fix this, add the following to your ~/.bashrc file, ideally, before the code that sets your shell as zsh:

/c/Windows/System32/chcp.com 65001 > /dev/null 2>&1

3. Oh my zsh!

Install

Add superpowers to zsh installing Oh my zsh! running this command.

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

Fonts

Download and install manually the Meslo Nerd Fonts to include all glyphs and symbols that Powerlevel10k may need

Theme

There are a lot of themes but my favorite is Powerlevel10k because is easy to set up and use.

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

If it doesn't trigger automatically, type p10k configure.

Wizard

On the ./zshrc file add this additional configuration

ZSH_THEME="powerlevel10k/powerlevel10k"
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(history)
POWERLEVEL9K_SHORTEN_DIR_LENGTH=1

export LS_COLORS="rs=0:no=00:mi=00:mh=00:ln=01;36:or=01;31:di=01;34:ow=04;01;34:st=34:tw=04;34:pi=01;33:so=01;33:do=01;33:bd=01;33:cd=01;33:su=01;35:sg=01;35:ca=01;35:ex=01;32:"

Plugins

Oh My zsh! have a lot of plugins to use. It's recommended to explore the options and use what is good for your needs.

I've already installed a lot related to software development and other ones to add more functionalities. Running these commands:

git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

And now edit the ./zshrc file and add it inside the plugins property (don't use commas as separator)

ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor root line)
ZSH_HIGHLIGHT_PATTERNS=('rm -rf *' 'fg=white,bold,bg=red')

plugins=(
    adb
    command-not-found
    deno
    docker
    git
    github
    gitignore
    history-substring-search
    node
    npm
    nvm
    yarn
    volta
    vscode
    sudo
    web-search
    z
    zsh-autosuggestions
    zsh-syntax-highlighting
)

If you are using NVM take care of following this configuration to avoid slowing the zsh start-up

4. Terminals

To use the same terminal inside VSCode and Windows Terminal follow these configurations.

VS Code

Add these properties to the user setttings.json

{ 
    ...
+   "terminal.integrated.fontFamily": "MesloLGS NF",
+   "terminal.integrated.fontSize": 12,
+   "terminal.integrated.shellIntegration.enabled": true,
+   "terminal.integrated.defaultProfile.windows": "Git Bash",
    ...
}

Microsoft Terminal

Add these configurations on the Git Bash terminal.

{
    "profiles": {
        "defaults": {},
        "list": [
+               "font": {
+                   "face": "MesloLGS NF",
+                   "size": 12
+               },
                "guid": "{2ece5bfe-50ed-5f3a-ab87-5cd4baafed2b}",
                "hidden": false,
                "name": "Git Bash",
                "source": "Git",
+               "startingDirectory": "D:\\Developer"
            },
        ]
    }
}

Downsides

  • Not as fast as I expected, but much faster than WSL (and also not dealing with his memory and performance issues)
  • Take some time to load the first time (but, less than WSL)
  • Volta on Windows requires additional permissions, maybe you gonna need to come back to NVM
  • Strange behavior while writing inside VS Code terminal
  • Can't use paths saved on %VARIABLE%, you are going to need to translate it with cygpath $LOCALAPPDATA. To change to a path use something like this $(cygpath $LOCALAPPDATA)/Volta/tools/image/node/

Sources

That’s All Folks!
Happy Coding
🖖

ko-fi


This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Camilo Martinez


Print Share Comment Cite Upload Translate Updates
APA

Camilo Martinez | Sciencx (2022-10-11T17:54:49+00:00) ZSH on Windows without WSL. Retrieved from https://www.scien.cx/2022/10/11/zsh-on-windows-without-wsl/

MLA
" » ZSH on Windows without WSL." Camilo Martinez | Sciencx - Tuesday October 11, 2022, https://www.scien.cx/2022/10/11/zsh-on-windows-without-wsl/
HARVARD
Camilo Martinez | Sciencx Tuesday October 11, 2022 » ZSH on Windows without WSL., viewed ,<https://www.scien.cx/2022/10/11/zsh-on-windows-without-wsl/>
VANCOUVER
Camilo Martinez | Sciencx - » ZSH on Windows without WSL. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/10/11/zsh-on-windows-without-wsl/
CHICAGO
" » ZSH on Windows without WSL." Camilo Martinez | Sciencx - Accessed . https://www.scien.cx/2022/10/11/zsh-on-windows-without-wsl/
IEEE
" » ZSH on Windows without WSL." Camilo Martinez | Sciencx [Online]. Available: https://www.scien.cx/2022/10/11/zsh-on-windows-without-wsl/. [Accessed: ]
rf:citation
» ZSH on Windows without WSL | Camilo Martinez | Sciencx | https://www.scien.cx/2022/10/11/zsh-on-windows-without-wsl/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.