DEV Community

abdfn
abdfn

Posted on • Updated on

Oh My Zsh + PowerLevel10k = 😎 terminal

Hi there, The developers always use the terminal, but it is boring and has no colors or shapes.
Today we will transform our terminals into a wonderful, colorful, supportive terminal that offers suggestions and has a memory, we'll do it by OMZ and design it by PowerLevel10k...

Pre-requisites

if you're using Windows, you can install and configure WSL

and I recommended to use Ubuntu or Debian wsl plugin

Setup zsh

in the command line type



# homebrew
brew install zsh

# apt-get
sudo apt-get install zsh


Enter fullscreen mode Exit fullscreen mode

type zsh



zsh


Enter fullscreen mode Exit fullscreen mode

Install Oh My Zsh



sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"


Enter fullscreen mode Exit fullscreen mode

PowerLevel10k

  • Install Powerlevel10k using the following command


# gh cli
gh repo clone romkatv/powerlevel10k $ZSH_CUSTOM/themes/powerlevel10k

# git
git clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k


Enter fullscreen mode Exit fullscreen mode

Then you need to enable it, change the value of ZSH_THEME to following in ~/.zshrc file :



ZSH_THEME="powerlevel10k/powerlevel10k"


Enter fullscreen mode Exit fullscreen mode

Configure Powerlevel10k Theme

  • Make sure your terminal font is FiraCode NF.

font link: url

for windows users: url

Alt Text

Cheat-sheet for Windows

if you've Windows terminal you can open your settings and in UNIX preferences and add fontFace prop,
assign it to FiraCode NF.



{
  "guid": "{YOUR_UNIX_GUID}",
  "hidden": false,
  "name": "Ubuntu",
  "source": "Windows.Terminal.Wsl",
  "fontFace": "FiraCode NF",
  "snapOnInput": true,
  "useAcrylic": true
}


Enter fullscreen mode Exit fullscreen mode

Windows Terminal url in Microsoft Store: url

Windows Terminal repo: url

p10k configure

type



p10k configure


Enter fullscreen mode Exit fullscreen mode

x

you can choose your style...

Plugins (Optional, Good to have!)

Clone plugins

  • zsh-syntax-highlighting - It enables highlighting of commands whilst they are typed at a zsh prompt into an interactive terminal. This helps in reviewing commands before running them, particularly in catching syntax errors.


# gh cli
gh repo clone zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

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


Enter fullscreen mode Exit fullscreen mode
  • zsh-autosuggestions - It suggests commands as you type based on history and completions.


# gh cli
gh repo clone zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

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


Enter fullscreen mode Exit fullscreen mode

ls tools

  • colorls: A Ruby script that colorizes the ls output with color and icons

  • exa: is a modern replacement for ls

colorls



sudo gem install colorls


Enter fullscreen mode Exit fullscreen mode

warn 🙃

maybe you'll get some gem errors, you should fix it

Linux



sudo apt install ruby-full


Enter fullscreen mode Exit fullscreen mode

exa



brew install exa


Enter fullscreen mode Exit fullscreen mode

secrets manager

  • secman: Human-friendly and amazing secrets manager.


# via npm
npm install -g secman

# via script
curl -fsSL https://cli.secman.dev | bash


Enter fullscreen mode Exit fullscreen mode

file transfer app

  • tran: Securely transfer and send anything between computers with TUI.


curl -sL https://cutt.ly/tran-cli | bash


Enter fullscreen mode Exit fullscreen mode

special thanks

special thanks to

to showing me exa

Activate the plugins

In ~/.zshrc file replace the line starting with plugins=() to below line.



plugins=( git zsh-syntax-highlighting zsh-autosuggestions )


Enter fullscreen mode Exit fullscreen mode

colorls



if [ -x "$(command -v colorls)" ]; then
    alias ls="colorls"
    alias la="colorls -al"
fi


Enter fullscreen mode Exit fullscreen mode

or exa



if [ -x "$(command -v exa)" ]; then
    alias ls="exa"
    alias la="exa --long --all --group"
fi


Enter fullscreen mode Exit fullscreen mode

Some more official plugins - ohmyzsh plugins

after all these steps type



source ~/.zshrc

Enter fullscreen mode Exit fullscreen mode




Finally it should be like this 👇

Mac

Alt Text

Windows(WSL) or Linux

Alt Text

Alt Text

That's it, see you next time 👋

Top comments (37)

Collapse
 
ombratteng profile image
Ole-Martin Bratteng

I can recommend exa as a replacement for colorls
the.exa.website/
exa

Collapse
 
syndelis profile image
Syndelis

I myself recommend lsd (lsDeluxe) as the replacement
github.com/Peltoche/lsd

Collapse
 
abdfnx profile image
abdfn

