Setting Up a Dev Environment on Fedora: From Zero to Pro with Zsh and Tmux

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

Why I Chose Fedora Over Ubuntu or macOS

Typing commands in a “naked” terminal is like coding in Notepad. After two years of comparing Fedora vs Ubuntu and using Fedora as my primary OS, I’ve realized this distro offers a fantastic “bleeding edge” experience. Packages are always up-to-date but aren’t as prone to breaking as they are on Arch. While some developers prefer the immutability of Fedora Silverblue, the default Fedora Workstation (GNOME) installation is a bit too clean. It lacks the specialized tools a developer needs to “power through” an 8-hour workday.

A proper dev environment isn’t just for aesthetics. It helps minimize redundant tasks and prevents typos, especially when managing Flatpak applications or core system tools. Most importantly, it keeps your focus sharp when you’re jumping between code, logs, and databases. Here is how I restructured my entire workflow on Fedora.

Step 1: System Update and Preparing the Essentials

The first thing to do after installing Fedora isn’t opening a browser. Open the Terminal and update everything. Fedora updates its kernel very frequently; the update list can sometimes reach several gigabytes. To save time, you can speed up DNF on Fedora by installing plugins for faster package downloads.

sudo dnf update -y
sudo dnf groupinstall "Development Tools" "C Development Tools and Libraries" -y
sudo dnf install dnf-plugins-core curl wget git util-linux-user -y

The Development Tools group will install gcc, make, flex, and more. These are vital. You’ll need them when building tools from source or installing NodeJS libraries with native extensions.

Step 2: Upgrading the Shell with Zsh and Oh My Zsh

Default Bash is fine, but Zsh is the real deal thanks to its heavy customization. It helps me reduce typing time by about 30% with its smart suggestion features.

# Install Zsh
sudo dnf install zsh -y

# Change default shell (requires root password)
chsh -s $(which zsh)

After logging out and back in, install Oh My Zsh to manage your plugins. Next, I install two indispensable plugins: zsh-autosuggestions (remembers past commands) and zsh-syntax-highlighting (colors your commands).

git clone https://github.com/zsh-users/zsh-autosuggestions ${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

Don’t forget to activate them in your ~/.zshrc file by editing the plugins line:

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

Step 3: Master Multitasking with Tmux

If you aren’t using Tmux, you’re wasting screen real estate. Tmux allows you to split your terminal into multiple panes. You can run your server on the left, monitor logs on the right, and commit via git at the bottom—all within a single window.

sudo dnf install tmux -y

The default Ctrl-b shortcut is a bit awkward. I usually change it to Ctrl-a and enable mouse support to make resizing panes easier. Create a ~/.tmux.conf file with the following content:

# Change prefix to Ctrl-a for better ergonomics
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# Enable mouse support for selecting panes
set -g mouse on

# More intuitive window splitting
bind | split-window -h
bind - split-window -v

Step 4: Install Nerd Fonts to Avoid Rendering Issues

A beautiful terminal makes reading code less straining on the eyes. Modern themes often use special icons. Without Nerd Fonts, your terminal will be full of annoying broken font squares.

My top choice is JetBrainsMono Nerd Font. Simply download it, extract it to ~/.local/share/fonts, and then run fc-cache -fv so the system recognizes the new font.

Step 5: Modern System Monitoring

Instead of using the cluttered classic top, I prefer btop. It’s a resource monitoring tool with a very intuitive dashboard interface.

sudo dnf install btop -y

When you run btop, you’ll see CPU, RAM, and Network graphs moving in real-time. If your machine suddenly lags while compiling code, opening btop will immediately reveal the resource-hogging culprit.

Stable Vietnamese Input with IBus-Bamboo

Writing documentation or chatting with the team without proper Vietnamese input is frustrating. On Fedora, ibus-bamboo is currently the most stable input method.

sudo dnf config-manager --add-repo https://download.opensuse.org/repositories/home:/lam_v/Fedora_40/home:lam_v.repo
sudo dnf install ibus-bamboo -y

Once installed, go to Settings -> Keyboard and add “Vietnamese (Bamboo)” to your Input Sources list.

Conclusion

Spending about 30 minutes on this initial setup, alongside configuring SELinux on Fedora to secure your environment, will save you dozens of hours of fiddling later. The combination of Fedora and the trio of Zsh, Tmux, and Nerd Fonts creates an incredibly smooth workflow. Don’t be afraid to customize your .zshrc file further to suit your personal habits. If you accidentally break your shell configuration, just type /bin/bash to return to the default shell and fix the error. Happy coding on Fedora!

Share: