Installation - ChaosRifle/DCS-on-Linux GitHub Wiki

Select an installation method:

  • Lutris [ recommended ]
  • Wine [ incomplete ]
  • Steam [ partially incomplete ]

Lutris

  • 1: we must select a lutris default runner before installation. Open 'Lutris Settings' [1] > 'preferences' [2] > 'Runners' [3] > 'Wine Options' [4] > set 'wine version' to a known working runner [5] > 'save' [6]. Unfortunately, the YAML lutris uses will not allow us to define versions that are not in the API (or on your machine), so you must do this to ensure a functional version is used. Lutris needs to add more, and relevant, runners to wine in their API.

[!note]

  • If you do not have runners you like, use Proton Plus to manage runners easily.
  • Alternatively, drop runners in ~/.local/share/lutris/runners/ if you know what you are doing
  • 2: by website or lutris app, browse for add a game, 'DCS World', then select the 'wine DoL Community Choice (Latest)' version and press install.
  • 3: set your path here in the lutris menu, and absolutely nowhere else. DCS installer will ask if you want to change it later, you will leave the value as default.

[!caution] set your install path in the lutris window. DO NOT CHANGE THE PATH in the dcs installer window, leave that default!

  • 4: follow installer prompts carefully if any are presented

[!note] If the game is not launching to main menu now, check your runner from step 1, or proceed to Troubleshooting

  • 5: close your game client if you tested it, and go to Finalizing install, you are now nearly done!

Wine

[!note] this segment is incomplete

Steam

choose an install method:

standalone via steam (add non-steam game)

