Fedora cures my distro-hopping itch (for now)

A bit of history

I bet every software developer at some stage of their career has noticed there is this fantastic open source world called Linux. At some point, they may think that what is it like to use Linux as their daily driver. I am no exception. I had been trying Linux from time to time since days way back to my university years. I had tried Ubuntu, Fedora, Arch, and OpenSUSE, just to name a few.

Back in the old days when things were not as polished as today, Linux was a bit of a pain to use, a lot of fiddling with the terminal, and a lot guess-work of what could be going wrong. Only until recent years, when Ubuntu introduced a lot of user-friendly features such as third party driver installers, and a lot of GUI tools to manage the system, Linux became more accessible to the general public. And this trend continues. I do get that a lot of die-hard Linux fans would argue that Linux should always stay open source and be skeptical about the use of proprietary software, but I think otherwise. This trend shows that Linux is becoming more mainstream and more people are using it. As more people are using it, more software vendors are willing to develop software for Linux. This is a win-win situation for everyone. So a bit of proprietary software is not a bad thing, and you can always choose not to use it.

I have been on and off Linux as my daily driver for a while mainly because some software that I use for work is not available or not as well-supported in Linux, which causes frustration. Having said that, even on Windows, I use WSL (Windows Subsystem for Linux) a lot, which is a well integrated Linux VM running on Windows. I really need to give kudos to Microsoft for this feature, and it does show that the company is embracing open source. On macOS, I use docker and basically all the unix/linux tools that I need for work. So, for Windows and macOS, if I need to use one sentence to describe my experience, it would be “it just works”. I can easily recommend to anyone who wants to develop software to use either Windows or macOS.

However, Windows updating strategy is too invasive and microsoft is constantly pushing ads to me, and all the privacy issues just concern me as an end user. If you follow the news, you probably find that Microsoft is working on something fancy called “Copilot + PC”. I love technology, and I am forward-thinking in terms of the use of AI. But I am skeptical about having a feature in my personal machine to have the ability of “seeing” and “remembering” every action I take with my computer. Even though this is, for now, an opt-in feature for capable PCs, I still rather to have an option to opt-out completely —- not to have any code of that feature exist in my machine. Microsoft calling this feature “recall” is simply the worst naming choice ever in my opinion. It is set for failure from the beginning. I am sorry, Microsoft, face the reality.

On the other hand, Apple is introducing some AI features in macOS and it at least, on the surface, seems less invasive. But, I will remain skeptical until I see how it actually works. So, it would be nice to have a backup plan, an alternative, if both Windows and macOS are not working for me. And that is why I explored Linux again.

2024 Linux Desktop experience

If you follow Linux Desktop news, you probably know that a few DEs (Desktop Environment) are available. The famous ones are KDE, GNOME, Cinnamon, and XFCE. I have tried all of them from the past, and I have to say, XFCE had been my favourite for so many years. It is lightweight, fast, and it worked smoothly on old hardware, but it is not as visually appealing as other options.

2024 is the year of Wayland. Wayland is a new display server protocol that aims to replace X11. It is more secure, more efficient, and more modern. My previous experience with Wayland was not great. It was buggy, and it broke a lot of things. You can find a lot of complaints about Wayland on the internet. And part of the reason I quit Linux as my daily driver was because Xorg does not support fractional scaling and multi-monitor setup well and Wayland was not stable enough for me to use. But, in 2024, Wayland has matured by a long way and I see a lot of support for it in the Linux community. So, I decided to give it a try and I had made up a list of requirements for my daily driver:

  • Fractional scaling support
  • Multi-monitor setup support
  • HiDPI support
    • Chromium/Chrome
    • VSCode
    • Pycharm
  • Sleep/suspend works
  • Bluetooth/Wifi works
  • Mouse with extra buttons works
  • Nvidia GPU works

Some nice to have features:

  • A smooth and visually appealing DE
  • Fewer random crashes
  • A good dictionary
  • A good PDF reader

