When choosing which Linux Desktop Environment you will use, what is the best available? K Desktop Environment, or shortened to KDE, is a desktop environment for Linux desktop operating systems. Recently KDE was updated to QT 6, which is necessary for proper Wayland support. There are a variety of different Linux distributions and desktop environments, and you can choose which desktop environment to use independently from the distributions. While at first glance it looks similar to KDE 5, KDE 6 (and QT6) mark an important step to broader Linux adoption, with the performance improvements to match. We will be using Fedora 42 KDE as the baseline distribution for this article.
X vs Wayland
A recent edition since KDE version 6 is Wayland support, a key component of how the desktop works graphically. Up until recently, all Linux desktops used X.org to manage the desktop space and video stream. X.org comes from the beginning times of Linux, appearing in 1984 via an MIT project, with version 11 appearing in 1987 (still being used today!): https://en.wikipedia.org/wiki/X_Window_System
Origin:
The purpose of X.org was to create window and graphical system similar to competing commercial solutions. Over time, it was realized that X.org’s implementation was inefficient, and so the Wayland project was born. Wayland is the modern Linux window system used in KDE 6, that doesn’t require a separate compositor, and its performance and security is better than X.org. Wayland also supports QT 6, a major performance and functional overhaul to desktop environment rendering. QT 5 has been the standard render/window manager tool used for over 10 years, but its “bones” are based on older less compatible solutions. Wayland did not function as well using QT 5, so its adoption was limited at best. One major upgrade QT 6 brought to Wayland is HDR support, along with a modern graphics rendering engine (Vulkan, Metal, Direct3D, etc…) to add to performance compatibility.
Issues:
This is still an ongoing project, so bugs and compatibility problems do occur. One thing I noticed is that streaming with TeamViewer to another desktop causes many graphical artifacts and potential latency issues. The developers of KDE decided that Wayland is sufficiently functional and stable to make it the default window manager for KDE 6, and my opinion so far is that it is functional and stable enough to work with new desktop installs. This is going to be a series of blog posts, so tune in this week for the next article!
FAQ: X.org vs Wayland in KDE Plasma 6:
What is X.org?
X.org (or X11) is the traditional Linux display server from 1984 (version 11 in 1987). It’s been the standard for managing windows and graphics for decades.
What is Wayland?
Wayland is a modern replacement for X11. It simplifies the graphics stack, with apps rendering directly via a compositor for better performance and security.
Why does KDE Plasma 6 default to Wayland?
KDE developers deem it stable enough for daily use. It offers smoother performance, better security, and modern features like HDR, thanks to improved Qt 6 support.
Main advantages of Wayland over X.org?
Higher performance and lower latency
Stronger security (apps are isolated)
Native HDR and better high-DPI support
Simpler, more efficient architecture
Questions?
If you have any questions or comments feel free to leave them below.
This is my report on researching and testing the possibility of using a Linux host, with a Windows virtual machine in KVM, with GPU passthrough and a Windows Mixed Reality(WMR) headset. My findings have been that it is indeed possible, with near native performance, but hardware and software setup is complex. It requires an understanding of the Linux operating system, virtual machines and KVM, hardware schematics, and ability to build/modify a computer tower. It is possible with a smaller budget (like I had) to do this, but that might mean searching for pre-owned parts to reduce the cost of the upgrade.
Virtual reality is growing in popularity every year, and similarly, frustrations with Windows operating systems are driving more people to Linux. In the virtual reality world, there is an increase in immersion, as your movements are mimicked by the headset tracking. But Microsoft has recently announced that they are removing support for the WMR headset in Windows 11. This is incredibly frustrating to the people who purchased a WMR headset, especially since Windows is not releasing the source code for the platform. On the other hand, Linux developers have been experimenting with creating compatibility layers of software to allow for the headsets to work natively in Linux. While this is great for open source users and developers, there are still compatibility problems with playing games designed for Windows. Specifically, the headset is still not fully functional in its alpha state.
Linux
Linux distributions generally have a stronger focus in security, privacy, and openness to customize the operating system. As Windows continues to add to the growing list of performance problems and intrusive tracking software, many people are looking for a way to continue using older devices that are not compatible with the latest Windows operating systems. In my case, I wanted the ability to make more decisions about what and how my computer runs, and the safety of using open source software has actually increased the capabilities of my system with no added tracking or telemetry.
Virtual Machine
The current way to run native Linux but have Windows for gaming available is through using a kernel-based virtual machine (KVM), a Linux native hypervisor that allows for more capabilities than other hypervisors, like VirtualBox. It uses QEMU as its emulator and Libvirt for Virtual Machine(VM) management. This is controllable with a graphical application called Virtual Machine Manager, used as a Graphical User Interface(GUI) to function without needing to use a terminal. KVM, when properly set up, provides near-native performance and the ability to dedicate PCIe devices (like graphics cards) to the virtual machine of your choice. This allows your devices to function completely separate from the Linux desktop, and can be operated independently from each other (i.e. you can play games on Windows while working or playing videos on your Linux desktop) if you have multiple monitors or separate video inputs on your current monitor.
IOMMU
The way this is achieved is through enabling virtualization tools in the BIOS, and sending Input/Output Memory Management Unit (IOMMU) PCIe groupings to the virtual machine. Modern laptops and desktops have virtualization abilities that you can enable within the BIOS, with some features for better VM performance. IOMMU groupings are the way motherboards dedicate certain pipelines of data to and from their location in the motherboard. Nearly everything, including the CPU and its components, has its own groupings, but some are grouped together in a way that would conflict with virtualization passthrough.
The Virtual Function I/O(VFIO) is responsible for allowing hardware devices to be controlled directly with an application. In other words, it is possible to pass control to an application, like KVM, for direct hardware access. The IOMMU groupings dictate what devices you can share, while giving them a hardware address that an application can recognize. Tricky part is you have to pass the entire grouping for it to function in the virtual machine. In my case, my motherboard grouped some PCIe slots I wanted to use with the CPU. I needed a solution.
PCIe
I was able to pass my Nvidia graphics card to the VM, after blocking any Nvidia drivers in the kernel from loading, but I could not pass the USB-C included on my motherboard I/O because it was tied to CPU functions. I wanted to do this so I could use my WMR headset, which requires a DisplayPort and USB-C actively connected to function. I purchased a few USB PCIe cards to use in one of my unused slots, but it only supported an x1 connection. This essentially means it can only fit very small expansion cards, and isn’t capable of transferring as much data than larger slots (4x, 8x, 16x etc.) Even with a supported x1 USB card, it was not able to be passed to my virtual machine, because the slot was shared with some CPU functions on my motherboard.
My system was originally using a Ryzen 7 5800x with 32GB of DDR4 ram, with my Asus B550-F motherboard, and an RTX 2070 + RX 550x for graphics. The Asus motherboard only had one or two PCI 4.0 slots(the latest and highest rated), the rest were 3.0 with IOMMU groupings that could not be used in passthrough.
It was powerful enough for my needs, but I wanted to push my computer to be as upgraded as possible for the AM4 generation of CPUs, since it is already considered outdated hardware. Initially, I had set up a Windows virtual machine with my Nvidia RTX 2070 graphics card passed to the VM. Along with an AMD RX 550x low profile RX 580 graphics card to be used with Fedora Linux, my host OS. I also have a separate USB microphone and USB audio output device that I similarly pass control of to the VM. It worked, but I did not have enough slots to Install any other cards (like a PCIe USB expansion card). I did not have any other option for getting my virtual reality headset, an HP Reverb G2, working correctly. So I started looking into a motherboard that could support this.
Motherboard
After some research, I realized I would need to buy a high end AM4 motherboard. I initially looked at Asus, but I read they had very mixed reviews on its IOMMU groupings, so Asus didn’t seem to have the groupings I needed. So, I looked into other motherboards, and I eventually settled on a used Gigabyte X570 Aorus Master, which was purchased for about $170, about half the price of original retail value. User accounting said that the gigabyte had better separation in its IOMMU groupings, and this seemed to match what I found in my research.
I got the new motherboard installed, and everything seemed to function properly. The BIOS was different from my Asus motherboard, but a search for the manual told me everything I needed to do (always RTFM). I also upgraded my CPU to a Ryzen 5950x, so that way I could give both my Windows machine and my Linux host machine 8 dedicated cores and 16 threads to work with. This was unnecessary, but at the time the market prices were cheaper, and it gets more expensive the longer production has stopped and the hardware becomes rarer to find. This was with upgrading my machine to 64 gigabytes (16GB x 4) of RAM, but initial tests indicated it would not be enough resources to make this work. So I ended up settling on 128 gigabytes (32GB x 4) of ram to ensure future proofing and long term stability.
PCIe USB Expansion Card
The motherboard had three x16 PCIe slots that had satisfactory IOMMU separation, so I purchased what seemed like the best USB expansion card. It has two USB-C ports and three USB type A ports. Reviews indicated other cards that have USB-A slots facing vertically are not ideal, and often led to problems because the case made the ports difficult to access, since the ports were wider than my case slots. I finally decided on a dual combined USB-A and USB-C expansion card that had the slots facing horizontally, for a total of 3 USB-A and 2 USB-C ports on a PCIe x4 card.
Windows Mixed Reality
Once I got the USB card successfully passed through to the VM, I plugged in my VR headset into the DisplayPort slot and the USB-C slot. At first, I had to configure Windows to cheat the minimum hardware standards test for Windows mixed reality because it false-reported that I didn’t have enough system resources to run the VR application. This was corrected with a careful registry change, and I was then able to then get it to accept the hardware. I plugged in my headset, downloaded all the VR games and Software that I needed to run the VR. I turned it on, and it worked! Side note: leaving the headset plugged in before turning on the VM ended up crashing the VM every time, so I disconnect power to the headset until I am logged in.
Gaming Performance
I had interestingly better results with the performance of the VR. I suspect this is because I had only one monitor plugged into the GPU, instead of all 3 of the monitors I use. The framerate and response time were more consistent, and while testing Half Life: Alyx I was no longer getting the VRAM warning messages I had before.
Resource Allocation
I initially had my Windows VM set up as a virtual disk partition in the KVM software. But then I decided I wanted two separate M.2 SSDs for maximum space and performance. So I purchased the exact same 2TB Inland SSDs. I passed one of those SSDs, through the isolated IOMMU group, directly to Windows with minimal performance loss. The virtual machine was assigned 40 gigabytes of dedicated RAM solely for Windows. This may sound excessive, but I have plenty of resources are available to spare for increased stability. My Windows VM now runs games and VR as if it’s on a completely separate computer, though it does generate more heat.
Occasionally, the virtual machine will not work properly with Evdev, which is a function that can be added to the VM configuration to pass keyboard and mouse controls to the VM with minimal input lag. I can switch desktops by hitting both my left and my right control keys, but occasionally the keyboard shortcut stops working (mouse stays with one desktop and keyboard starts malfunctioning in the VM). Power cycling the VM can fix the issue.
UPDATE: I have not had this problem since the latest Fedora 42 update, so I can still use my primary keyboard and mouse in the VM without anything breaking!
Networking
At first, I struggled to figure out the networking side of the VM, as it did not have a visible IP on my network that I could interact with. I found a solution that shares the network in bridged mode that allows both the Linux host and the Windows VM to share the connection while having separate IP addresses visible to my local network. And I can still use my Linux host machine that performs with no difference to if the VM is being used or not. While I’m sure my system draws more power now, it costs less and draws less power than if I were to build a second dedicated gaming machine, and it is much easier to tweak and interact with Windows through the virtualization controls.
Inspiration
This was just a fun hobby project that I really wanted to test out. I was encouraged by many sources, such as Mutahar AKA SomeOrdinaryGamers who has discussed his desktop setup in many of his videos, my friends, and Linux memes I’ve encountered discussing the idea. I had to add a few extra steps to get my WMR headset functioning, but it was truly worth every bit of effort!
Update 12/2025
So I’ve made some recent adjustments and changes to my setup. Because of how premium the Aurora Master is, I have 2 separate Ethernet connections for my machine, and I can directly pass one of them to my virtual machine without issue. I wanted to highlight this because it changes the way I use it now. No more network bridging, just two separate direct connections with individual IP addresses. This will vary from motherboard to motherboard, so always check your motherboards iommu groupings to ensure compatibility.
I also swapped out my AMD card with the larger RX 580, so unfortunately I had to sacrifice my SATA expansion card to make room for the new card. Thankfully I have just enough ports on the motherboard so not a big deal, but I thought I would mention this.
FAQ: Using a Linux Host with a Windows VM for WMR Headset and GPU Passthrough
Can I use a Windows Mixed Reality (WMR) headset with a Linux host and a Windows virtual machine (VM)?
Yes, it’s possible with a Linux host running a Windows VM using KVM with GPU passthrough. However, the setup is complex, requiring knowledge of Linux, KVM, hardware schematics, and PC building. The WMR headset can work, but compatibility is limited due to its alpha-state support on Linux.
What hardware is needed for this setup?
You’ll need a motherboard with good IOMMU groupings for PCIe passthrough (e.g., Gigabyte X570 Aorus Master), a compatible GPU (e.g., Nvidia RTX 2070), a CPU with virtualization support (e.g., Ryzen 5950x), ample RAM (64GB or more recommended), and a PCIe USB expansion card for WMR headset connectivity.
Why use a Linux host instead of Windows for VR gaming?
Linux offers better security, privacy, and customization. With Windows dropping WMR support in Windows 11 and adding performance issues, a Linux host with a Windows VM allows you to use open-source software while running Windows games and VR applications with near-native performance.
What are the challenges with this setup?
Challenges include complex hardware and software configuration, ensuring proper IOMMU groupings, and managing compatibility issues with WMR headsets. You may need to tweak BIOS settings, block conflicting drivers, and handle occasional VM issues like input lag or crashes.
How does GPU passthrough work with KVM?
GPU passthrough uses KVM and VFIO to dedicate a GPU to the Windows VM, providing near-native performance. This requires enabling virtualization in the BIOS, configuring IOMMU groupings, and passing PCIe devices (like the GPU and USB card) to the VM.
Are there any tips for setting up a WMR headset?
Ensure the USB-C and DisplayPort connections are passed through correctly via a PCIe USB card. Disconnect the headset before starting the VM to avoid crashes, and you may need to adjust Windows registry settings to bypass WMR’s hardware check.
Questions?
If you have any questions or comments feel free to leave them below.
Affiliate
This page contains affiliate links. If you make a purchase through these links, we may earn a small commission at no extra cost to you.
YouTube ReVanced is a continuation project based on the original Vanced team, designed as an open-source project to enhance your YouTube experience on Android devices. With features like ad-blocking, SponsorBlock, and the return dislike counter, it brings the best of YouTube to your fingertips. In this comprehensive step-by-step tutorial, we’ll guide you through the process of installing YouTube ReVanced on your Android device. While some knowledge of the Android operating system is helpful, following this tutorial should be a straightforward experience.
2. Download the ReVanced Manager APK file to your Android device. This file will serve as the gateway to installing and managing YouTube ReVanced.
Allow Installation from Untrusted Sources
3. If you haven’t already, enable the option to “Allow installation from untrusted sources” in your device’s settings. This step is crucial to install apps from sources other than the Google Play Store, as ReVanced Manager is not available on the official app store.
Install and Open ReVanced Manager
4. Install the ReVanced Manager APK you downloaded in step 1. This application will act as your control center for managing YouTube ReVanced.
5. Open the ReVanced Manager app on your device, which will serve as a hub for controlling YouTube ReVanced features and patches.
Check and Update Patches
6. Make sure that the app’s patches are up to date. This ensures that you have the latest enhancements for YouTube ReVanced. Periodic updates to the patches will ensure that you continue to enjoy all the features ReVanced has to offer.
Downgrade the Official YouTube App
7. You will need to downgrade the version of the official YouTube app you are running. This can be done using the Google Play Store by following these steps:
· Access the Google Play Store using your device.
· Search for the YouTube app in the search bar.
· Once you find the YouTube app, tap on it.
· On the app’s page, scroll down, and you’ll find an option to “Uninstall” or “Update.” If an update is available, tap on “Update” to ensure you have the latest version of the YouTube app.
· If you want to revert to a specific older version you might need to consider uninstalling the app and then proceeding to the next step. This may involve downloading the desired version from a trusted source.
Download the Recommended YouTube App Version 8
Go to a trusted mirror site for Android apps, such as APKMirror.
9. As of writing this article, version 18.38.44 is the recommended version (nodpi variant). Download and install this version on your device.
10. Check to ensure that the YouTube app loads properly. This specific version is recommended because it is known to be compatible with YouTube ReVanced and offers a stable experience.
Install Vanced MicroG Version 11
Download and install the latest Vanced MicroG APK from this source. Vanced MicroG enables Google services to work seamlessly in the patched YouTube app. This component is essential for a fully functional YouTube ReVanced experience.
Patch YouTube with ReVanced Manager
12. Launch the ReVanced Manager again and navigate to the “patches” tab.
13. Select YouTube from the list of apps to patch. Double-check to make sure you have the right version, which should match the version you downloaded in step 6.
14. Optionally, choose which patches you want to be selected (the installation recommends keeping the defaults). These patches include features like ad-blocking, SponsorBlock, and the return dislike counter.
15. Press the “Patch” button and patiently wait for the app to complete the patching process. Be sure not to exit the app during this process, as it can prolong the patching duration. The patching process may take a few minutes, depending on your device’s performance.
16. If the patching process indicates a failure, double-check that you are patching the correct YouTube version and try again. Ensure that you have followed all the previous steps meticulously.
17. Once the app is successfully patched, install the YouTube app you downloaded in step 6. Verify that everything is working as intended. Your YouTube ReVanced app should now offer a seamless, ad-free, and enhanced YouTube experience.
Disable the Default YouTube App (optional)
18. Optionally, go into your device’s settings and disable the default YouTube app. This ensures that YouTube links open the “patched” version of YouTube installed via ReVanced Manager, not the original YouTube app. Here’s how to do it:
· Open your device’s settings.
· Scroll down and tap on “Apps” or “Applications.”
· Find the official YouTube app and tap on it.
· Look for the option to “Disable” or “Turn Off.” This will prevent the default YouTube app from opening when you tap on YouTube links.
Conclusion: Congratulations on Installing YouTube ReVanced
You’ve successfully installed YouTube ReVanced on your Android device, unlocking a range of powerful features and enhancements for your YouTube experience. Enjoy ad-free viewing, SponsorBlock, and more while exploring the world of YouTube without interruptions. Your journey into a better YouTube experience is now complete. Feel free to explore the settings within ReVanced Manager to further customize your experience and make the most of this incredible tool.
With YouTube ReVanced you can take full control of your YouTube experience, tailor it to your preferences, and enjoy all the content you love without the annoyances of ads and other distractions. It’s a powerful addition to your Android device providing an enhanced ad-free experience.
Questions?
If you have any questions or comments feel free to leave them below.