The FreeBSD Desktop In 2022

As Microsoft continue to push Windows 11 into being actively hostile to users I decided to review a number of alternative operating systems. My goal was to find a suitable replacement for my now obsolete and unsupported Windows 7.

I've tried out BSD and Linux before throughout the years both for desktop and server roles. My earliest memory of Linux was trying out Mandrake1 sometime in the early 2000s and not finding it at all impressive or useful to my young teenage self. I think I ended up messing up GRUB and hosing both installs at the time but I can't be sure of the outcome now. During university I used some flavour of Linux to run Rhino 3D as part of my thesis but this was barely more than a few hours a week trying to fix up some models and I never even learned what distribution was being used. Around the same time I became interested in more alternative Operating Systems and came across DragonFly BSD. Attempting to install this on a spare laptop was mostly unsuccesful due to the need to compile almost everything from scratch and a budget CPU that lacked decent cooling when fresh. This did provide an intro to the BSD family and lead to my use of NetBSD via virtual machines to run my IRC client and various web server endeavours.

It's now 2022 and with many more years experience using BSDs and the occasional Linux machine I feel a lot more prepared to take one on as a fulltime desktop OS. As I was planning to use this as a bare metal install on a new machine I decided to buy a cheap ex-business workstation to try on without worrying about losing anything and to get the most realistic experience for what will and wont work. The machine was a Fujitsu Primergy TX140 S2 with a Xeon 1320 v3; a LSI raid controller with some SATA drives and 32GB of RAM. Not featured to begin with was any form of graphics adaptor relying only on the built in VGA output nor was any audio card included.

Expectations

I am primarily a dotNet developer and I'm used to working with Visual Studio proper in an all windows environment. This would have been an instant show-stopper five or more years ago but for the development of dot net core; a re-implementation of dot net from scratch with multi-platform support as a core feature. Alongside this was the development of Visual Studio Code a cross-platform editor built by Microsoft to support the development of C# and other dotNet languages and systems outside of Windows. With these new projects it became possible for BSD or Linux to become first class citizens in the dotNet world and allow me to continue to work professional with them.

There has also been a concerted effort from Valve, the developers of Steam, to enable gaming on Linux to be as widespread and easy as it is on Windows. This has culminated in the release of the Steam Deck, a handheld portable gaming console running on Linux. Through these efforts Valve have ported Steam to Linux; forked the WINE project with Proton to improve compatibility with games and catapulted gaming on Linux from almost complete obscurity to pariety and even higher performance than Windows.

The Bad

Despite some murmoring and GitHub issues around FreeBSD support it does not appear to have become a supported target for Microsoft. With Net 6 being the current version the only available version of dotnet in the packages collection is a port of core 2.1 for linux. This does not mean no support for FreeBSD but the lack of pre-built packages does mean it's not as simple as it could be. Searching around finds FreeBSD Build Guides which warns that it's not an easy journey. I have yet to attempt this path as it requires docker or cross-compiling or more but it does provide some hope.

The Probably My Fault

Steam is provided in the packages and is installed in a straightforward manner; once the package is installed they recommend creating a dedicated user and using that to launch steam. This is a sane and simple request which is easily done with a basic understanding of user management. Installing the package worked first time and after switching to the user and mounting the procFS as directed I booted steam and was greeted with an output of:

Assertion Failed: Could not open connection to X
Assertion Failed: failed to initialize update status ui, or create initial window

As mentioned earlier this machine does not have any graphics adaptor and so has no GPU drivers installed. When using the machine directly only 1024*768 is available and no functionality is available through X Windows. Even rotating the display 90 degrees to work on the vertical monitor it was attached to was unsupported! With this in mind I am not comfortable pointing any fingers as to why Steam is unable to launch as GPU drivers are explicitly mentioned in the setup guide.

The Ugly

Despite providing Linux builds there is no support for FreeBSD from Discord and users who have attempted to run the Linux versions have reported errors with audio. This can be worked around by using the browser version of Discord so is not a showstopper but a small letdown considering Discord is built on the cross-platform Electron framework and should be available.

My current choice of browser Vivaldi is not supported on FreeBSD and do not plan on providing a compatible version. Vivaldi is supported on Linux, Windows, MacOS and Android with both AMD64 and ARM builds available for Linux but despite Chromium support on FreeBSD is not a supported platform. The predecessor Opera (12 and below) was supported on BSD and the team behind it is responsible for Vivaldi but unfortunately they are no longer supporting it. As Chromium is available in the packages this provides an acceptable alternative.

The Good

The process of installing and setting up FreeBSD was straightforward and went off without any issues. There were a few moments where knowing how rc.conf works and exactly what to search were required but these were infrequent and resulted in the desired outcome. FreeBSD is still not the most beginner friendly OS with the default installation dropping you off in a shell and leaving you to your own devices however installing X and a DWM is as simple as can be with a few pkg installs and a single config file being all that's required to get one up and running. This all worked first time and required no deviation from the guides in order to have a clear XFCE environment available.

As mentioned no display rotation was available so I looked at graphical remote control and found to my surprise and delight that the Remote Desktop Protocol (RDP) used by Windows was now supported and with a few packages installed I was able to remote in from the comfort of my Windows 7 machine. Despite the lack of a GPU the performance of RDP was excellent and showed no artifacting or ghosting allowing me to easily try out all the other areas mentioned in this essay.

Previous experiences with networked shares and BSD had gone poorly with attempts at mounting them in NetBSD resulting in failure. To my surprise (yet again) I was able to navigate to my windows shares through the included file explorer and after providing my login details was able to browse all my shares and happily use them to transfer things around.

An enormous amount of software was available through packages that covered the vast majority of my non-dev/gaming needs. Not only were these packages available but they all installed without errors and ran perfectly. Considering the lack of GPU things like Krita ran far better than expected!

Is It Suitable?

With the lack of support for dotNet it does not look like I'll be able to replace my work requirement on Windows anytime soon; this is not much of a surprise and with any clients that have yet to move from Framework 4 which is Windows only I would be needing it anyway.

The lack of steam is a stopper for now but I believe is more than likely due to my lack of GPU. I'm ordering a cheap one to provide some output and will update later the experience of adding a GPU and getting drivers and Steam to work.

The experience overall was a resounding success and resulted in a great desktop. If I can resolve the steam issue and get some games to work then FreeBSD is a strong contender to becoming my next desktop OS.

Originally published on 2022/04/13

  1. Since renamed Mandriva and subsequently abandoned in 2011.