I like Fedora Linux.

It’s the Linux distro that stopped my habit of distro-hopping. Big deal? Ooh, big deal!

It’s stable in day-to-day use, ships with up-to-date software, and the software selection is adequate out of the box.

It also ships with a fresh Linux kernel version1, resulting in a good experience even on modern hardware.

I’ve been happily using it for about 4 years at this point, both on personal and work computers.

However, every time I recommend it to my friends, family and colleagues, I have to mention a few things that a new Fedora Linux user might want to do first so that the experience is as smooth as possible.

If it weren’t for those aspects, Fedora would be pretty much perfect.

Set up RPM Fusion

There are some packages that are not available on Fedora by default, likely as a result of copyright laws, lawyers and Red Hat (IBM) not having the appetite to fight it out in the courts.

This is why RPM Fusion exists:

RPM Fusion provides software that the Fedora Project or Red Hat doesn’t want to ship.

The installation instructions are here, and I personally prefer this one-liner setup:

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

This step is a prerequisite to the next one.

Enable hardware accelerated video playback

This is the part where I blame lawyers.

To have a good chance at smoothly playing back videos in a browser or using VLC, you have to do a few extra steps, because someone fucked up.

Check this guide for up-to-date information.

Switch to the full version of ffmpeg:

  • sudo dnf swap ffmpeg-free ffmpeg --allowerasing

AMD GPU users:

  • sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld
  • sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld

Intel GPU users (Broadwell and newer, 2014+):

  • sudo dnf install intel-media-driver

Old Intel GPU users (Ivy Bridge and older, <=2013):

  • sudo dnf install libva-intel-driver

NVIDIA GPU users: good luck.2

You can verify the enabled profiles using vainfo.

Here’s the output on my machine before completing the steps (AMD GPU).

Note the lack of H.264 and HEVC profiles.

me@mymachine:~$ vainfo
Trying display: wayland
libva info: VA-API version 1.21.0
libva info: Trying to open /usr/lib64/dri-nonfree/radeonsi_drv_video.so
libva info: Trying to open /usr/lib64/dri-freeworld/radeonsi_drv_video.so
libva info: Trying to open /usr/lib64/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_21
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.21 (libva 2.21.0)
vainfo: Driver version: Mesa Gallium driver 24.1.7 for AMD Radeon 780M (radeonsi, gfx1103_r1, LLVM 18.1.6, DRM 3.57, 6.10.8-200.fc40.x86_64)
vainfo: Supported profile and entrypoints
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileAV1Profile0            :	VAEntrypointEncSlice
      VAProfileNone                   :	VAEntrypointVideoProc

Here’s what it looks like after the tweaks are applied.

me@mymachine:~$ vainfo
Trying display: wayland
libva info: VA-API version 1.21.0
libva info: Trying to open /usr/lib64/dri-nonfree/radeonsi_drv_video.so
libva info: Trying to open /usr/lib64/dri-freeworld/radeonsi_drv_video.so
libva info: Trying to open /usr/lib64/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_21
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.21 (libva 2.21.0)
vainfo: Driver version: Mesa Gallium driver 24.1.7 for AMD Radeon 780M (radeonsi, gfx1103_r1, LLVM 18.1.6, DRM 3.57, 6.10.8-200.fc40.x86_64)
vainfo: Supported profile and entrypoints
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointEncSlice
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileAV1Profile0            :	VAEntrypointEncSlice
      VAProfileNone                   :	VAEntrypointVideoProc

Enable Flathub

This step is only necessary if you did not enable third-party repositories during the inital setup of your Fedora Linux installation.

Setting up Flathub is just one command:

flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

Check the Flathub setup instructions for Fedora for up-to-date info.

🇪🇪 Specific to Estonia: ID card support

Estonia has an ID Card system (Eesti ID kaart), and the desktop application is also officially supported on Linux. Ubuntu Linux.

To use the ID card in Fedora, you’ll need to install the necessary packages:

sudo dnf install -y open-eid

Firefox users will need to make sure that the Web eID extension is installed. If it wasn’t installed with the above command, you can also get it here.

The desktop application used for opening and digitally signing documents, DigiDoc4, has a bad habit of breaking sometimes due to changes. Luckily there exists an unofficial version of DigiDoc4 as a Flatpak and it’s available on Flathub.

It’s mentioned in the official open-eid/linux-installer repo as well, which lends some credibility (plus I know the person that built it).

