Gareth Hughes

.NET & JavaScript Software Developer and Technical Lead.

Adventures in dotnet on Xubuntu

22 October 2021

Why Xubuntu?

A few reasons, for the Desktop Environment, I haven’t used Linux as a main OS for a very long time and last time I did it was Ubuntu pre-unity days running Gnome 2. I never much liked Unity or KDE and I realised I don’t like modern Gnome for much the same reason I don’t like KDE. It’s trying too hard and is way too flashy and I feel it gets in the way. That leaves me with a few options and I decided on XFCE, which while quite ugly by default is very light-weight and configurable.

As for the Distro I originally landed on Manjaro. I had considered Pop_OS, Fedora and OpenSUSE. I wasn’t considering any Ubuntu distribution however the Windows 11 requirement for Secure Boot made me need a distro which supported this. This narrowed my options somewhat and with Ubuntu 21.10 just about to be released I decided to go with the Xfce version of that.

XFCE

Why Now?

Basically the answer is .NET and Gaming. Pre-covid my desktop machine was primarily a gaming machine. Since covid I have switched to uing my own desktop machine as my primary development environment. Why code on a laptop when I have a Ryzen 7 5800X with 32GB RAM sitting here?

That leaves .NET, I’ve been primarily a .NET developer for a while now and .NET framework obviously doesn’t work on Linux, however .NET Core and .NET 5 onwards both work in Linux and Rider which I started using last year is a great replacement for Visual Studio which I was already using in Windows.

Gaming is trickier and I’ve maintained a dual boot for this purpose. Maybe this will improve with the Steam Deck but I’m not super optimistic, Valve have shown a few times now that they’re not up to the task of mass production and distribution of anything. However if they do pull it off it’s likely we’ll see improved Linux support for games, or at least improved Proton support.

Issues

I had less issues than I expected. Things like Graphics drivers, Wifi & Bluetooth drivers installed without any issues.

Sluggish UI

The UI being quite sluggish initially mostly presented with Firefox scrolling being really choppy. But otherwise all of XFCE was quite sluggish.

The things to note here were Force Full Composition Pipeline and 120 Hz, Xubuntu defaulted to 60 Hz for my monitor and software rendering for the desktop.

After setting these options and manually updating the xorg.config (because the UI failed to save for some reason) I’ve had no issues.

NVIDIA X Server Settings

Webcam

The webcam was more of a problem I have a AverMedia PW513 which is a 4k webcam. Works great under windows. Drivers seem to be the issue here. It was very temperamental and would often refuse to start. I ended up switching back to my old 1080p logitech webcam which works much better.

Krisp/NVidia Broadcast replacement

This took me the longest to resolve, my original Googling took me to OBS, however that needed complicated audio loopback configuration and monitoring output. I eventually did get it working but the latency on the audio was so bad that it was unusable.

I found references to a RNNOise and a few small projects on GitHub that implemented it. I eventually stumbled on PulseEffects which just worked, I don’t know why this took so long to find. It worked perfectly, which is important as I need to block out the Kogan AC in my room.

XFCE

Snaps

Snaps weren’t a thing the last time I used Linux, they sound like a good idea however the .NET one up doesn’t work. The Rider and DataGrip ones took an unreasonably long time to start. And there seems to be a general issue of communication between XFCE and the apps, like opening links or clicking notifications are not doing what you’d expect.

But as this is Linux, I just either downloaded the deb file, or added the appropriate repository and reinstalled.