DEV Community

Eduardo Garcia
Eduardo Garcia

Posted on

After installing Fedora 41: A Glorious Adventure Awaits!

Welcome, brave linux enthusiasts, to the land of Fedora 41! You've just embarked on a journey where your terminal is your sword, and your bash commands are your spellbook. Here's how to make your new digital home not just functional but confortable as well.

Update system

First things first, let's ensure your Fedora fortress is up to date. Run these commands to banish the outdated demons:

sudo dnf upgrade -y
# sudo dnf update -y
# upgrade is now the preffered command, it has backwards compatibility
Enter fullscreen mode Exit fullscreen mode

Because nothing says "I installed a new Linux" like a good old system update.

Configure DNF simultaneous mirrors

Cast a speed spell to your dnf sources by enabling max downlows parameter.

sudo vi /etc/dnf/dnf.conf

# then add and wq
add max_parallel_downloads=10
Enter fullscreen mode Exit fullscreen mode

Now, your downloads will race through the internet like Usain Bolt on a caffeine rush... or me when someone mentions 'production outage'.

dnf Plugins

DNF plugins are like magical accessories for your package manager. They add extra features to the dnf package manager and provide some essential plugins. Here is how to arm yourself with them:

sudo dnf install dnf-plugins-core -y
Enter fullscreen mode Exit fullscreen mode
  • builddep: This plugin allows you to automatically install the build dependencies for a package. This is useful if you want to compile software from source code.

  • changelog: This plugin lets you view the changelog for a package, showing the changes made in each version. Who doesn't love a transaction log?

  • config-manager: This plugin helps you manage DNF configuration options and repositories.

  • copr: This plugin enables you to install packages from COPR, a community-driven repository for Fedora packages.

  • debug: This plugin installs debugging information for packages, which can be useful for developers.

  • debuginfo-install: This plugin installs debuginfo packages, which contain debugging symbols for programs.

  • download: This plugin allows you to download RPM packages without installing them.

  • needs-restarting: This plugin checks for and reports on processes that need to be restarted after package updates.

  • versionlock: This plugin allows you to lock specific packages to a particular version, preventing them from being updated.

Install SW

Proton Fedora VPN

Feeling the need for privacy? Here’s how to cloak yourself with ProtonVPN or follow the guide: https://protonvpn.com/support/official-linux-vpn-fedora/


wget "https://repo.protonvpn.com/fedora-$(cat /etc/fedora-release | cut -d' ' -f 3)-stable/protonvpn-stable-release/protonvpn-stable-release-1.0.2-1.noarch.rpm"

sudo dnf install ./protonvpn-stable-release-1.0.2-1.noarch.rpm

sudo dnf check-update && sudo dnf upgrade

sudo dnf install --refresh proton-vpn-gnome-desktop 

sudo dnf check-update && sudo dnf upgrade

sudo dnf install libappindicator-gtk3 gnome-shell-extension-appindicator gnome-extensions-app
Enter fullscreen mode Exit fullscreen mode

Don't forgent to restart and enable AppIndicator and KStatusNotifierItem Support extension for that sweet, sweet VPN icon.

Install IVPN

If ProtonVPN feels too mainstream, or you're just looking for a faster alternative, IVPN might be your speed demon.

Its pretty much anonymous, pay with crypto if you're feeling cyberpunk.

# [Fedora 41+] Add the IVPN repository
sudo dnf config-manager addrepo --from-repofile=https://repo.ivpn.net/stable/fedora/generic/ivpn.repo

# To install IVPN software (CLI and UI)
sudo dnf install ivpn-ui

# To install only IVPN CLI
sudo dnf install ivpn
Enter fullscreen mode Exit fullscreen mode

This is for Fedora 41, for below versions go here: https://www.ivpn.net/en/apps-linux/#fedora

Install all of this cool stuff

Recommended by me (づ ◕‿◕ )づ, assuming you have embraced rpmfusion-nonfree.

sudo dnf5 install fastfetch mpv gcc make python3-pip unrar cargo p7zip p7zip-plugins htop java-17-openjdk android-tools vlc discord dejavu-sans-mono-fonts fira-code-fonts kdenlive vim nodejs
Enter fullscreen mode Exit fullscreen mode

VSCode

Because who doesn't love an editor that thinks it's an IDE? Add repo from here: https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions

then:

dnf check-update
sudo dnf install code
Enter fullscreen mode Exit fullscreen mode

Vim plugins

Make Vim as fancy as your socks. Ensure you always have the latest repo:

curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Enter fullscreen mode Exit fullscreen mode

This command downloads the plug.vim file and installs it in ~/.vim/autoload. If the directory doesn’t exist, it will be created. To verify installation, open a new Vim session and type :PlugVersion to verify that Vim-Plug is installed correctly.

Here’s a list of plugins that will make you feel like a coding wizard:

" Plugins
call plug#begin('~/.vim/plugged')
Plug 'junegunn/vim-plug'
" Python
Plug 'davidhalter/jedi-vim'
Plug 'preservim/nerdtree'
" GH Copilot
Plug 'github/copilot.vim'
" markdown
Plug 'plasticboy/vim-markdown'
Plug 'shime/vim-livedown'
" Fuzzy finder
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
call plug#end()
Enter fullscreen mode Exit fullscreen mode

Vim GitHub copilot setup:

Your perfect AI buddy

  • :Copilot setup This command will prompt you to authenticate with GitHub. You'll get a code to enter on a GitHub login page that opens in your browser. Follow the instructions to authorize Copilot.
  • To accept a suggestion, press Tab.
  • For more information on usage, you can check the plugin's documentation with :help copilot.
  • If you encounter issues, check the status with :Copilot status
