WEM: Wine Environment Manager

WEM Options

This page describes the various options that are offered by WEM.

Env Config File

Env configuration files live in the $HOME/.config/wem directory and are named after what you pass to WEM when doing the init command. Special characters and spaces are stripped out to form the "slug" that makes up the name of the configuration file name.

The example env, tes3, has a cfg file at $HOME/.config/wem/tes3.cfg. This file can be hand-edited if desired, or edited via the wem cfg command.

Variable Expansion

Environment variables such as $HOME will be expanded when used as WEM option values.

InstallExe = "$HOME/games/MyGameInstaller.exe"

Additionally, option values can be used as variables in another value:

# Note the leading period in front of WinePrefix
RunWorkDir = "{{.WinePrefix}}/drive_c/game"

Note that nested variables are supported:

WinePrefix = "$HOME/games/WinePrefixes/SomeCoolGame"
RunWorkDir = "{{.WinePrefix}}/drive_c/game"
RunExe = "{{.RunWorkDir}}/Some Cool Game.exe"

Unset options

Every option argument comes with a --no-ARG variant that can be used to unset a value. Note that unset options take precedence over set options, so if both are used the value will be unset.

Info Options

Date
Date = "2002-05-01"

CLI arg: --info-date 2002-05-01

Optional string that describes a date relating to the thing you're running, possibly a release date.

Name
Name = "The Elder Scrolls III: Morrowind GOTY Edition"

CLI arg: --info-name "The Elder Scrolls III: Morrowind GOTY Edition"

A string that's passed to WEM during the wem init command. It should describe the thing you are trying to run.

Install Options

GogSilentInstall
GogSilentInstall = false

CLI arg: --gog-silent-install

Meant for game installers from GOG.com. This option auto-adds arguments to the InstallExe which:

This does mean that any errors received will be silenced, but in practice most GOG.com installer errors can be disregarded.

InstallArgs
InstallArgs = ["foo", "bar", "baz"]

CLI arg: --install-args foo bar baz

Optional command-line arguments to pass to InstallExe.

InstallExe
InstallExe = "$HOME/games/setup_some-game.exe"

CLI arg: --install-exe $HOME/games/setup_some-game.exe

Optional string that's a path to an executable to run for installation.

InstallExpected
InstallExpected = "{{.WinePrefix}}/drive_c/game/Morrowind.exe"

CLI arg: --install-expected "{{.WinePrefix}}/drive_c/game/Morrowind.exe"

An optional string that is a file which should exist after installation, possibly a game executable.

InstallWorkDir
InstallWorkDir = "$HOME/games"

CLI arg: --install-workdir $HOME/games

Optional string that should be the working directory to use when running InstallExe.

Run Options

QuietRun
QuietRun = false

CLI arg: --quiet-run

Whether or not to supress output from wine and the RunExe.

RunArgs
RunArgs = ["foo", "bar", "baz"]

CLI arg: --run-args foo bar baz

Optional command-line arguments to pass to RunExe.

RunExe
RunExe = "$HOME/games/MyGame/Game.exe"

CLI arg: --run-exe $HOME/games/MyGame/Game.exe

Required string that's a path to an executable to run with wine.

RunPrefix
RunPrefix = "mangohud"

CLI arg: --run-prefix mangohud

Optional string to prepend to the RunExe. Useful for integrating tools like MangoHud.

RunSuffix
RunSuffix = "foobar"

CLI arg: --run-suffix foobar

Optional string to append to the RunExe.

RunPre
RunPre = "mv /tmp/something /tmp/somethingelse"

CLI arg: --run-pre "mv /tmp/something /tmp/somethingelse"

Optional string that is a command to run before running the RunExe, as well as any related args. Must be quoted if args are used.

RunPost
RunPost = "cp some/save.file some/backupdir/"

CLI arg: --run-post "cp some/save.file some/backupdir/"

Optional string that is a command to run after running the RunExe, as well as any related args. Must be quoted if args are used.

RunWorkDir
RunWorkDir = "$HOME/games/SomeGame"

CLI arg: --run-workdir $HOME/games/SomeGame

Optional string that will be the working directory for running the RunExe.

System Options

ReducePulseLatency
ReducePulseLatency = false

CLI arg: --reduce-pulse-latency

Include the PULSE_LATENCY_MSEC=60 environment variable to possibly improve audio quality. This can be helpful if you get audio cracking.

RestartPulse
RestartPulse = false

CLI arg: --restart-pulse

Restart PulseAudio before running the RunExe.

RestoreResolution

CLI arg: --restore-resolution

RestoreResolution = false

Should WEM try to restore your desktop resolution after running the RunExe.

SingleCore
SingleCore = false

CLI arg: --single-core

Should WEM try to run the RunExe on a single core via taskset.

SysEnvVars
SysEnvVars = ["FOO=BAR", "HRISTOS=IS_COOL"]

CLI arg: --sys-env-vars FOO=BAR HRISTOS=IS_COOL

System environment variables to set for running the RunExe.

VulkanIcdLoader
VulkanIcdLoader = "/path/to/file.json"

CLI arg: --vulkan-icd-loader /path/to/file.json

Optional string that's a path to a Vulkan ICD file.

Wine Options

DxvkVersion
DxvkVersion = "1.8.1"

CLI arg: --dxvk-version 1.8.1

Optional string that's a valid DXVK release version to install and use.

Esync
Esync = false

CLI arg: --esync

Enable esync.

Fsync
Fsync = false

CLI arg: --fsync

Enable fsync.

WineArch
WineArch = "win64"

CLI arg: --wine-arch win64

Required string that sets the architecture of the env.

WineArgs
WineArgs = ["foo", "bar"]

CLI arg: --wine-args foo bar

Optional args to pass to WineExe.

WineDllOverrides
WineDllOverrides = "dinput,d3d8=n,b"

CLI arg: --wine-dlloverrides "dinput,d3d8=n,b"

Optional string to pass to WINEDLLOVERRIDES.

WineExe
WineExe = "/bin/wine"

CLI arg: --wine-exe /bin/wine

Required string that is a path to a wine executable.

WinePrefix
WinePrefix = "$HOME/games/WinePrefixes/TES3"

CLI arg: --wine-prefix $HOME/games/WinePrefixes/TES3

Required string that is a path to a wine prefix directory.

VirtualDesktop
VirtualDesktop = "1920x1080"

CLI arg: --virtualdesktop 1920x1080

Optional string that's in the "Xresolution"x"Yresolution" format, that sets the resolution of a wine virtual desktop for the env.

Vkd3dVersion
Vkd3dVersion = "2.2"

CLI arg: --vkd3d-version 2.2

Optional string that's a valid VKD3D-Proton release version to install and use.