WolOS
Reference contents

Reference · Desktop and system

Games

Native Steam with Proton, and Windows programs outside Steam on Wine.

On this page

What it is

Steam is already part of WolOS. Windows games run through Steam's own compatibility tool (Proton), which Steam installs and updates itself; it translates what a Windows game asks for into what WolOS understands, the way a travel adapter fits a plug to a socket. A Windows program you download yourself opens with a double-click through the Windows program runner (Wine), or umu-launcher when Wine is not installed. This page is the reference; the task guides are Steam and your game library, Playing full screen and When a game will not start.

Why

Proton is where game compatibility work happens, so WolOS does not ship its own layer on top. What WolOS adds is a check of everything Steam needs (32-bit graphics libraries, the Vulkan driver, NVIDIA's matching userspace) so a missing piece is a sentence with a fix, not a silent crash.

How

  1. Open Steam. Press Super+Space, type steam and press Return, or find it in the Store under Play. You see Steam download the rest of itself the first time; it opens when it is ready.

    The Store's Play page: a SuperTuxKart banner, then Steam (Thousands of games, one library), VLC, mpv, Strawberry, SuperTuxKart, 0 A.D., Battle for Wesnoth and OpenTTD, each with Get.
  2. Sign in and play. Windows games run through the compatibility tool, which Steam installs and updates itself.
  3. Play full screen. Banners wait until you leave the game, frames go to the screen at once, and Force Quit (Alt+Super+Esc) still opens over it. See Playing full screen.
  4. For a Windows program outside Steam, double-click the .exe. It opens through Wine, or umu-launcher when Wine is not installed; the Gaming module adds Wine.
  5. If a game will not start, run wol games doctor. You see every check; each failed one prints the command that fixes it. See When a game will not start.

If something goes wrong

What you seeWhat to do
A game or Steam will not startRun wol games doctor: every failed check prints the command that fixes it, and it exits with 1 when one fails.
multilib failsThe 32-bit repository is off in /etc/pacman.conf. Enable it and run pacman -Sy.
lib32-gl or Vulkan checks failThe client is 32-bit and needs a 32-bit Vulkan loader and driver (lib32-vulkan-icd-loader, lib32-mesa, or your vendor's lib32 driver).
nvidia failslib32-nvidia-utils is missing or not the running driver's version: pacman -S lib32-nvidia-utils.
drm failsThere is no /dev/dri; run wol hw status.
Proton falls back to esync or fsyncThe kernel lacks futex-waitv or ntsync. This is only a warning; WolKernel has them.
A Windows program does not startWine is needed for programs outside Steam; the doctor lists it as info.
Steam looks half size on a HiDPI screenwol games steam tells Steam the largest monitor scale. Start Steam that way (the Dock and Search entry does).

Steam and your game library · Playing full screen · When a game will not start · Optional modules (Gaming) · Hardware and drivers · WolKernel

Reference

Steam is the native Arch package from [multilib] (ADR 0016). Windows games run on Proton, which Steam installs and updates itself. There is no custom compatibility tool and no Linux ABI shim. For Windows programs outside Steam, wol-run --exe uses the native wine package (/usr/bin/wine, WoW64) and falls back to umu-launcher (/usr/bin/umu-run, multilib) when wine is not installed.

Pieces

PieceCodeDoes
wol games steam [url]crates/controller/src/games.rschecks what the client needs; first start: a notification; then /usr/bin/steam [url]
wol games doctor [--json]crates/core/src/games/doctor.rsevery check with the exact fix; exits 1 when one fails; JSON when not a TTY
/usr/bin/wol-run --exe <file> ...crates/proxy/src/exe.rsopens a .exe (.msi through msiexec /i) with one prefix per program; wine gets DXVK/vkd3d-proton copied from a Proton in the Steam library, umu brings its own
steam.desktopdesktop/overlay/.../applicationsApps, Search, App Store "Open", steam:// links: wol games steam %u
Notificationscrates/core/src/games/notice.rswhat a Dock or Apps start says; bodies pass shell::copy::lint

Doctor checks

CheckFails whenFix
base (info)never: names the WolOS base (os-release) and whether the kernel is linux-wolosanother kernel is reported and kept
multilib[multilib] off in /etc/pacman.confenable it, pacman -Sy
steamno /usr/bin/steampacman -S steam
drmno /dev/driwol hw status
lib32-glno 32-bit Vulkan loader or OpenGL (the client is 32-bit)lib32-vulkan-icd-loader, lib32-mesa, vendor lib32 driver
vulkan-icd, vulkanno ICD in /usr/share/vulkan/icd.d, or only llvmpipevendor Vulkan packages
nvidialib32-nvidia-utils missing or not the running driver's versionpacman -S lib32-nvidia-utils
futex-waitv, ntsync (warn/info)kernel lacks them: Proton falls back to esync/fsyncnone
wine (info)not installedonly for programs outside Steam

The client starts only when multilib, steam, drm, lib32-gl and nvidia pass (doctor::STEAM_CLIENT).

Display and presentation (audit X1)

Steam, Wine and most native games are X11 clients and run through Xwayland. Xwayland renders them 1:1 (xwayland:force_zero_scaling in hypr/wolos-perf.conf). On a HiDPI screen they would be half size, so they are told the scale instead. wol games steam adds STEAM_FORCE_DESKTOPUI_SCALING=<largest monitor scale> when it is not 1 (wol_core::games::steam::ui_scale). wol-x11-env also exports it, with GDK_SCALE, to the systemd user environment, and Dock and Apps launches pass both on (shell::kit::scale_env).

Fullscreen games present immediately (tearing allowed: general:allow_tearing), not at the next vblank. Three window rules in wolos-perf.conf do this:

RuleMatches
wol-game-immediateSteam and Proton games (steam_app_<id>)
wol-wine-immediateWindows programs started with wine outside Steam (class ends in .exe)
wol-xwayland-fullscreen-immediateany other fullscreen X11 window (native, GOG, itch). A fullscreen X11 video player tears too.

misc:vrr = 2 turns VRR on for fullscreen windows only. xwayland:use_nearest_neighbor scales a game's lower fullscreen mode sharp, not blurred.

The image ships gamescope for Steam's gamescope %command% launch option and for games that need a fixed resolution. Memory Saver treats it as a game process.

From the developer documentation, wonderlandos/wolos docs/modules/games.md.