For Linux users who occasionally need access to Windows-specific software, the options have historically involved dual-booting, running a full virtual machine, or relying on the compatibility layer WINE. Each approach has its drawbacks – dual-booting is inconvenient, VMs are resource-intensive and WINE doesn’t support all applications, particularly those from the Microsoft Store or newer commercial suites. Two open-source projects, WinApps and WinBoat, aim to bridge this gap by running a hidden Windows virtual machine and streaming individual applications to the Linux desktop via Microsoft’s Remote Desktop Protocol (RDP).
The core idea behind both WinApps and WinBoat is to provide a seamless experience, making the underlying virtual machine nearly invisible to the user. This allows Windows applications to appear and function as if they were native Linux programs, offering better compatibility and performance than WINE while avoiding the overhead of a traditional full-screen VM. Both projects leverage Linux’s built-in native virtualization tools, rather than relying on add-on hypervisors.
WinApps, the more mature of the two, originated around 2020 and has undergone a “hard fork” leading to a modernized version actively under development. It offers considerable flexibility, supporting deployment via Docker containers, Podman containers (which avoid root privileges), or direct KVM-based VMs managed through libvirt. The libvirt route, while more complex to set up, provides greater control, even allowing the hypervisor to run on a separate machine – effectively repurposing an older computer as a dedicated Windows host.
Setting up WinApps typically involves creating a Windows 10 IoT LTSC virtual machine. The project documentation recommends a virtual disk of at least 64GB and 8GB of RAM, with a root partition of at least 32GB (64GB being more prudent). The setup process can be involved, requiring careful configuration and, in some cases, manual editing of scripts. Using KVM and Virtual Machine Manager offers a more granular level of control, but demands a higher degree of technical expertise.
WinBoat, a newer project, prioritizes simplicity. Currently in version 0.9.0, it aims to automate much of the setup process, making it accessible to users with less technical experience. WinBoat primarily utilizes Docker for the Windows VM, and offers a streamlined installation process. It can even download a Windows evaluation ISO, though users can also point it to a local installation of Windows 10 IoT LTSC. The project’s FAQ explicitly states its goal is to hide the complexity of the underlying virtualization, offering a more user-friendly experience.
The key difference between the two lies in control and maturity. WinApps provides a wealth of configuration options and supports multiple deployment methods, appealing to power users who want fine-grained control over their environment. WinBoat, sacrifices some flexibility for ease of use, automating many of the complex steps involved in setting up and managing the Windows VM.
Both projects integrate Windows applications into the Linux desktop environment. Once configured, Windows programs run in their own windows, alongside native Linux applications, and can be launched from the Linux application launcher. File sharing is also simplified, with both WinApps and WinBoat providing network drive mappings for easy access to files on both the Linux and Windows sides. WinApps uses \tsclienthome, while WinBoat uses \hostlan.
However, the process isn’t without its challenges. Setting up WinApps, particularly with libvirt, can be time-consuming and require a solid understanding of virtualization concepts. WinBoat, while simpler, is still under active development and may lack some of the advanced features and customization options offered by WinApps. Running a full Windows OS, even in a virtualized environment, requires significant system resources. Performance can be sluggish on older or less powerful hardware, and both projects require a substantial amount of disk space.
The choice between WinApps and WinBoat ultimately depends on the user’s technical expertise and priorities. If you’re comfortable with the command line and enjoy tinkering with configuration files, WinApps offers a powerful and flexible solution. If you prioritize simplicity and ease of use, WinBoat is a more appealing option. Both projects represent a significant step forward in bridging the gap between Linux and Windows, offering a viable alternative to traditional virtualization and compatibility layers.
It’s important to remember that these tools are not a replacement for WINE in all scenarios. WINE remains the preferred option for running many Windows applications, particularly games, due to its lower overhead and better integration with the Linux desktop. However, for applications that are not compatible with WINE, or require access to the Microsoft Store, WinApps and WinBoat provide a compelling solution.
As with any virtualization solution, licensing remains a consideration. Users will need a valid Windows license to run a Windows VM, and the VM itself will require regular maintenance and security updates. WinApps and WinBoat offer a promising way to run Windows applications on Linux, but they are not a magic bullet. They require careful setup, sufficient system resources, and a willingness to manage a virtualized environment.
