Things to Do After Installing Fedora 42 GNOME

Welcome, and congratulations on installing Fedora! A fresh OS is a blank slate, and this is your chance to craft it into something perfect for you. This guide is a collection of my personal post-install steps, refined over time, designed to get a system perfectly tuned for development and everyday tasks.

Think of this as your personal checklist to quickly get everything in order—from essentials like NVIDIA drivers and Docker to the finer details like custom fonts, a powerful terminal, and handy GNOME extensions. Don’t treat this as a rigid script. Tailor it to your workflow: skip what you don’t need and add your own favorite tools. Ultimately, the goal is to create a setup that feels like home and makes your daily work a pleasure.

Check and Install Package Updates

Upgrades all installed packages to their latest versions.

  • --refresh: Forces DNF to fetch the latest metadata from repositories before upgrading.
  • sudo dnf autoremove: Removes packages that were installed as dependencies but are no longer required by any installed package.
1
sudo dnf upgrade --refresh && sudo dnf autoremove

Checks the current session type

  • The output will be wayland or x11.
  • This is useful information, especially when dealing with NVIDIA drivers, as Wayland support has improved but can still have issues.
1
echo $XDG_SESSION_TYPE

Enable RPM Fusion Repositories

Installs the RPM Fusion free and nonfree repository configuration packages.

  • This allows you to install software that isn’t included in the official Fedora repositories.
  • $(rpm -E %fedora) is a smart variable that automatically inserts your current Fedora version number (e.g., 40, 42).
1
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

Install Proprietary NVIDIA Drivers

(Note: this should only be done if you have an NVIDIA video card. Be sure to reboot the system after installation).

  • Installs the NVIDIA driver using akmod (Automatic Kernel Module).
  • akmod automatically rebuilds the NVIDIA kernel module for any new kernel updates, which is the recommended method for Fedora.
1
dnf install akmod-nvidia
  • Installs the CUDA toolkit drivers, which are required for GPU-accelerated computing tasks in applications like Blender, machine learning frameworks, etc.
1
dnf install xorg-x11-drv-nvidia-cuda

Install useful utilities

Installs a batch of useful applications and tools.

  • gnome-tweaks: A tool for advanced GNOME desktop customization.
  • gnome-terminal: A popular and powerful terminal emulator.
  • pavucontrol: PulseAudio Volume Control, an advanced mixer for managing audio devices and application volumes.
  • copyq: An advanced clipboard manager with history and search.
  • zsh: The Z Shell, a powerful alternative to the default bash shell.
  • nss-tools: Network Security Services tools, required by ‘mkcert’ later in this guide.
1
2
3
4
5
6
7
sudo dnf install \
  gnome-tweaks \
  gnome-terminal \
  pavucontrol \
  copyq \
  zsh \
  nss-tools

Set GNOME Terminal as Default

Uses the gsettings command-line tool to change a GNOME configuration key.

  • This command sets the default terminal application to gnome-terminal.
1
gsettings set org.gnome.desktop.default-applications.terminal exec 'gnome-terminal'

Terminal (Gogh - Color Schemes)

1
2
bash -c  "$(wget -qO- https://git.io/vQgMr)"
# Azu
1
2
3
Terminal > Preferences > General > Enable the menu acceleration key > OFF
Terminal > Profile + > Azu > Set as default
Terminal > Profile > Initial terminal size > 126 columns > 44 rows

Install Z-shell (Oh My Zsh)

Downloads and runs the official Oh My Zsh installation script.

  • Oh My Zsh is a popular open-source framework for managing your Zsh configuration.
1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Install plugins

Clones the zsh-autosuggestions plugin repository into the Oh My Zsh custom plugins directory.

  • This plugin suggests commands as you type based on your history.
1
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

Clones the zsh-syntax-highlighting plugin repository.

  • This plugin provides real-time syntax highlighting for commands in the terminal.
1
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

Opens the Zsh configuration file in the ’nano’ text editor for editing.

1
nano ~/.zshrc
1
2
3
4
5
6
7
8
9
export PATH=$HOME/bin:/usr/local/bin:$PATH

plugins=(
    git
    kube-ps1
    zsh-autosuggestions
    zsh-syntax-highlighting
    command-not-found
)

Enpass (Password Manager)

  • Adds the official Enpass repository to your system’s software sources using dnf config-manager.
  • Installs the Enpass application from the newly added repository.
1
2
sudo dnf config-manager --add-repo https://yum.enpass.io/enpass-yum.repo
sudo dnf install enpass

