Racing simulators publish live telemetry (physics, graphics state, lap timing, etc.) via Win32 named shared memory. When these games run under Proton on Linux, that shared memory is confined to the Wine environment and unreachable by native Linux applications such as dashboards, overlays, and telemetry recorders.
Winecarte bridges that gap by mirroring Win32 named mappings into Linux shared memory files under /dev/shm, making them available to any Linux process as though the game were running natively.
Winecarte consists of two binaries that work in tandem:
wine2linux.exe runs inside the Wine/Proton environment alongside the game. It opens the Win32 named file mappings created by the game and periodically copies their contents into Linux files (defaulting to /dev/shm). It is cross-compiled to a Windows executable so it can call Win32 APIs directly.
winecarte-run is a native Linux binary that acts as a Steam compatibility tool. Steam calls it in place of the game launcher. It spawns the real launcher, watches /proc until the game process appears, then uses steam-runtime-launch-client to launch wine2linux.exe inside the running Proton instance. When the game exits, it tears wine2linux.exe down cleanly.
Steam
└─ winecarte-run (Linux)
├─ spawns game launcher
├─ waits for game process in /proc
└─ launches wine2linux.exe (via steam-runtime-launch-client)
├─ reads Win32 named mappings created by the game
└─ writes to /dev/shm/<mapping-name>
└─ read by dashboards, overlays, etc.
| Game | Steam App ID | Shared memory files |
|---|---|---|
| Assetto Corsa | 244210 | acpmf_physics, acpmf_graphics, acpmf_static |
| Assetto Corsa Competizione | 805550 | acpmf_physics, acpmf_graphics, acpmf_static |
| Assetto Corsa Evo | 3058630 | acpmf_physics, acpmf_graphics, acpmf_static |
| Le Mans Ultimate | 2399420 | LMU_Data, $rFactor2SMMP_Telemetry$, and related rFactor2 SMMP mappings |
| rFactor2 | 365960 | $rFactor2SMMP_Telemetry$, and related rFactor2 SMMP mappings |
| Project CARS 2 | 378860 | $pcars2$ |
| Automobilista 2 | 1066890 | $pcars2$ |
Warning
rFactor2 / Le Mans Ultimate: Do not use Winecarte alongside rF2SharedMemoryMapPlugin_Wine. The Wine-specific version of the plugin already writes the shared memory files under /dev/shm, which conflicts with Winecarte attempting to write the same files. The original windows version of the plugin (or its various forks) can be used instead.
Download winecarte-run and wine2linux.exe from the latest release and extract the archive.
The simplest setup is to place both binaries somewhere on your PATH, for example ~/.local/bin:
cp winecarte-run ~/.local/bin/
cp wine2linux.exe ~/.local/bin/
winecarte-run searches PATH for wine2linux.exe at launch time, so with both installed this way no further configuration is needed.
In Steam, right-click the game → Properties → Launch Options, and set the following launch command.
If both binaries are on your PATH:
winecarte-run %command%
If they are not on your PATH, use full paths and point WINECARTE_WINE2LINUX_EXE at wine2linux.exe:
WINECARTE_WINE2LINUX_EXE=/path/to/wine2linux.exe /path/to/winecarte-run %command%
Steam automatically provides SteamAppId, STEAM_COMPAT_DATA_PATH, and STEAM_COMPAT_TOOL_PATHS, which winecarte-run uses to select the right handler and locate the Steam runtime.
Once the game is running, the shared memory files appear under /dev/shm. For example, Assetto Corsa publishes:
/dev/shm/acpmf_physics
/dev/shm/acpmf_graphics
/dev/shm/acpmf_static
Any Linux application can read these files directly.
Requires Rust 1.95+ and the following cross-compilation tools:
# Debian/Ubuntu
sudo apt-get install musl-tools mingw-w64
# Add required targets
rustup target add x86_64-unknown-linux-musl x86_64-pc-windows-gnu
cargo build --release \
--package winecarte-run --target x86_64-unknown-linux-musl
cargo build --release \
--package wine2linux --target x86_64-pc-windows-gnu
Alternatively, use just build-all --release if you have just installed.
| Variable | Description |
|---|---|
WINECARTE_WINE2LINUX_EXE |
Override path to wine2linux.exe. Unnecessary if it is on PATH. |
WINECARTE_RUNTIME_LAUNCH_CLIENT |
Path to steam-runtime-launch-client. Auto-detected from STEAM_COMPAT_TOOL_PATHS if unset. |
WINECARTE_LOG_LEVEL |
Log level for winecarte-run. Defaults to warn. |