[!note] this segment is a stub, less support is offered for this method, and it is far more manually involved than other methods. please only choose this if you are okay with this, as support for this method is limited

  • 1: manually download the game installer
  • 2: in steam, click 'Add a Game' in the bottom left corner > 'Add non-steam game' > select your installer.exe. use a known working runner
  • 3: once it is done install, close it.
  • 4: run protontricks to install d3dcompiler_47.dll to the prefix, or copy one from a windows box manually (vm's work for this)
  • 5: in steam, set the working directory to the bin folder and edit the exe to use dcs.exe over dcs_updater.exe

[!important] you must wrap both paths in double quotes, as they contain spaces

  • 6: set your launch argument to WINE_SIMULATE_WRITECOPY=1 WINEDLLOVERRIDES='wbemprox=n' %command%. Check here for the latest info.
  • 7: optionally repeat the add steam game and point it to the dcs_updater.exe with argument update, and again for argument repair
  • 8: optionally disable the launcher with flag --no-launcher or an options.lua that has the setting disabled, if you dislike or have issues with the launcher opening correctly
  • 9: go to Finalizing install, you are now nearly done!

dcs world steam edition (the actual steam game)

[!note] this segment is incomplete

[!important] (date unknown) Opentrack requires the game be installed to your home-folder drive

  • opentrack proton appid hooking only works on the home-folder drive. it does not check other drives with steam app-manifests.

Finalizing install

(highly recommended but not technically required to run the game)

contents:

[!caution]

  • It is highly recommended you use a mod manager if you will be modding the game at all, due to both core DCS, and linux case-folding, issues. This is more serious than on windows - I(Chaos) would not recommend modding the game in any way, even saved-games, without a mod manager due to these problems. In some cases, troubleshooting can become near impossible.
  • Use of a mod manager will aid in installing other software, such as SRS hooks, make running of tools more convenient / easier to remember, and allow a clean install for each update to mitigate issues of DCS when patched.

Mod Manager

We recommend Limo. The flatpak will work just fine and has no known regressions over native. Limo is arguably the future of modding games on linux, and has a ton of functionality not used in this guide. For additional information, see their wiki.

  • 1: create a New Application [1]
  • 2: fill in the red mandatory fields - you want a Name[2] (your pick), and a Staging Directory[3]. Your staging directory will be where the mods are stored and limo holds its data to be able to cleanly un-mod your games. This should be unique per-game. you may want it on the same drive as your game if you intend to use hardlinks. Mine is ../modding - limo/dcs staging for example, on the same drive as dcs is installed. Command[4] is optional and is used to launch the game. shown in the screenshot is the command to launch lutris and run the game. your number will be different, you can in-lutris, create a desktop icon and edit it to get the values. For steam installs, you would use the steam appid launch if you wanted this.
  • 3: select your Deployers tab [5], and then create a New Deployer[6]. This is how and where a mod gets put into the games files. We will make two of them, in steps 4 and 5. Deployers have types. For our purposes, Case Matching or Simple is of note. Case Matching solves the case-folding problems, where simple treats it like you just dumped the files in raw. If you use a case-folded game install, it is safe to use simple to slightly speed up mod deployment, otherwise you should use Case-Matching. Deployment type can be Symlink, Hardlink, or Copy. Copy just copies the files over and increases file footprint, however if the files in the game dir are mistakenly modified (ex: you updated the game without uninstalling mods), copy will protect your mods from being mangled.
  • 4: create a Saved Games deployer. name it how you like. Case matching unless case-folded FS. any Deployment Method here is acceptable, as accidental overwrite of the file is unlikely. I personally use Hard Link. This points to the DCS Saved Games root folder (in user), the screenshot shows the open beta version Saved Games folder.
  • 5: create a Core Files deployer. name it how you like. Case matching unless case-folded FS. I strongly recommend Copy deployment method as accidental overwrite is a very real possibility by updating the game without un-modding it. File sizes for core files mods are usually pretty small (texture packs, sound packs, small tweaks). This points to the DCS core game files root folder (in program files), the screenshot shows the open beta version Saved Games folder.
  • 6: installing mods can be done by drag and dropping the files into the Limo window. SRS hooks mod is supplied in this repo's code. You should install SRS hooks now if you intend to play multiplayer. Limo mods are just a containing folder to name them, and within are the files that are laid out such that copying the files inside the naming folder will function properly. When installing a mod, you will be able to choose the display name in limo, version, Root Level [7], and Add to Deployer [8]. Root Level [7] just refers to how the mod is packaged. Red text means that folder will be stripped off the top, and its contents used instead. For SavedGames, this should be first green for Mods, Scripts, etc. For Core Files mods, this should be first green on CoreMods, Data, API, bin, Mods, Scripts, etc.

[!note] srs hooks mod contains an Export.lua, if you plan to use a custom one, you should edit that now.

optionally, due to DCS IC, you may want multiple modlists. These are called Profiles in limo, at the top center of the main window. When you add a mod to a deployer, you are doing that action on a per-profile basis. Profiles allow you to have any permutation of IC pass or fail to mod to your hearts content.

  • usage: enabling or disabling mods can be done by switching to the Deployers tab and clicking Deploy or Undeploy. Best practice is to undeploy before running a game update, especially if you have Core Files mods.

Fixer scripts

[!note] if you would like to know more about the scripts, they have documentation inside them. Best practice is to read scripts you download before executing them.

  • 1: Under this repo's /tools folder, you will find the above scripts/fonts. download them or git clone the repo
  • 2: edit the scripts to use your game paths
  • 3: if using a tool like Limo, you may opt to add these scripts to your App > Tools section to make remembering/launching them easier when you update the game.
  • 4: run texturefixer.sh This breaks texture IC when flying those aircraft.
  • 5: AH-64 users crashfix: rename the included [note: not currently included. must find one we are allowed to] font file to seguisym.ttf or grab a copy of the real font from the internet, or a windows box in C:/Windows/Fonts
  • 6: AH-64 users crashfix: install the font file to your prefix's drive_c/windows/fonts/ folder

[!note] you must run the texture fixer every time you update/repair the game

SRS

[!caution] SRS v2.1.1.0 is the latest known working verion on linux, check troubleshooting for info.

[!warning] to get SRS to run, Wine-GE-8.26 is known to work extremely reliably. Versions 9.x and 10.x have been very problematic for many users

[!note] while not created by DoL, there is a lutris installer that lets you skip to step3 and luckily the runner SRS likes is native to lutris, so they were able to force its use. if you would like to try the automated installer for SRS, it is here. We provide no support for use of this, however it should work if you install the hooks from step3

  • 1: download SRS's installer.exe from the SRS releases
  • 2: choose to either use lutris to install it (remembering to set lutris' default wine runner), or wine standalone, and run the installer like normal
  • 3: use the readme from srs to manually craft the hooks, or, download the 'srs-hooks' folder from this repo

[!note] use of a custom export.lua file will be overwritten by this. if you use a custom one, put those changes into this scripts/export.lua file now

  • 4: install the hook files to your DCS 'saved games' folder, preferably with a mod manager.

[!caution] manual installation (no mod manager) is NOT recommended due to casefolding issues, and the rare dcs oddity. Please use a mod manager.

Headtracking

Choose your headtracker:

  • opentrack linux [ recommended ]
  • opentrack windows inside dcs prefix [ incomplete, sub-optimal ]
  • linuxtrack [ incomplete ]
  • other: the star-citizen Linux User Group maintains an excellent wiki on headtrackers, more info can be found on their wiki, here

opentrack linux

  • install opentrack from its repo, the AUR, or the SC-LuG version that has extra features/fixes (mainly umu). Follow the instructions provided at those links for the installation process, and continue here for setup

[!note] the images provided in the next segment are using a build from SC-LuG, if your UI looks slightly different, that is why.

select how your game was installed:

wine runner

  • 1: select your input method[1] (how you detect your head)
  • 2: select output method ofWine -- Windows layer for Unix[2]
  • 3: open the output method configuration menu[3]
  • 4: select the identical version of wine[4] your game install uses.
  • 5: point opentrack to your game prefix[5]
  • 6: set esync and fsync[6] to be identical to your game installs configuration (usually both enabled)
  • 7: select the output protocol[7] that your game should see. (usually this is Both)

you are now done with headtracking, handy link to next section

umu proton runner

  • 1: select your input method[1] (how you detect your head)
  • 2: select output method ofWine -- Windows layer for Unix[2]
  • 3: open the output method configuration menu[3]
  • 4: select the identical version of proton[4] your game install uses.
  • 5: point opentrack to your game prefix[5]
  • 6: set esync and fsync[6] to be identical to your game install's configuration (usually both enabled)
  • 7: select the output protocol[7] that your game should see. (usually this is Both)
  • 8: set your game client launch parameters to have the umu PROTON_VERB environment variable PROTON_VERB=runinprefix GAMEID=umu-dcs

you are now done with headtracking, handy link to next section

steam runner

[!caution] opentrack appid hooking is flawed, see troubleshooting

  • 1: select your input method[1] (how you detect your head)
  • 2: select output method ofWine -- Windows layer for Unix[2]
  • 3: open the output method configuration menu[3]
  • 4: select the identical version of proton[4] your game install uses.
  • 5: set the steamapp id for dcs[5] (223750)
  • 6: set esync and fsync[6] to be identical to your game install's configuration (usually both enabled)
  • 7: select the output protocol[7] that your game should see. (usually this is Both)

you are now done with headtracking, handy link to next section

opentrack windows inside dcs prefix

[!note] this segment is incomplete

[!tip] this method has significant overhead compared to native, especially for cpu heavy stuff like ai-track. if you must use this because native is somehow broken and you want to use cpu-heavy features, running both native and windows in prefix by using UDP input on windows and UDP output on native will actually be lighter weight overall and thus your game will run with higher fps. we recommend avoiding in-prefix windows opentrack where possible but acknowledge native does break, necessitating this

  • 1: download windows opentrack installer from the releases
  • 2: run the installer exe inside the prefix of your game install
  • 3: [ incomplete ]

you are now done with headtracking, handy link to next section

linuxtrack

[!note] this segment is incomplete

you are now done with headtracking, handy link to next section

UDEV rules

udev rules are used to set permissions and operation mode of a device.

  • 1: use a premade udev rule, or, create a new file named 97-yournamehere.rules (the number defines load order, just set it in the 90's)

[!tip] the repo contains pre-made rules in the repo's udev folder

  • 2: edit the rule to work for your device if needed (please let us know if pre-made rules do not work on your hardware), where idVendor & idProduct are your $VID & $PID. documentation for udev here. If you need help, join the matrix server. your file contents should look similar to the following:
# Custom Joystick Udev Rules

# Virpil
ACTION=="add", \
  ATTRS{idVendor}=="3344", ATTRS{idProduct}=="*", \
  MODE="0660", ENV{ID_INPUT_JOYSTICK}="1", TAG+="uaccess", \
  RUN+="/usr/bin/evdev-joystick --e %E{DEVNAME} --d 0"

[!tip] to identify your stick/throttle/pedals VID:PID, run lsusb in terminal. the output will look like the following: Bus ### Device ###: ID $VID:$PID $DeviceName

  • 3: move the file into /etc/udev/rules.d/
  • 4: reload your rules by running udevadm control --reload && udevadm trigger in terminal. you will need to replug your devices. Alternatively, restart your system.

You are now done, enjoy your flights! You may opt to check out Optional Extras

Optional Extras

contents:

Voice Activation

[!note] this segment is incomplete

Choose your voice input software:

LinVAM

linVAM is a community project, housed here

VoiceAttack with modified speech model

[!tip] VA is not free, nor is it made for linux. if you want to go this route, please use the trial to ensure you are satisfied with the results.

  • until someone has time to make a proper writeup here, vsTerminus has a great writeup on this here

Joystick Utilities

[!note] this segment is incomplete

VR

[!note] this segment is incomplete