DEV Community

loading...
Cover image for Terminal Setup with Zsh + Tmux + Dracula Theme

Terminal Setup with Zsh + Tmux + Dracula Theme

André Brandão
Software Engineer @ Favo. Working with Serverless, TypeScript, Node.js, React and AWS.
Originally published at andrebrandao.me Updated on ・6 min read

Tmux Animation

I have just recently improved my terminal setup after learning how to use Tmux. It gave me a way to move faster between projects and even kept my session saved after machine shutdowns. My goal here is to help you configure a environment that will be both beautiful and functional. Let's get to it.

What we will set up

Guake: top-down terminal that can be instantaneously opened with a keystroke.

Zsh: an extended Bourne Shell (sh) with many improvements, powerful command line editing options, and support for plugins and themes.

Oh-My-Zsh: an open source, community-driven framework for managing your Zsh configuration.

Powerlevel10k: a theme for Zsh with interface helpers, such as git current branch and execution time.

Tmux: an open-source terminal multiplexer for Unix-like operating systems. It allows multiple terminal sessions to be accessed simultaneously in a single window.

Dracula Theme: a famous dark theme created by Zeno Rocha, a Brazilian developer.

Note: the following steps are done in Ubuntu. The same result can be achieved in MacOS with iTerm2 as the terminal.

Install Guake

When I worked with MacOS I used iTerm2, but now on Linux I am using Guake as my default terminal. What I look for is to be able to open the command line in any monitor with a simple CTRL + SPACE shortcut.

So if you're on Ubuntu, just install it with apt.

sudo apt install guake
Enter fullscreen mode Exit fullscreen mode

Choose your shortcut

Go to Preferences → Keyboard Shortcuts and choose your key to Toggle Guake Visibility.

Change your theme to Dracula

Dracula is one of the most famous themes out there. I use it in both terminal and VSCode. Guake already comes with it pre-installed, so go to Preferences → Appearance and choose Dracula as a Built-in scheme.

Other configs

You might also want to change the transparency and height of the window. Check out their documentation for more.

Screenshot 1

Zsh & Oh My Zsh

Now, let's install Z shell in Ubuntu.

sudo apt install zsh
Enter fullscreen mode Exit fullscreen mode

For other platforms, please check this guide.

Set it as your default shell.

chsh -s $(which zsh)
Enter fullscreen mode Exit fullscreen mode

You will have to logout for the changes to take effect.

Again, in Guake go to Preferences → Shell and set your default interpreter to /usr/bin/zsh. Restart it and you should see the message below.

Choose option 0. We will be setting this up with Oh My Zsh.

Screenshot 2

Installing Oh My Zsh

Oh My Zsh is a framework to manage your Zsh configuration, themes, plugins and much more.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Enter fullscreen mode Exit fullscreen mode

After the successful installation you should see the screen below.

Screenshot 3

You are now ready to install autocomplete and multiple plugins that will make your life easier. Check out the available plugins at the documentation.

I suggest you start with the following:

zsh-autosuggestions: makes suggestions based on commands you have already made.

zsh-syntax-highlighting: enables highlighting of commands while they are typed.

Clone both plugins to your OhMyZsh custom folder.

cd ~/.oh-my-zsh/custom/plugins
git clone https://github.com/zsh-users/zsh-autosuggestions.git
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
Enter fullscreen mode Exit fullscreen mode

Now, edit your ~/.zshrc file to include them.

plugins=(
    git
    zsh-autosuggestions
    zsh-syntax-highlighting
)
Enter fullscreen mode Exit fullscreen mode

Restart your Zsh with source ~/.zshrc.

Screenshot 4

Now, if you start typing, you will see the suggestions and can press the right arrow key to quickly autocomplete.

Powerlevel10k

Powerlevel10k is a theme for Zsh. It emphasizes speed, flexibility and out-of-the-box experience.

Install the required fonts

Configure Guake by opening Preferences → Apperance. Then, uncheck "Use the system fixed width font" and select MesloLGS NF Regular. For more details check their guide here.

Clone the repository

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
Enter fullscreen mode Exit fullscreen mode

