→ 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:
-
Set the game install directory to
$WINEPREFIX/drive_c/game
- Prevent all message boxes
- Prevent all error notifications
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
.
→ Sandbox
Sandbox = true
CLI arg: --sandbox
Enable sandboxing via Firejail with all supported features (excluding black/whitelisting).
→ SandboxBlacklist
SandboxBlacklist = ["$HOME/foo", "/bar", "/baz"]
CLI arg: --sandbox-blacklist $HOME/foo /bar /baz
Use the --blacklist
firejail flag with the given paths.
→ SandboxWhitelist
SandboxWhitelist = ["$HOME/foo", "/bar", "/baz"]
CLI arg: --sandbox-whitelist $HOME/foo /bar /baz
Use the --whitelist
firejail flag with the given paths.
→ SandboxCpu
SandboxCpu = 1
CLI arg: --sandbox-cpu 1
Use the --cpu=COUNT
firejail flag.
→ SandboxDns
SandboxDns = "192.168.1.123"
CLI arg: --sandbox-dns 192.168.1.123
Use the --dns=ADDRESS
firejail flag.
→ SandboxIpcNamespace
SandboxIpcNamespace = true
CLI arg: --sandbox-ipc-namespace
Use the --ipc-namespace
firejail flag.
→ SandboxMachineId
SandboxMachineId = true
CLI arg: --sandbox-machine-id
Use the --machine-id
firejail flag.
→ SandboxNetNone
SandboxNetNone = true
CLI arg: --sandbox-net-none
Use the --net=none
firejail flag.
→ SandboxNoDbus
SandboxNoDbus = true
CLI arg: --sandbox-nodbus
Use the --nodbus
firejail flag.
→ SandboxNoPrinters
SandboxNoPrinters = true
CLI arg: --sandbox-noprinters
Use the --noprinters
firejail flag.
→ SandboxNoU2f
SandboxNoU2f = true
CLI arg: --sandbox-nou2f
Use the --nou2f
firejail flag.
→ SandboxPrivateCache
SandboxPrivateCache = true
CLI arg: --sandbox-private-cache
Use the --private-cache
firejail flag.
→ SandboxPrivateCwd
SandboxPrivateCwd = true
CLI arg: --sandbox-private-cwd
Use the --private-cwd
firejail flag.
→ SandboxPrivateTmp
SandboxPrivateTmp = true
CLI arg: --sandbox-private-tmp
Use the --private-tmp
firejail flag.
→ 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.