👌

Collapse
 
abdfnx profile image
abdfn • Edited

WOW, It's good, I'll try it 👍, can you tell me what is the font on the image ?

Collapse
 
ombratteng profile image
Ole-Martin Bratteng

It's FiraCode with NerdFont patches
https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q40jb8xksefyl08by3m5.png

Thread Thread
 
abdfnx profile image
abdfn • Edited

Nice, I tried exa and it's very powerful

Thread Thread
 
ombratteng profile image
Ole-Martin Bratteng

I've got this in my .zshrc file

if [ -x "$(command -v exa)" ]; then
    alias ls="exa"
    alias la="exa --long --all --group"
fi
Enter fullscreen mode Exit fullscreen mode
Thread Thread
 
abdfnx profile image
abdfn

This is better

Thread Thread
 
ombratteng profile image
Ole-Martin Bratteng

Yeah, I wrap all my aliases in if clauses, that way I can share my dotfiles across systems, and not worry if e.g. exa isn't installed on that particular machine, I still have the original ls

Thread Thread
 
abdfnx profile image
abdfn

what an idea, you've an amazing 🧠

Collapse
 
coding404life profile image
Yahya

Hello thanks for sharing I have an issue with it some icons is not showing what could make this issue

Collapse
 
abdfnx profile image
abdfn

Hi, the problem is from the font, try Hack nerd or MesloLGS NF fonts

Collapse
 
coding404life profile image
Yahya • Edited

thanks for reply I have used both and the issues till there and I even downloaded the 4 fonts from their GitHub repo and install them and I can't see them

Thread Thread
 
abdfnx profile image
abdfn • Edited

What's your system ?
And which terminal do you use ?

Thread Thread
 
coding404life profile image
Yahya

Mac os big sur i use the normal terminal and I have installed iterm2 and issue still with icons is there too :)

Thread Thread
 
abdfnx profile image
abdfn • Edited

Ok, go to iTerm preferences, 👉 profiles 👉 general and paste /bin/zsh.
after this restart iTerm2.

alt

Make sure your font in preferences 👉 profiles 👉 text is MesloLGS NF.

x

Go to the terminal and type

source ~/.zshrc
Enter fullscreen mode Exit fullscreen mode

and configure your design

x

Thread Thread
 
coding404life profile image
Yahya

Thanks Alot it fixed the issue much appreciated
:)

Thread Thread
 
abdfnx profile image
abdfn • Edited

Anytime bro 🤝

Collapse
 
abdfnx profile image
abdfn

🤝

Collapse
 
whystart profile image
WhyStart

How are your screenshots generated?

Collapse
 
abdfnx profile image
abdfn

in Windows, press Alt+Print Screen

in MacOS

Collapse
 
winklerjan profile image
Jan Winkler • Edited

also in win, you can create a selection by pressing "win + shift + S"

Thread Thread
 
abdfnx profile image
abdfn

🤝

Collapse
 
whystart profile image
WhyStart

thanks

Thread Thread
 
mudit000 profile image
Mudit Kumar • Edited

Shift+CTRL+Command+4 is a better way to snap selected area..and automatically copy to clipboard

Thread Thread
 
abdfnx profile image
abdfn

👌

Collapse
 
gshanbhag525 profile image
Gunesh Shanbhag

@ombratteng @abdfn
I am not able to get exa working with alias ls.
I ahve added the if stmt you had provided but still ls doesnt print exa's style.
I am on macos big sur with iterm.

Collapse
 
abdfnx profile image
abdfn

execute this command

source ~/.zshrc
Enter fullscreen mode Exit fullscreen mode
Collapse
 
cbouttes profile image
cbouttes

Salut, j'ai eu un problème parce que oh mon zsh montre un caractère bizarre '?' sur mon terminal sous Ubuntu WSL2.
Je recommande le tutoriel Youtube suivant "HOW TO install powerlevel10k for zsh/oh-my-zsh WITH Nerd Fonts inside WSL" qui montre comment installer "Meslo Nerd Font" sur Windows ce qui résout le problème.

Collapse
 
molikawsaud profile image
Saad Bakhiyi

Thank you a lot ths is the first time I can do this I'm so happy thank for you help

Collapse
 
abdfnx profile image
abdfn

❤ glad for help you

Collapse
 
nedcode profile image
Ned Marafawi

Thank you for the exa ls. Really helpful! 😊

Collapse
 
httvhutceoscop profile image
Viet NT

It's nice, thank you!

Collapse
 
abdfnx profile image
abdfn

glad to help

Collapse
 
tddevem profile image
Emre

broken instruction, p10k is not found. I'll go through source page.

Collapse
 
mahamatali profile image
Mahamat Ali Youssouf

Thank you so much