I did some research and found that Fedora is a good distro to try as it seems to have obtained the balance between stability and new features. I had tried Fedora before and quite liked its package manager, dnf, although previously I was not able to fully resolve some suspend issues. So I downloaded Fedora 40 KDE Spin and installed it on my desktop and dual-booted it with Windows 11. It was a smooth installation process and I was able to boot into Fedora without any issues. Then I started to install Nvidia drivers, although a bit of a pain, I was able to get it working. Then, I needed to resolve some suspend issues I previously and anticipated that it would come again. To my surprise, suspend issue can be avoided by setting an option for the Nvidia kernel module (to preserve memory). So far, the experience had been great.

Next is app support. What I found is that any Chromium-based browser now supports wayland well and that extends to most of electron-based applications like VSCode and VSCode is the only electron app I would install on any system. If I can avoid electron apps and use their web version, I would. But, VSCode is an exception. It is fast and lightweight and works flawlessly on any platform. However, recently I started using Pycharm as my main IDE and I had to say that Pycharm has progressed a lot over the years. It is packed with features and I can do almost everything in Pycharm. Jetbrains just nails the development experience from bottom up. There is one caveat though, Pycharm does not support Wayland well. The UI does not work with fractional scaling, and it is blurry by default. I had gone through a lot of forums and tried out many things. Luckily, there are TWO ways to make Pycharm UI works with fractional scaling:

  1. Use KDE and XWayland. KDE has the top-notch fractional scaling support in Linux. Pycharm works out of box with KDE. However, there are some glitches with XWayland, and sometimes the UI might just break. But, it is still usable.
  2. Use Gnome and set the boot time Java Runtime to use the latest version (21.0.3). You got to download it from Jetbrains JBR GitHub page. The ones from Pycharm might not work. And then add -Dawt.toolkit.name=WLToolkit to your vmoptions.

I chose the second option as I like Gnome’s simplicity and Gnome is rocked solid with its built-in apps. In my experience, KDE plasma is a bit buggy and I ran into issues here and there. That said, KDE is more feature-rich and has more customisation options. One of the things I do not like about KDE is its overview effect. It is just so sluggish/low frame rate for such a simple animation. I have a RTX3080 GPU, and it should not be a problem. I can literally hear the fans spinning up when I enter the overview mode and can tell from nvidia-smi that at that moment, it is drawing 100W. On the other hand, Gnome is smooth and fast and I can just press Super and search whatever I want. For comparison, the overview effect in Gnome is just drawing around 23w and note that my RTX3080 has a base power draw of 20w. Apart from being slightly buggy, KDE is a great DE and I would recommend it to anyone who wants to try Linux. It is just a personal preference – no means to offend KDE fans.

One thing I really like about macOS and iOS is the dictionary. It is just so convenient to look up a word anywhere in the system. The selection of dictionaries is great and as a language learner, I find it very useful. It is such a pity that in Linux or Windows, I do not see such a good alternative, and thus I started researching ways to convert the Apple dictionaries into the format that can be used in Linux. I am so delighted that I found a solution and managed to load all my favourite dictionaries into GoldenDict-ng. Although, the app has yet to support fractional scaling, it is still usable and serves its purpose well.

For PDF reader, I have tried a few and I have to say that Okular is the best one. I still remember in the old days, Okular could not save annotations with the PDF file, and instead it saved a separate file. But now, it finally works like other PDF readers on other platforms. This is amazing to see but I no longer need to annotate a lot of PDFs on Linux anymore.

Final thoughts

I have been using Fedora 40 for a while now and feel like home. I have not booted into Windows for a while and I do not miss it. I have all the software I need for work and I can do everything I need to do on Fedora. Occasionally, I only play some emulator games which work well on Linux as we know. One complaint I have is that Fedora does push kernel updates quite often and every time I install a kernel update, I have to reinstall the Nvidia kernel modules. This is a bit of a pain, but I also found that I can use rmpfusion to install akmod-nvidia which automatically rebuilds the kernel modules for me. Also, the latest development from Nvidia is also quite encouraging. They finally, finally, open sourced the kernel space driver for their GPUs and had improved Wayland support by adding the so-called explicit-sync support, which is said to have resolved so many issues with Wayland. Well, hopefully one day, Mr Linus Torvalds would give Nvidia a thumbs up instead of a middle finger.

fedora-desktop