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

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 (30)

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 Author

👌

Collapse
abdfnx profile image
abdfn Author • Edited on

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 • Edited on

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 🧠

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 • Edited on

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 • Edited on

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 • Edited on

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 • Edited on

Anytime bro 🤝

Collapse
whystart profile image
WhyStart

How are your screenshots generated?

Collapse
abdfnx profile image
abdfn Author

in Windows, press Alt+Print Screen

in MacOS

Collapse
whystart profile image
WhyStart

thanks

Thread Thread
mudit000 profile image
Mudit Kumar • Edited on

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

Thread Thread
abdfnx profile image
abdfn Author

👌

Collapse
httvhutceoscop profile image
Viet NT

It's nice, thank you!

Collapse
abdfnx profile image
abdfn Author

glad to help

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 Author

❤ glad for help you

Collapse
nedcode profile image
Ned Marafawi

Thank you for the exa ls. Really helpful! 😊

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 Author

execute this command

source ~/.zshrc
Enter fullscreen mode Exit fullscreen mode