I have been using Fedora for a few years now and installed it countless times because it bothers me to have a messy system. I stay on Fedora because it has one of the best out of the box experience, at least for me. But still, there are some things that I need to tweak on every new installation so I have a script to do most of those things and after over four years it got pretty good in doing it. So here are the tweaks that are relevant to Fedora (some configurations like Vim and Tmux deserve a separate post).
Enabling additional repositories
Fedora is a great free distribution that is almost completely free (except for some firmware) but sometimes that freedom is too limiting in software selection. To fix this, what I do (and I think most Fedora users do) is enable one or more general third party repositories to expand the software selection.
The ones I enable are RPMFusion (both the free and non-free version) and Flathub. You might ask why RPMFusion have a free version instead of contributing to Fedora, it’s because Fedora can’t add certain free software to their repository because of software patents.
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo > /dev/null sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm > /dev/null
Installing additional codecs
Now that we have RPMFusion installed, we can use it to get more (and
sometimes better) codecs that Fedora didn’t packaged because of patents.
I have found two packages that I need to not have any problems with
codecs, one is the group package
multimedia and the other is
pulseaudio-module-bluetooth-freeworld if you use Bluetooth.
sudo dnf groupinstall -y multimedia > /dev/null sudo dnf install pulseaudio-module-bluetooth-freeworld --allowerasing pulseaudio -k # restarting pulseaudio
Changing the default shell
After more than a year with Zsh, I decided to go with something simpler and found Fish that is almost identical in terms of functionality but required less configuration. The default prompt was good enough and plugins like auto suggestion and syntax highlighting were built-in in Fish. The only thing that I didn’t get out of the box was my git aliases from oh-my-zsh that I got used to, so I had to copy a modified version that worked in Fish.
Fish is not compatible with POSIX Shell or Bash but I have yet to have a problem with it. I switched to Fish only a couple of months ago so it might bite me later so be warned.
ln -s $(pwd)/Fish ~/.config/fish > /dev/null sudo dnf install -y fish util-linux-user > /dev/null chsh -s $(which fish) > /dev/null
If you want to see how I configured Fish itself, you can browse Fish configuration directory in my dotfiles repository.
Speeding up the package manager
DNF is slow, whenever I used a package manager on another distro I was reminded how slow DNF is. The problem is that almost always, DNF will reload the cache which can take a while. I can live with a packages list from yesterday so I made a job to update the cache once a day and told DNF to use the cache for a day. I also increased the parallel downloads count which gave it another boost.
sudo bash -c 'echo "max_parallel_downloads=10" >> /etc/dnf/dnf.conf' sudo bash -c 'echo "metadata_expire=86400" >> /etc/dnf/dnf.conf' sudo ln -s $(pwd)/DNF/dnf-check-update.service /etc/systemd/system/dnf-check-update.service > /dev/null sudo ln -s $(pwd)/DNF/dnf-check-update.timer /etc/systemd/system/dnf-check-update.timer > /dev/null sudo systemctl enable dnf-check-update.timer sudo systemctl start dnf-check-update.timer
You can see the unit files in my repository.
Styling the terminal
The default style of the terminal is okay but I wanted the terminal to
have a bit more space to breath and a colorscheme that match my Vim
colorscheme so. I added a padding to the terminal by adding a custom css
file to GTK+, the element is called
vte-terminal. The colorscheme
setting is sadly not automated yet and I still copy the colors by hand
but it should be doable to create a new profile and set the colors in
ln -s $(pwd)/GTK3/gtk.css ~/.config/gtk-3.0/gtk.css > /dev/null
Integration with my phone
I try to go all wireless, I’m not there yet but another software that helps me a lot with that is KDE Connect, or more correctly GSConnect which is a GNOME extension that reimplement the KDE Connect protocol. It let me pass files between my devices without a cable and a do a lot of other cool stuff.
sudo dnf install gnome-shell-extensions-gsconnect nautilus-gsconnect
Installing and removing additional programs
I won’t explain every program that I use because it would be to long, maybe for another post. But in general I have a few programs that I remove (GNOME Photos, Rhythmbox, GNOME Clocks and LibreOffice) and a lot more that I install (Neovim, Git, Tmux, Fzf, The Silver Searcher, jq, youtube-dl, FFmpeg, Lollypop, Fragments/Transmission, GNOME Tweaks, Password Safe, Polari and Celluloid).
You might notice that I have a lot of desktop applications, I personally try to use a graphical application unless there is a reason to use a textual interface like when editing text files.