Flatpak Apps

  • Warehouse - A tool to manage your Flatpak apps.
  • Flatseal - A graphical utility to review and modify permissions for your Flatpak applications.
  • Gear Lever - A tool for managing AppImages.
  • Haruna Media Player - A media player.
  • Bruno - An API client for testing.

Gnome Extensions

Dash to Panel

Merges the dash and top bar into a single panel. https://extensions.gnome.org/extension/1160/dash-to-panel

Arc Menu

Adds a traditional application menu. https://extensions.gnome.org/extension/3628/arcmenu

Caffeine

Prevents your PC from automatically suspending or showing a screensaver. https://extensions.gnome.org/extension/517/caffeine

Steal my focus window

Prevents windows from stealing focus. https://extensions.gnome.org/extension/6385/steal-my-focus-window

Astra Monitor

Displays system information (CPU, RAM) on the panel. https://extensions.gnome.org/extension/6682/astra-monitor/

AppIndicator and KStatusNotifierItem Support

Adds support for AppIndicator and KStatusNotifierItem icons (legacy tray icons) to the top panel.

mkcert

A simple tool for making locally-trusted development certificates

  • Downloads the latest mkcert binary for linux/amd64.
  • -JLO: -L follows redirects, -O saves to a file, -J uses the server-specified filename.
  • Makes the downloaded binary executable.
  • Moves the executable to /usr/local/bin, making it available system-wide as the mkcert command.
1
2
3
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo mv mkcert-v*-linux-amd64 /usr/local/bin/mkcert

Install Docker

Uninstall old versions

  • Removes any older or conflicting versions of Docker that might be installed on the system.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo dnf remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-selinux \
    docker-engine-selinux \
    docker-engine

Set up the repository

  • Installs the dnf-plugins-core package, which provides the config-manager utility.
  • Adds the official Docker CE (Community Edition) repository to your system.
1
2
sudo dnf -y install dnf-plugins-core
sudo dnf-3 config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo

Install Docker Engine

  • Installs the main Docker components: the engine, CLI, containerd, and plugins for buildx and compose.
1
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Start Docker Engine

  • Enables the Docker service to start automatically on boot and starts it immediately.
1
sudo systemctl enable --now docker

Add host user to the docker group

  • Adds your current user $USER to the docker group.
  • This is a crucial step that allows you to run docker commands without needing sudo every time.
1
sudo usermod -aG docker $USER

Important: Log out and log back in so that your group membership is re-evaluated.

kubectl

  • Downloads the kubectl binary. The inner curl -LS ... command finds the latest stable version number, and the outer curl command uses that to construct the full download URL.
1
curl -LO https://dl.k8s.io/release/`curl -LS https://dl.k8s.io/release/stable.txt`/bin/linux/amd64/kubectl
  • Makes the downloaded kubectl file executable.
1
chmod +x ./kubectl
  • Moves the kubectl executable to a directory in your user’s home (~/bin/).
  • You should ensure ~/bin is in your system’s PATH. (Oh My Zsh usually handles this).
1
sudo mv ./kubectl ~/bin/kubectl

minikube

1
2
3
4
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm

# Note: After downloading, you need to install it.
sudo dnf install ./minikube-latest.x86_64.rpm

Yaru Icons

  • Installs the Yaru icon theme, which is the default theme used by Ubuntu.
1
sudo dnf install yaru-icon-theme

Ubuntu font

  • https://design.ubuntu.com/font

  • Unzips the downloaded font archive into a new directory named ubuntu-font.

  • Navigates into the newly created font directory.

  • Creates a local font directory in your home folder if it doesn’t already exist.

  • -p ensures that parent directories are also created if needed.

  • Copies all TrueType font files *.ttf into your local font directory.

  • Rebuilds the system’s font cache.

  • -f: force, -v: verbose (shows which directories are being scanned). This makes the new fonts available to applications.

1
2
3
4
5
6
7
unzip ubuntu-font-family-*.zip -d ubuntu-font

cd ubuntu-font/ubuntu-font-family-0.83/
mkdir -p ~/.local/share/fonts/

cp *.ttf ~/.local/share/fonts/
fc-cache -f -v

Background color

  • Uses gsettings to configure the desktop background.
  • These commands remove the wallpaper image for both light and dark themes and set a solid primary color instead.
1
2
3
gsettings set org.gnome.desktop.background picture-uri ""
gsettings set org.gnome.desktop.background picture-uri-dark ""
gsettings set org.gnome.desktop.background primary-color '#232f3e'

Tweaks (Settings via GNOME Tweaks)

1
2
3
4
5
Appearance > Styles > Icons = Yaru-prussiangreen
Keyboard > Show Extended Input Sources = ON
Keyboard > Layout > Additional Layout Options > Switch to another layout > Caps Lock = ON
Windows > Titlebar Buttons > Maximize = ON
Windows > Titlebar Buttons > Minimize = ON

