MyWhoosh is a free indoor cycling and running app: you ride a smart trainer at home and it puts you in a virtual world, alone or in a race with other people.
It ships for Windows, macOS, iOS and Android — but not Linux. This repository installs it on Linux with Lutris and Wine, and connects your Bluetooth sensors to it through your computer's own Bluetooth adapter or through the MyWhoosh Link companion app.
- A 64-bit Linux system with Lutris installed
python3- Working Bluetooth: if
bluetoothctl scan onshows your trainer when you pedal, you are ready
The install checks all of this at the end and tells you exactly what is missing, so you do not have to get it right in advance.
Flatpak Lutris users: the Flatpak sandbox cannot reach Bluetooth, so the Bluetooth helper is run on your host system instead. That works, but your host then needs two Python packages:
python3-dbusandpython3-gion Debian/Ubuntu,python3-dbusandpython3-gobjecton Fedora,python-dbusandpython-gobjecton Arch. A distro package of Lutris already depends on both, so this only applies to the Flatpak.
There is nothing to clone. Pick your edition and run one command:
MyWhoosh
lutris -i https://github.com/Dj0ulo/mywhoosh-linux/releases/latest/download/mywhoosh.ymlMyWhoosh HD — the same game with higher-resolution assets, and a separate install:
lutris -i https://github.com/Dj0ulo/mywhoosh-linux/releases/latest/download/mywhoosh-hd.ymlLutris then does everything itself:
- creates a 64-bit Wine prefix,
- downloads the MyWhoosh package straight from the Microsoft Store,
- installs it into the prefix,
- adds the Bluetooth support to the prefix and puts the Linux-side helper next to the game,
- wires that helper to start and stop with the game, and checks your setup.
Installing both editions side by side is fine — they are separate games in Lutris, with separate prefixes.
Launch it from Lutris like any other game. The Bluetooth helper starts with it and stops when you quit; there is nothing to run by hand.
Pair them from MyWhoosh's own device screen, exactly as you would on Windows.
Wake the sensor first — pedal a turn, or touch the strap. A trainer that is asleep does not advertise itself, so nothing can find it: this is the single most common reason a device does not show up.
Several sensors at once are fine (a trainer and a heart-rate strap, say); each gets its own connection.
If you would rather bridge your sensors from a phone, the MyWhoosh Link companion app still works and needs nothing from this repository:
- Android: MyWhoosh Link on Google Play
- iOS: MyWhoosh Link on the App Store
MyWhoosh talks to sensors through a Windows API (WinRT) that Wine does not implement. The game's own Bluetooth code is therefore fine — it is simply calling something that is not there.
So rather than change the game, this repository supplies the missing piece. The
game asks for a library called Windows; it gets one, written here, whose
answers come from BlueZ, the Linux Bluetooth stack. The game cannot tell the
difference, and no file in the game's directory is ever touched — which
matters, because MyWhoosh checks its own files and quietly stops using them if
they change.
| Directory | What it is |
|---|---|
lutris/ |
The Lutris installers, and the script that runs the helper beside the game |
bleshim/ |
The Bluetooth support: the library the game loads, plus the Linux helper that speaks to BlueZ |
exportshim/ |
Four game entry points Wine's .NET runtime cannot handle, replaced in memory |
winmd/ |
The same library with Bluetooth switched off — what the game needs just to start |
tools/ |
Small programs that read the game's own code, so decisions here are based on it |
patch/ |
An older, launch-only approach, kept for reference |
dist.sh |
Builds and publishes the release the installers download |
Contributions are welcome. CLAUDE.md is the map for anyone
working on the code.