A Windows your apps recognize.
Raven runs Windows applications on Linux. You install them with their own installers, the same ones you would use on a PC, and they start: no virtual machine, no winetricks, no DLL overrides.
The program's code runs directly on your CPU, inside a sandbox where it cannot reach Linux. Every call it makes to the system is answered by Raven, which plays the part of the Windows kernel and its services: processes and threads, files, the registry, windows and input. Graphics go to Wayland and Vulkan, with DXVK and vkd3d-proton for Direct3D.
- Linux on x86_64
- CMake 3.20 or newer, a C++20 compiler and Python 3.11 or newer
- MinGW-w64 for x86_64 and i686, to build the Windows test programs
- For desktop applications: Wayland, xkbcommon, pixman, FreeType and Vulkan
- Optionally, for the experimental X11 desktop: libxcb with its xkb, xfixes and xinput extensions, and xkbcommon-x11
The tested setup also uses libpng 1.6.59, a CPU build of Skia with the Liberation fonts, DXVK and vkd3d-proton; the scripts/provision-*.py tools download the pinned versions.
Raven is built from source for now:
git clone https://github.com/mirkobrombin/raven.git
cd raven
cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build -j2Then run an installer, or any program:
export RAVEN_PREFIX="$HOME/.local/share/raven/my-app"
build/native/raven --run-process --execution=native --timeout-ms=600000 --desktop=wayland setup.exeThis minimal build runs console programs and simple windows. Installers and most desktop programs also need the common controls, the shell dialogs and the installer services, which Raven builds from pinned ReactOS sources, for both 64-bit and 32-bit programs. Without them a program stops at its first call into them, such as InitCommonControls:
python3 scripts/provision-rtl.py --output components/rtl
python3 scripts/provision-controls.py --output components/controls
python3 scripts/provision-controls.py --arch x86 --output components/controls32
python3 scripts/provision-installer.py --output components/installer
python3 scripts/provision-installer.py --arch x86 --output components/installer32
python3 scripts/provision-graphics.py --destination components/graphics
cmake -S