As of 2024-10-14, ID card works on Firefox and the DigiDoc4 client from the Fedora official repository does not crash and burn.

GNOME: fix the “Alt+Tab” behaviour

GNOME is a great desktop environment, but it, too, has its quirks.3

If you’re used to “Alt+Tab” keyboard shortcut simply switching windows, then you’ll have to tweak it in settings.

  • Open “Settings”
  • Navigate to “Keyboard”
  • Click on “View and Customize shortcuts”
  • Use the search bar to:
    • disable “Switch applications” shortcut
    • set the “Switch windows” shortcut to “Alt+Tab”

Here’s what it looks like on GNOME 46.

Navigate to 'Keyboard' and click on 'View and Customize shortcuts'
Navigate to 'Keyboard' and click on 'View and Customize shortcuts'
Select 'Navigation'
Select 'Navigation'
Disable "Switch applications" shortcut.
Disable "Switch applications" shortcut.
Set the "Switch windows" shortcut to "Alt+Tab".
Set the "Switch windows" shortcut to "Alt+Tab".

GNOME: minimize, maximize buttons on windows

By default, you’ll only see the “Close” button on windows, but it is possible to also show minimize and maximize buttons.

Install GNOME tweaks with sudo dnf install -y gnome-tweaks.

Open it, navigate to Windows, and toggle Maximize and Minimize settings.

GNOME tweaks settings as of GNOME 40.
GNOME tweaks settings as of GNOME 40.

GNOME: app status indicators

Some apps, such as Solaar, like to run in the background and show you a status indicator on your taskbar. This functionality is not present on GNOME by default, but you can easily fix it with the AppIndicator and KStatusNotifierItem Support extension.

I used to install a handful of extensions in the past to "fix" GNOME, but in 2024 this is the only one I actually need.
I used to install a handful of extensions in the past to "fix" GNOME, but in 2024 this is the only one I actually need.

GNOME: corner tiling

As of GNOME 46, you cannot do corner tiling out of the box. The best you can do is split windows horizontally, which is fine for single ultra-wide monitor setups. There are situations where corner tiling comes in really handy.

The best solution I have found so far seems to be the Tiling Assistant extension. It’s configurable and will probably suit your workflow well.

At the time of writing, it does have a few small but annoying enough bugs that are a show-stopper for me, but compared to other solutions this one at least works.

Optional: disable SELinux

There are two types of people: those that swear by SELinux, and those that swear due to SELinux.

If you’re running into weird issues and you don’t know why, then see if SELinux is to blame.

I run into issues with SELinux every time I try to move files around with rsync, resulting in a simple rsync -aAXv source/ destination/ command becoming rsync -aAXv --filter='-x security.selinux' source/ destination/. It’s frustrating.

To fix this, I simply disable SELinux. Open up /etc/selinux/config, find the line SELINUX=enforcing and change it to SELINUX=disabled.

You’ll need to restart your machine for it to take effect.

Don’t use ZFS

ZFS is a great filesystem, but not on distros that ship new kernel versions.

This is due to OpenZFS needing to be built against the Linux kernel, and new kernel releases often break compatibility. Those breakages may lead to your ZFS pools not being imported at boot as a result.

You can use ZFS if you use LTS kernels built by someone else, or if you simply don’t update your system, but I don’t recommend either approach.

Use a different distribution, such as Debian, if you really need to use ZFS daily.

If you don’t care for ZFS but like data integrity checks, snapshots and don’t use a lot of disks in an array, then btrfs is totally fine.

Don’t use NVIDIA GPU-s

I’ve never had a good experience with the open source driver nouveau, and the proprietary drivers are a headache and break things.

This might be about to change, but I’ll believe it when I see it.

Conclusion

I hope that this has made your Fedora Linux experience just a little bit better.

Here’s to hoping that IBM does not fuck up Fedora Linux. My expectations are low.

If you have any other tips to share then please contact me! You can find the contact details below.


  1. one thing that I appreciate with Fedora is that the kernel versions are ever-so-slightly lagging behind the likes of Arch Linux, meaning that you’ll be less likely to hit any kernel bugs, and yet you don’t have to worry about being too far behind (like on Ubuntu or Debian). ↩︎

  2. no, seriously, I wish you all the luck in the world. I have never managed to have a good experience with NVIDIA on Linux. I’ve completely given up. ↩︎

  3. use whatever desktop environment floats your boat, I don’t judge! ↩︎