Play Windows-only Steam games on your Apple Silicon Mac, set up from a single config file.
./winmac play mewgenicsSteam only. Everything here runs through Steam: the game is downloaded using Steam's own depot system, installed into a Steam library inside a Wine prefix, and launched from the Steam client. It is for games you already own on Steam that have no macOS version. It is not for GOG, Epic, itch.io, or standalone installers.
Getting such a game running on a Mac means solving four separate problems: Steam won't download the game, Steam won't run, Steam won't log in, and then the game won't draw anything. Each one fails with an error that doesn't point at the real cause.
winmac wraps all four into one pipeline. You describe a game in a config file, run one command, and it downloads the Windows build, installs it into a Wine prefix, applies the graphics workarounds that game needs, and launches it through Steam.
Verified end to end on Mewgenics. The pipeline is game-agnostic, but every game is its own adventure.
This is built on Wine. Nothing here emulates a PC. Each layer translates for the one above it:
Your Windows game an unmodified Windows .exe
|
Mesa OpenGL real OpenGL, sitting next to the .exe,
| because Wine's macOS GL driver is broken
Steam for Windows the game must be launched from here
|
Wine 11 translates Windows API calls into macOS
|
Rosetta 2 runs Wine's x86_64 binary on Apple Silicon
|
macOS on Apple Silicon
Wine translates API calls rather than emulating a CPU, and Rosetta 2 handles the actual x86 to ARM instruction translation. That is why performance is usually fine, and why the graphics layer is where things go wrong instead.
Whisky is not an alternative to Wine. It is a Mac GUI around one specific old Wine build (CrossOver 22.1.1, which is Wine 7.7 from 2022). It is frozen there, and the modern Steam client cannot run on it. Moving to current Wine is what fixes Steam.
- Apple Silicon Mac, macOS 26 or later
- Homebrew and Xcode Command Line Tools
- ~15 GB free, plus the size of the game
- A Steam account that owns the game. winmac downloads it with your own Steam client, using your own license. It does not bypass ownership.
git clone https://github.com/MaartenStork/WinToMac.git
cd WinToMac
./winmac doctor # check your machine
./winmac setup # install Wine 11 + Steamsetup clones steam-on-m1-wine and runs its installer. That project
provides Wine 11, the prefix, Steam, and a steamwebhelper wrapper that stops
Steam's UI from crashing. Use its --minimal flag; the full build takes an hour
and only helps Direct3D 11 games.
It will ask for your password once, and the wrapper step fails the first time by design. docs/troubleshooting.md covers it.
cp games/EXAMPLE.conf games/mygame.conf
$EDITOR games/mygame.conf
./winmac play mygameYou need the Steam app ID, depot ID, manifest ID, folder name, and executable name. docs/finding-ids.md shows where to get them.
winmac doctor |
check the environment |
winmac setup |
install Wine and Steam |
winmac list |
show configured games |
winmac fetch <game> |
download the Windows build into the prefix |
winmac install <game> |
apply graphics workarounds |
winmac launch <game> |
start Steam, ready to play |
winmac status <game> |
is the GPU or the CPU doing the work? |
winmac play <game> |
all of the above |
- How it works: what each stage actually does
- Choosing a renderer: read this if the game won't draw
- Finding the IDs: filling in a config
- Troubleshooting: every error we hit, with fixes
- Upstream bugs: problems found in dependencies
Working games/*.conf files are the most useful thing you can add.
Built on notpop/steam-on-m1-wine, pal1000/mesa-dist-win, and 3Shain/dxmt.
MIT licensed.