Settings (Settings via the standard Settings application)

1
2
3
4
5
Settings > System > Date & Time > Time Format = 24-hour
Settings > System > Date & Time > Week Day = ON
Settings > System > Date & Time > Date = ON
Settings > System > Date & Time > Seconds = ON
Settings > System > Date & Time > Week Numbers = ON

Nautilus extension that adds the Open in Terminal option to the right-click context menu

  • Installs a package that provides a Nautilus (the file manager) extension for GNOME Terminal.
  • Quits the Nautilus process so it can be restarted with the new extension loaded.
1
2
sudo dnf install gnome-terminal-nautilus
nautilus -q

Nautilus Copy Path/Name

1
sudo dnf install nautilus-python python3-gobject
  • Clones the extension’s source code from GitHub.
1
git clone https://github.com/chr314/nautilus-copy-path.git
  • Navigates into the source directory and runs the installation script.
1
cd nautilus-copy-path && make install

Add create New Document option to Nautilus

This is a clever one-liner.

  • XDG_TEMPLATES_DIR=$(xdg-user-dir TEMPLATES): Gets the path to your user’s Templates directory and stores it in a variable.
  • && cd "$XDG_TEMPLATES_DIR": Navigates into that directory.
  • Creates empty files in the Templates directory.
  • Any file in this directory will appear as an option in the New Document right-click context menu in Nautilus.
1
2
XDG_TEMPLATES_DIR=$(xdg-user-dir TEMPLATES) && cd "$XDG_TEMPLATES_DIR"
touch 'Text.txt' && touch 'Markdown.md'

Detach Child Pop-up windows from Parent

  • Changes a setting in Mutter (the GNOME window manager) to make modal dialogs (like “Save As…”) appear as separate, floating windows instead of being attached to their parent window.
1
gsettings set org.gnome.mutter attach-modal-dialogs false

QT Applications Style to GTK

  • Installs platform themes that allow Qt5 and Qt6 applications to use the system’s current GTK theme.
  • Creates a directory for environment variable definitions.
  • Creates a config file that sets an environment variable for your session.
  • This tells Qt applications to use the gnome platform theme, ensuring a consistent look and feel with GTK apps.
1
2
3
sudo dnf install qgnomeplatform-qt5 qgnomeplatform-qt6
mkdir -p ~/.config/environment.d/
echo "QT_QPA_PLATFORMTHEME=gnome" > ~/.config/environment.d/qt-theme.conf

Global Git ignore

  • Creates an empty global gitignore file in your home directory.
1
touch ~/.gitignore
  • Opens the file for editing.
1
nano ~/.gitignore
  • Add there, for example, .idea to ignore JetBrains IDE files in all projects.
1
.idea
  • Configures Git globally to use the file you just created as a global ignore file for all your repositories.
1
git config --global core.excludesFile '~/.gitignore'

Custom Hot Keys

Task Manager Ctrl+Alt+Delete

1
gnome-system-monitor

Terminal Ctrl+Alt+T

1
gnome-terminal

Google Chrome

Cursor

Gemini CLI

Prerequisites: Ensure you have Node.js version 20 or higher installed.

1
2
3
npm install -g @google/gemini-cli

gemini

Visual Studio Code

How to disable Ctrl+Shift+U?

Problem The problem is that with the “Ibus” input method, Ctrl-shift-u is by default configured to the “Unicode Code Point” shortcut. You can try this: Type ctrl-shift-u, then an (underlined) u appears. If you then type a unicode code point number in hex (e.g. 21, the ASCII/unicode CP for !) and press enter, it is replaced with the corresponding character.

Solution This shortcut can be changed or disabled using the ibus-setup utility:

  • Run ibus-setup from the terminal (or open IBus Preferences).
1
2
# Launches the IBus (Intelligent Input Bus) preferences window.
ibus-setup
  • Go to Emoji.
  • Next to Unicode code point:, click on the three dots (i.e. …).
  • In the dialog, click Delete, then OK.
  • Close the IBus Preferences window.

Great job! You’ve made it through all the steps, and now your Fedora setup is fully charged and ready to tackle anything. While each adjustment may seem small, together they add up to a massive improvement in comfort and efficiency, turning the stock OS into your own perfectly tuned toolkit.

With the groundwork laid, the real fun begins—daily use and continuous discovery. Fedora is a powerful and flexible system backed by a vibrant community, so there’s always something new to learn. I hope this guide served as a great launchpad for you. Enjoy your new setup and happy coding

Built with Hugo
Theme Stack designed by Jimmy