{"id":18425768,"url":"https://github.com/faforever/faf-linux","last_synced_at":"2025-04-06T12:08:00.518Z","repository":{"id":54502672,"uuid":"315546903","full_name":"FAForever/faf-linux","owner":"FAForever","description":"Scripts for Forged Alliance Forever (FAF) on Linux","archived":false,"fork":false,"pushed_at":"2025-02-25T20:35:21.000Z","size":135,"stargazers_count":83,"open_issues_count":15,"forks_count":10,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-30T11:06:34.365Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FAForever.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-24T07:05:06.000Z","updated_at":"2025-03-14T15:58:56.000Z","dependencies_parsed_at":"2023-02-18T22:50:28.250Z","dependency_job_id":"cb15a44b-6937-4cbb-a39b-7ccdb039b6b9","html_url":"https://github.com/FAForever/faf-linux","commit_stats":{"total_commits":124,"total_committers":9,"mean_commits":"13.777777777777779","dds":"0.16935483870967738","last_synced_commit":"b39441688847ab0d4b56371f7a7336890bd49a10"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffaf-linux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffaf-linux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffaf-linux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffaf-linux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FAForever","download_url":"https://codeload.github.com/FAForever/faf-linux/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478321,"owners_count":20945266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T05:05:30.968Z","updated_at":"2025-04-06T12:08:00.511Z","avatar_url":"https://github.com/FAForever.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FAF on Linux\n\nA set of scripts to automatically set up Supreme Commander: Forged Alliance with [Forged Alliance Forever](https://faforever.com/) on Linux. Tested on Ubuntu, Fedora, and Arch, should work on other distributions as well.\n\n## Setup instructions\n\n1. Install prerequisites from your distribution's package manager:\n   - Debian and derivatives (Ubuntu, Pop!\\_OS, Linux Mint, etc):\n     - Ensure `i386` architecture is enabled: `sudo dpkg --add-architecture i386`\n     - `sudo apt install git wget jq cabextract libvulkan1:amd64 libvulkan1:i386 libpulse0:amd64 libpulse0:i386 libfreetype6:amd64 libfreetype6:i386 libxcomposite1:amd64 libxcomposite1:i386 libxrandr2:amd64 libxrandr2:i386 libxfixes3:amd64 libxfixes3:i386 libxcursor1:amd64 libxcursor1:i386 libxi6:amd64 libxi6:i386`\n   - Fedora and Red Hat-based:\n     - `sudo dnf install git wget jq cabextract vulkan-loader.x86_64 vulkan-loader.i686 pulseaudio-libs.x86_64 pulseaudio-libs.i686 freetype.x86_64 freetype.i686 libXcomposite.x86_64 libXcomposite.i686 libXrandr.x86_64 libXrandr.i686 libXfixes.x86_64 libXfixes.i686 libXcursor.x86_64 libXcursor.i686 libXi.x86_64 libXi.i686`\n   - Arch Linux and derivatives (Manjaro, EndeavourOS, etc):\n     - If you haven't enabled `multilib` in `pacman` yet, go to edit file `/etc/pacman.conf` and make sure the following are uncommented (including header):\n         ```\n         [multilib]\n         Include = /etc/pacman.d/mirrorlist\n         ```\n         And then upgrade the system `sudo pacman -Syu`\n     - `sudo pacman -Syu git wget jq cabextract vulkan-icd-loader lib32-vulkan-icd-loader libpulse lib32-libpulse freetype2 lib32-freetype2 libxcomposite lib32-libxcomposite libxrandr lib32-libxrandr libxfixes lib32-libxfixes libxcursor lib32-libxcursor libxi lib32-libxi`\n   - Gentoo Linux:\n      - Add following to `/etc/portage/package.use/faforever` (or whatever file you want in that folder):\n        ```\n        media-libs/vulkan-loader abi_x86_32\n        media-libs/libpulse abi_x86_32\n        media-libs/freetype abi_x86_32\n        x11-libs/libXcomposite abi_x86_32\n        x11-libs/libXrandr abi_x86_32\n        x11-libs/libXfixes abi_x86_32\n        x11-libs/libXcursor abi_x86_32\n        x11-libs/libXi abi_x86_32\n        ```\n      - `sudo emerge -avuND @world`\n      - `sudo emerge -a dev-vcs/git net-misc/wget app-misc/jq app-arch/cabextract media-libs/vulkan-loader media-libs/libpulse media-libs/freetype x11-libs/libXcomposite x11-libs/libXrandr x11-libs/libXfixes x11-libs/libXcursor x11-libs/libXi` (feel free to exclude any ebuilds that is already present in your system, no need to rebuild)\n   - NixOS and other Nix-based environments:\n     - Ensure graphics drivers are installed\n     - Run `nix-shell -p steam-run jq cabextract wget git --run \"steam-run bash\"` to start a shell with the necessary environment\n     - Proceed with the rest of the installation steps below. All scripts, including `./run`, will need to be executed within this environment.\n     - The desktop file generated by `install-shortcut.sh` will need to be edited to include the command above\n     - In the future, the scripts should seamlessly support a Nix environment\n     - Please see \u003chttps://github.com/FAForever/faf-linux/issues/38\u003e for more information\n   - Other distributions:\n     - Commands needed: `git`, `wget`, `jq`, `cabextract`\n     - Libraries needed:\n       - Both 32-bit and 64-bit versions of:\n         - `libvulkan.so.1` (Vulkan ICD loader)\n         - `libpulse.so.0` (pulseaudio client library, required even if using PipeWire)\n         - `libfreetype.so.6` (FreeType font rendering library)\n         - `libXcomposite.so.1` (XComposite extension client library)\n         - `libXrandr.so.2` (XRandR extension client library)\n         - `libXfixes.so.3` (XFixes extension client library)\n         - `libXcursor.so.1` (XCursor extension client library)\n         - `libXi.so.6` (XInput extension client library)\n   - **Note:** 32-bit graphics drivers are required. If using Intel or AMD, install the 32-bit version of `mesa-vulkan-drivers`. On Fedora, this is `mesa-vulkan-drivers.i686`. On Debian, this is `mesa-vulkan-drivers:i386`. On Arch, this is `lib32-vulkan-DRIVERNAME`, where DRIVERNAME is `radeon` or `intel`. If using Nvidia, ensure you have the 32-bit driver package installed. These should already be installed, although they may be missing if you have installed Steam within Flatpak.\n1. Install Steam, then install Supreme Commander: Forged Alliance from Steam\n   - In Properties -\u003e Compatibility, check \"Force the use of a specific Steam Play compatibility tool\", and select \"Proton Experimental\"\n   - Start the game from Steam. This step is needed to download and unpack Proton Experimental.\n   - **Note:** the game may lag horribly or not even start. This is fine, as the rest of this guide should still work.\n   - If you want to play Forged Alliance on Steam, set `PROTON_NO_ESYNC=1 PROTON_NO_FSYNC=1 %command%` in launch options. If you only wish to play on FAF, this step is not necessary.\n1. Clone this repository\n   - Open a terminal where the installation should be located, then run `git clone https://github.com/FAForever/faf-linux`\n   - This will create a new folder named faf-linux, where the client will be installed.\n   - Do *not* put `faf-linux` within the game directory or any other Steam-managed directories. It will not function properly.\n1. Run `./setup.sh` to set up the local wine prefix, the FAF client, java, and others\n   - Note: the script will install everything into the path where you cloned this repository. If you wish to move the installation later, edit the paths in `common-env` then re-run `./set-client-paths.sh` and `./install-shortcut.sh`.\n   - Note: if you bought the game from GOG and installed it with Lutris, you need to run the setup like this: `BYPASS_STEAM=1 GAME_PATH=\"/path/to/Lutris/gog/supreme-commander-forged-alliance/drive_c/GOG Games/Supreme Commander Forged Alliance\" PROTON_PATH=\"/path/to/Steam/steamapps/common/Proton - Experimental\" ./setup.sh`\n1. Start the FAF client with `./run` and log in\n1. After logging in, close the FAF client and run `./set-client-paths.sh`\n1. To launch FAF, run `./run`\n1. If you wish to launch FAF without using the terminal, run `./install-shortcut.sh`. FAF will show up as \"Forged Alliance Forever\" in your application launcher.\n\n## How to update after installation\n\n1. Run `./update.sh perform` to update necessary components automatically\n1. The update script will not automatically remove old versions currently. If new versions work, old versions are safe to delete.\n\n## Manually updating individual components\n\nThe script `./update-component.sh` is provided for convenient updating of certain parts. Generally you do not need to use this.\n\n- To update dxvk, run `./update-component.sh dxvk \u003cnew version\u003e`. Versions look like \"1.9.3\".\n- To update the FAF client, run `./update-component.sh faf-client \u003cnew version\u003e`. Versions look like \"2021.10.0\".\n- To update java, run `./update-component.sh java \"\u003cjava url\u003e\"`.\n  - The FAF client (at time of writing) wants Java 17.\n  - Java URL is currently \u003chttps://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.5%2B8/OpenJDK17U-jdk_x64_linux_hotspot_17.0.5_8.tar.gz\u003e\n  - These may change in the future. Check the `versions` file for current working URLs.\n\n## Help, it doesn't work!\n\nPlease check the section below for common troubleshooting steps. Failing that, please ping `@iczero` on the [FAF Discord guild](https://discord.com/invite/hgvj6Af) in the `tech-support-forum` channel.\n\n## Weird issues and other nonsense\n\n- Black screen immediately after launching the game: follow the steps below to enable the virtual desktop.\n  - This only seems to happen on Nvidia GPUs.\n- Forged Alliance minimizes itself on Alt-Tab: run `./launchwrapper winecfg`, go to \"Graphics\", then check the \"Emulate a virtual desktop\" box.\n  - ~~Warning: as of 2022-10-24, this *does* cause everything to break. You have been warned.~~ This is no longer the case.\n  - To run the game in fullscreen with the virtual desktop, set the virtual desktop resolution to your monitor's resolution.\n  - Gamescope is an alternative, see below\n- Mouse cursor stuck, can't click things in lobby: quit out of the game and the FAF client, run `./run-offline`, click past the intro videos until you get to the main menu, exit the game, then try starting a game from FAF again\n- Game crashes with \"Unable to create Direct3D\", logs have wine error \"Application requires child window rendering\": libXcomposite is missing or failed to initialize, try installing `libxcomposite` or `libXcomposite` from package manager (the 32-bit version as well)\n  - on Debian and derivatives (including Ubuntu), install `libxcomposite:amd64` and `libxcomposite:i386`\n  - on Fedora and Red Hat derivatives, install `libXcomposite` and `libXcomposite.i686`\n  - on Arch and derivatives, install `libxcomposite` and `lib32-libxcomposite`\n  - see \u003chttps://github.com/ValveSoftware/wine/blob/46a904624f1c3f62df806e9f0bff2bfda6bdf727/dlls/winex11.drv/vulkan.c#L276\u003e, \u003chttps://github.com/ValveSoftware/wine/blob/46a904624f1c3f62df806e9f0bff2bfda6bdf727/dlls/winex11.drv/x11drv_main.c#L501\u003e\n- FAF client crashes on launch with massively enormous error message, at the bottom it says something along the lines of \"cannot use an unresolved DNS server address\": Chances are there's something in your `/etc/resolv.conf` that netty does not understand (for example, scoped IPv6 addresses). Install `systemd-resolved` if possible.\n- If you encounter strange display issues, consider using gamescope. In `common-env`, set `use_gamescope=\"1\"` (or add that line if it does not already exist). Gamescope does not support the Nvidia driver.\n- Mod selector in client doesn't work: this has been fixed by a recent commit, however it only takes effect on new installations. To fix the problem without a reinstall, find `game_data_path` in `common-env`, then replace `Local Settings/Application Data` with `AppData/Local`.\n- Failed to create vulkan instance\n  - May appear as:\n    - `0024:err:vulkan:__wine_create_vk_instance_with_callback Failed to create instance`\n    - `0024:err:vulkan:wine_vk_instance_load_physical_devices Failed to enumerate physical devices, res=-3`\n    - `terminate called after throwing an instance of 'dxvk::DxvkError'`\n  - Possible issues:\n    - Vulkan drivers are not installed. Please install the appropriate Vulkan drivers for your GPU and distribution and install them.\n    - 32-bit graphics drivers (including Vulkan libraries) are not installed. Please ensure both 32-bit and 64-bit graphics drivers, including Vulkan support, are installed.\n    - You are on Arch and have accidentally installed `lib32-amdvlk`. AMDVLK is the old AMD Vulkan driver and causes many issues. Unless you are sure you need AMDVLK, uninstall `lib32-amdvlk`, and if necessary, install `lib32-vulkan-radeon` (newer AMD RADV driver) in its place.\n- No adapters found\n  - May appear as:\n    - `Skipping Vulkan 1.2 adapter`\n    - `DXVK: No adapters found.`\n    - \"Requested display count exceeds those available.\"\n  - Your graphics driver lacks support for features required by the installed dxvk version. Please update your graphics drivers if possible.\n  - If updating graphics drivers is not an option, manually downgrade dxvk (`./update-component.sh dxvk 1.10.3`) then add the line `dxvk_pin_version=\"1\"` at the bottom of `common-env` to prevent the updater script from reverting to a newer version of dxvk.\n- `setup.sh` hangs on the `wineboot` step\n  - Please check to see if you have all required libraries installed. Missing `libXrandr` will cause `wineboot` to hang on Proton, see \u003chttps://github.com/ValveSoftware/wine/issues/147\u003e.\n- Some errors related to missing effects or missing maps\n  - May be caused by the client failing to update game files\n  - Try deleting `~/.faforever` (create backup first if necessary)\n  - Proceed from step 6 of the guide (start client, log in, close client, run `./set-client-paths.sh`)\n\n## Why should you use this\n\n- Years of my own suffering have culminated in this massive pile of hacks\n- I suck at faf so I literally spend more time maintaining these scripts than playing faf\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaforever%2Ffaf-linux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffaforever%2Ffaf-linux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaforever%2Ffaf-linux/lists"}