DEV Community

loading...

Oh My Zsh + PowerLevel10k = 😎 terminal

abdfnx profile image abdfn Updated on ・3 min read

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

brew 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
special thanks

special thanks to

ombratteng image

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 👋

Discussion (16)

pic
Editor guide
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 Author

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

Collapse
coding404life profile image
Yahya

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 Author

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 Author

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 Author

Anytime bro 🤝

Collapse
ombratteng profile image
Ole-Martin Bratteng

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

Collapse
abdfnx profile image
abdfn Author

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 Author

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 Author

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 Author

what an idea, you've an amazing 🧠