# Linux / Wine setup Cosmonarchy runs under Wine, but a stock prefix gets four things wrong. Each one fails in a way that does not name its own cause, so they are collected here. ```sh tools/linux/setup-bottle.sh --check # report, change nothing tools/linux/setup-bottle.sh # apply ``` Defaults to the Bottles bottle named `Blizzard`. Use `--bottle NAME` for a different bottle, `--prefix PATH` for a plain `WINEPREFIX`, and `--game-dir PATH` if the StarCraft directory cannot be read from the prefix's registry. Every change is backed up next to the file it modifies. `--check` exits non-zero when something is missing, so it works in a pre-flight. ## What it fixes | Symptom | Cause | Fix | | --- | --- | --- | | Fraud Launcher 2 exits instantly | .NET 8 loads `icu.dll`, which Wine forwards to a nonexistent `icuuc68.dll` | `DOTNET_SYSTEM_GLOBALIZATION_USENLS=1` | | `Fonts could not be loaded` | `aize_debug.qdp` opens `lucon.ttf` / `arialuni.ttf` with FreeType; Wine ships neither | drop DejaVu in under those filenames | | Entirely black screen | Wine loads its own `ddraw.dll`, ignoring cnc-ddraw, so StarCraft does a real 640×480 fullscreen mode switch | `ddraw=native,builtin` | | Black window, correct size | cnc-ddraw's `renderer=auto` draws black here | `renderer=gdi` | ### Notes - The launcher failure shows up in Wine's output as `err:module:find_forwarded_export module not found for forward 'icuuc68.u_charsToUChars_68'`. `DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1` also works but discards culture support, so NLS is preferred. - FreeType opens fonts by path, not by name, so any monospace / wide-coverage TTF under those two filenames satisfies it. Needs `fonts-dejavu` (or Liberation / Noto, which the script also accepts). - `renderer=gdi` and clearing `shader=` were changed together, so which one mattered is not isolated. The bundled GLSL shader only applies to the OpenGL renderer, so it is inert under GDI either way — if you want it back, try `renderer=opengl` first. - Only the global `[ddraw]` section of `ddraw.ini` is touched; the per-game preset sections below it are left alone, and CRLF endings are preserved. - The `ddraw` override is written to `user.reg` directly, so close the game first — Wine rewrites that file from memory when the last process exits. ## Verified on Bottles `Blizzard` bottle, runner **GE-Proton10-25**, X11, dual 2560×1440. Plain system wine 10.0 could not boot even vanilla StarCraft here (null call through `storm.dll` ordinal 313 during 640×480 init), so GE-Proton is the supported runner. Fraud Launcher 2 installs to `C:\Cosmonarchy\`: `Starcraft\` is a stock 1.16.1 install, `Release\` is a git clone of this repo. The game runs from `Release\Cosmonarchy BW.exe`, and `_qdp-hotloader.qdp` packs `Release\mpq\` into `Release\temp.mpq` and loads it alongside the plugins.