ARM Support
When can ARM computers be supported,I'm a bit impatient
Right now our workflow doesn't generate builds for ARM architectures, but you are welcome to create a PR which includes it.
For the time being, you can clone the repo, then add an arm target to electron-builder.json like so:
"linux": {
"icon": "icons/winboat.png",
"target": [{
"target": "default",
"arch": ["arm64"]
}],
"category": "Utility",
"artifactName": "${name}-${version}-${arch}.${ext}"
}
Then, just run $ npm run build:linux-gs, follow the instructions and you'll be good to go.
What @Levev said, and in addition we'd probably need to use dockur/windows-arm to get acceptable performance. We may wanna run a x86 VM on ARM or just ARM on ARM but Windows on ARM is rather lackluster, not sure which one folks want.
Intermediate software tester here and user of macOS, Windows, and Linux on both ARM and x86 machines – @TibixDev and @Levev, I'd strongly suggest the Windows on ARM builds to be prioritized over x86 Windows on ARM devices. x86 on ARM performance is novelty at best. Even ReactOS and Windows 7 VMs struggle on M4 Macs with QEMU via UTM (linked for those unfamiliar with the project). I can't speak on nonvirtualized host performance as I no longer possess an Asahi Linux-compatible device (upgraded from M1 to M4 MBA, though Asahi is not yet available on M4 Macs), but considering how fast Windows on ARM can run with ARM Linux devices such as Asahi Linux Macs, Winboat could fill a key area for many Mac owners.
Think about it – gaming compatibility on macOS has always been subpar at best, but Asahi Linux provides users with compatible machines a better experience 9 times out of 10 via Valve's Proton. This by itself is enough to convince many new users to try Linux, some of whom end up eventually contributing to Linux for the greater good. Having a solid "run Windows apps as if they were native for free" for ARM Macs could be just as compelling. A solid "near-native" experience could be near indistinguishable from a dual boot for a less-demanding users, thus even being a "Boot Camp" successor of sorts.
Also, in terms of WoA's "lackluster" compatibility (which is steadily improving just as macOS ARM had to), I'd be willing to argue most users would agree "some software at 90% speed" > "slightly more but still not much software at 9% speed." Tried doing a Windows 11 x86 VM on this same M4 MacBook Air (capable of +60 FPS Minecraft in a Windows ARM VM with only 8 GB RAM and 4 cores allocated) and ultimately just gave up after the install was taking too long. Windows on ARM may be lackluster for now, but it's only a matter of time before x86 to ARM translation improves or developers begin writing for ARM specifically.
The BVM project is quite similar to Winboat, but made specifically for running Windows 11 ARM on ARM64 systems. Ironically it uses a nearly identical emulation stack along with FreeRDP and a GUI. https://github.com/Botspot/bvm Perhaps those looking for an ARM port can use use this in the meantime, and those looking to add ARM support to Winboat can look to BVM for inspiration.
Here's a screenshot of it running on a Raspberry Pi 5:
It also works on other SBCs and ARM Macs running linux.
Hey, thanks for the detailed information. So, it seems like we should rather support WoA images on ARM builds instead of using x86 on ARM. Does Asahi support KVM? I know Apple has some sort of technology for this, not sure how much translates into Asahi. I only have an M2 MBP to test with, not sure if Asahi is compatible with it, but on the website it seems like it should be. Never tried before.
Either way, for ARM we will need to switch to dockur/windows-arm and compile the app & Guest Server for ARM and see how much stays working.
The BVM project is quite similar to Winboat, but made specifically for running Windows 11 ARM on ARM64 systems. Ironically it uses a nearly identical emulation stack along with FreeRDP and a GUI. https://github.com/Botspot/bvm Perhaps those looking for an ARM port can use use this in the meantime, and those looking to add ARM support to Winboat can look to BVM for inspiration.
Also, very cool project :)
@TibixDev if the website says it's supported, it's supported well. Asahi Linux on these Apple Silicon Macs is phenomenal; it genuinely feels like a match that should've been made long ago (speaking from my former M1 MBA) and is definitely worth trying out even if you don't plan to use it long-term for trackpad gestures alone.
As far as KVM goes, I'm still learning how exactly that works, but people have been able to get Windows 11 virtual machines and WINE up and running (albeit with ridiculously complex setups), so at least some form should be possible...?
https://www.reddit.com/r/AsahiLinux/comments/1k15eoi/native_arm64_wine_with_16k_page_support_incl_x64/
Correction: Yes, KVM is possible!
https://www.reddit.com/r/AsahiLinux/comments/1j5cnzh/psa_windows_11_arm64_virtual_machines_can_run_on/
also see #205
but people have been able to get Windows 11 virtual machines [...] (albeit with ridiculously complex setups)
I run Win11 Pro 24H2 arm64 on Asahi Linux (arm64, Macbook) and its actually quite simple. Just use stock qemu + freerdp. It works like qemu on any other Linux system. No complicated hacks required. I imagine it shouldn't be too hard to add support in winboat to run an arm64 windows VM on an arm64 Linux system?
I haven't done a writeup about my Asahi Window VM setup yet, but its close to this one: https://discussion.fedoraproject.org/t/tutorial-how-to-create-a-windows-11-vm/147506
@christian-korneck That is awesome, thank you! I still would like to see WinBoat in this capacity, but it's amazing to see just how much Asahi Linux has progressed in the months since I had to give it up for a newer Mac that doesn't support it yet. (Typing this from ARM Fedora Linux via a UTM virtual machine!)
Right now our workflow doesn't generate builds for ARM architectures, but you are welcome to create a PR which includes it. For the time being, you can clone the repo, then add an arm target to
electron-builder.jsonlike so:"linux": { "icon": "icons/winboat.png", "target": [{ "target": "default", "arch": ["arm64"] }], "category": "Utility", "artifactName": "${name}-${version}-${arch}.${ext}" } Then, just run
$ npm run build:linux-gs, follow the instructions and you'll be good to go.
Hi @Levev, the build fails for me. Any idea what I miss?