" Toggle GitHub Copilot on and off
nnoremap <leader>cc :Copilot disable<CR>
nnoremap <leader>ce :Copilot enable<CR>

function! CopilotStatus()abort
    return exists('*copilot#Enabled') && copilot#Enabled() ? 'enabled' : 'disabled'
endfunction
Enter fullscreen mode Exit fullscreen mode
  • nnoremap: Non-recursive mapping in normal mode.
  • <leader>cp: This is the shortcut; is typically , by default, but you can change it in your config. So, this would be ,cc if you haven't changed your leader key.
  • :Copilot diable/enable: This is the command to enable/disable Copilot.
  • <CR>: Simulates pressing Enter to execute the command.

Timeshift

Similar to system restore in Windows. Consider it your Fedora's time machine.

sudo dnf install timeshift

sudo timeshift --create

sudo timeshift --restore

timeshift --list
Enter fullscreen mode Exit fullscreen mode

YTMusic player (⌐■_■)

For those who like their music with a side of Linux. Go to https://ytmdesktop.app/#download and download your rpm.

# go to Downloads and rpm, substitute with your own version
sudo rpm -ivh youtube-music-desktop-app-2.0.6-1.x86_64.rpm
Enter fullscreen mode Exit fullscreen mode

to update:

sudo dnf5 update <package_name>
# rmp may not solve al dependencies while dnf does
Enter fullscreen mode Exit fullscreen mode

Docker

First update system, we will be installing community edition.

# sys update
sudo dnf update -y
# add repo from docker address, check this, dont blindly copy pls
sudo dnf config-manager --add-repo=https://download.docker.com/linux/fedora/docker-ce.repo
#install
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
Enter fullscreen mode Exit fullscreen mode

You will be asked if you wanto enable docker since boot which I don't want as this is for personal and not a corporate environment where you probably want it that way.

# this will start docker
sudo systemctl start docker
# thiw will enable boot run
sudo systemctl enable docker
Enter fullscreen mode Exit fullscreen mode

Terminal Transparency

Credits to this Reddit post.

Ptyxis is the default terminal for Gnome, it was previously known as Prompt. To change transparency just run the below:

gsettings set 'org.gnome.Ptyxis.Profile:/org/gnome/Ptyxis/Profiles/'$PTYXIS_PROFILE'/' 'opacity' '0.8'
Enter fullscreen mode Exit fullscreen mode

.8 is currently working fine for me, just try and adjust to your taste.

Aliases

Fedora points your bashrc file to /etc/bashrc to have a cleaner config. To have your own, create a bashrc.d directory and then put whatever you want. It would be more useful that you know these before aliasing

These are some linux aliases I use on my day to day.

fastfetch command at the end is to run fastfetch at terminal startup.

mdkir ~/.bashrc.d
vi ~/.bashrc.d/aliases.sh

# then save and wq the below commands
alias ll='ls -lrth --color=auto'
alias la='ls -lrtha --color=auto'
alias df='df -hT'
alias d1='cd ..'
alias d2='cd ../..'
alias d3='cd ../../..'
alias d4='cd ../../../..'
alias upme='sudo dnf5 upgrade -y'
alias py_gitignore='curl https://raw.githubusercontent.com/github/gitignore/main/Python.gitignore > ./.gitignore'

fastfetch
Enter fullscreen mode Exit fullscreen mode

To not use any alias and run the standard command:

\df

#or

command df
Enter fullscreen mode Exit fullscreen mode
  • upgrade is the preferred term: In DNF5, upgrade is the technically correct and recommended command for updating packages.
  • update is an alias: update still works because it's maintained as an alias for upgrade for backward compatibility and user familiarity

In older dnf and yum versions, there was a distinction between update and upgrade, where upgrade was usually reserved for version upgrades, like from Fedora 36, to 37.

Custom DNS

Feel like you are on a secret scenario quest with this setup.

In terminal, run resolvectl, you will probably be running under your ISP's DNS server and this command will show it. The most common DNS servers are Google and Cloudfare.

  • Cloudflare:
    • Primary DNS: 1.1.1.1
    • Secondary DNS: 1.0.0.1
  • Google Public DNS:
    • Primary DNS: 8.8.8.8
    • Secondary DNS: 8.8.4.4
$ nmcli connection show

NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  f87e2a6c-b089-31d3-ba62-83e08188db2a  ethernet  enp9s0  
virbr0              9ad8ea46-a589-43f7-a904-95098b18404f  bridge    virbr0 

Enter fullscreen mode Exit fullscreen mode

Explanation of the columns:

  • NAME: The name assigned to the network connection. This is usually how you identify the connection in NetworkManager.
  • UUID: A universally unique identifier for the connection.
  • TYPE: The type of network connection (e.g., ethernet, Wi-Fi, bridge, VPN).
  • DEVICE: The network interface associated with the connection (e.g., enp9s0 for a wired connection, wlan0 for Wi-Fi).
# Point DNS and Connection to your preffered service
$ nmcli con mod "Wired connection 1" ipv4.dns "1.1.1.1 1.0.0.1"

# restart network connection to apply changes
$ nmcli con down "Wired connection 1" 
$ nmcli con up "Wired connection 1" 
Enter fullscreen mode Exit fullscreen mode

Wallpapers

Dress up your desktop with some fresh wallpaper from here: https://github.com/ropapermaker/Wallpapers/blob/main/README.md

Because even Linux needs a good aesthetic.

And there you have it! Your Fedora 41 setup should now be more than just functional; this is a statement. Now, go forth and conquer your Linux adventures with style and speed.

Top comments (0)