Then, add powerlevel10k to ~/.zshrc

ZSH_THEME="powerlevel10k/powerlevel10k"
Enter fullscreen mode Exit fullscreen mode

Restart Zsh with source ~/.zshrc and follow the configuration wizard.

Screenshot 5

Choose your preferred style in the following screens.

Screenshot 6

Apply the changes to your zshrc and you're done.

Screenshot 7

You will end up with a result like the one below.

Screenshot 8

Tmux & Dracula Theme

In this last section, we will be installing Tmux with Dracula Theme.

sudo apt install tmux
Enter fullscreen mode Exit fullscreen mode

For other platforms, check this guide.

Then run it.

tmux new
Enter fullscreen mode Exit fullscreen mode

Screenshot 9

You will notice that we have lost the colors we had before. Let's bring them back with the next configs.

Install tpm to handle tmux plugins.

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Enter fullscreen mode Exit fullscreen mode

Edit ~/.tmux.conf and put this at the bottom.

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'git@github.com:user/plugin'
# set -g @plugin 'git@bitbucket.com:user/plugin'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
Enter fullscreen mode Exit fullscreen mode

Reload tmux environment

# type this in terminal if tmux is already running
tmux source ~/.tmux.conf
Enter fullscreen mode Exit fullscreen mode

Now, let's install Dracula Theme as a tpm plugin. Add the following to your ~/.tmux.conf file.

set -g @plugin 'dracula/tmux'

# Set 256 colors
set -s default-terminal 'tmux-256color'
Enter fullscreen mode Exit fullscreen mode

Press <prefix> + I (capital i) to install it. The default prefix is ctrl + b.

Screenshot 10

You can now quit tmux by typing exit and then create a new session with tmux new. You should now have Powerlevel10k running with Tmux and Dracula Theme.

As an extra, install the following plugins to save and restore your tmux sessions any time.

set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
Enter fullscreen mode Exit fullscreen mode

And now you should be ready to go!

Terminal Result

Quick commands:

  • Split panes by pressing prefix + % and prefix + ".
  • Kill panes by pressing prefix + x.
  • Switch panes with prefix + arrow.
  • Create new windows by pressing prefix + c.
  • Switch windows by pressing prefix + number.
  • Rename windows with prefix + ,
  • Zoom in and out a pane with prefix + z
  • Detach with prefix + d and reattach with tmux.

You can check out my configurations at:

Please, leave a comment telling me what you think about this setup and if you know other ways I can improve it. :)

Resources

Discussion (7)

Collapse
waylonwalker profile image
Waylon Walker

Sweet looking setup! I practically live in zsh, nvim, tmux, mine is not nearly as riced out as yours.

This year I moved my tmux workflow to heavily leverage sessions over windows, just released this article on my current workflow.

Collapse
andrenbrandao profile image
André Brandão Author

Thanks! Do you also have the plugins to save your sessions between shutdowns?

I actually ended up with this setup after I had to temporarily work with a machine with just 4GB of RAM and couldn't use VSCode, Chrome, Docker, Node.js and React at the same time.

During this time I had to use Vim, but didn't fully migrate. I still want to try Neovim sometime.

Collapse
waylonwalker profile image
Waylon Walker

I don't have any plugins for tmux, just custom keybindings to make it easier for my muscle memory. I've been experimenting with :mksession in vim to restore my editor layout from where I last was.

nvim nightly is solid. There's a ton of new goodies in it. I've moved from coc to the built in lsp and it seems much easier to setup.

Collapse
waylonwalker profile image
Waylon Walker

This has been one of my favorite parts of my new setup, being able to open any project on my machine within a few keystrokes, and toggling back with alt+b.

Collapse
phantomcoder profile image
abraaoCrvlho.js

Apesar de não usar o tema dracula ou powerlevel10k, vou comentar aqui pra dar engajamento e compartilhar.
Brasil <3

Collapse
andrenbrandao profile image
André Brandão Author

Boa! Mas o importante mesmo é se o artigo realmente foi útil. 😁👍 Pra mim hoje o Tmux é essencial.

Collapse
fq211776 profile image
FQ211776

cool!