Citizen Launcher 1.1.2
Citizen Launcher is a cross-distribution Star Citizen setup, launch, repair and maintenance application for Linux. The same static Go core runs on Debian/Ubuntu, Fedora/RHEL derivatives, Arch derivatives, openSUSE and generic glibc-based desktop Linux. Omarchy support is an optional integration, not a runtime requirement.
Product goal
Install Citizen Launcher → click setup → log into RSI → install/play Star Citizen.
The launcher owns the fragile user-space gaming stack so users do not have to pick Wine builds, copy DXVK DLLs or rebuild prefixes by hand. Kernel, GPU driver, firmware and base-distribution upgrades remain owned by the Linux distribution.
The 1.0.1 gaming path was confirmed end-to-end on real hardware: launcher, RSI installation and Star Citizen playability. 1.1.2 keeps that gaming core and adds native multi-distribution packaging/update integration.
Supported Linux families
- Debian / Ubuntu / Mint / Pop!_OS / Zorin / TUXEDO OS →
.deb - Fedora / Nobara / RHEL-family →
.rpm - Arch / Manjaro / EndeavourOS / CachyOS / Garuda / Omarchy →
.pkg.tar.zst - openSUSE Tumbleweed / Slowroll →
.rpm - immutable Fedora/SteamOS/openSUSE variants → safe
~/.localuser install - other glibc x86-64 desktops → generic tarball / user installer
See DISTRO_SUPPORT.md for the detailed matrix and immutable-system behavior.
Easiest install from the project bundle
./INSTALLIEREN.sh
The installer detects the distro family, prefers a native package found in dist/, and falls back to the portable user installation when that is safer or no native package is present.
Debian / Ubuntu / Mint
sudo apt install ./dist/citizen-launcher_1.1.2_amd64.deb
Fedora / Nobara / RHEL family
sudo dnf install ./dist/citizen-launcher-1.1.2-1.linux.x86_64.rpm
openSUSE Tumbleweed / Slowroll
sudo zypper install ./dist/citizen-launcher-1.1.2-1.linux.x86_64.rpm
Arch / Manjaro / EndeavourOS / CachyOS / Omarchy
sudo pacman -U ./dist/citizen-launcher-1.1.2-1-x86_64.pkg.tar.zst
Generic / immutable desktop Linux
./install.sh
For Omarchy plus the optional bar widget:
./install-omarchy.sh
What Citizen Launcher manages
- hardware/Vulkan/AVX/RAM/storage/filesystem preflight
vm.max_map_countand file-limit preparation- newest locally compatible stable LUG Wine runner with rollback retention
- isolated Wine self-tests before activation
- deterministic checksum-pinned Winetricks base setup
- verified portable PowerShell Core + RSI-compatible Wine wrapper
- DXVK download, verification, installation and native DLL overrides
- RSI
latest.yml, SHA-512 verified installer download and repair - Star Citizen desktop integration and stable launch path
- single-instance GUI, operation locking and duplicate game/launcher prevention
- automatic gaming-stack maintenance
- verified native package self-updates on mutable Debian/RPM/Arch systems
- safe user-binary updates on immutable/generic systems
- privacy-conscious support bundle and rotating logs
Native package updates
The system package timer only updates Citizen Launcher itself. It never performs a full distro upgrade.
Package selection is tied to the installed package database:
- DPKG package →
.deb→ APT - RPM package →
.rpm→ RPM database - pacman package →
.pkg.tar.zst→ pacman - user installation → generic tarball → atomic user update
Before privileged installation, the release asset SHA-256 and package name/version/architecture are verified. GitHub sources can use the API digest; Gitea sources use the release SHA256SUMS.txt generated by the release workflow. Immutable base systems are excluded from direct system-package self-updates.
GUI
citizen-launcher gui
The GUI is embedded in the binary and served only on 127.0.0.1 behind a random per-process route. A file lock guarantees one GUI backend per user; opening Citizen Launcher again reuses the existing instance.
Data locations
~/.config/citizen-launcher~/.local/share/citizen-launcher~/.local/state/citizen-launcher~/.cache/citizen-launcher- default Wine prefix:
~/Games/star-citizen
Game data is deliberately preserved during launcher uninstall/reinstall.
Build
./build.sh
./packaging/build-all.sh
Individual native builders:
./packaging/build-deb.sh
./packaging/build-rpm.sh
./packaging/build-arch.sh
./packaging/build-tarball.sh
RPM and Arch packages are built in native Fedora and Arch containers by Gitea Actions. Tag releases are published directly through the Gitea REST API; no gh CLI or GitHub release token is required.
Gitea Actions
CI/CD lives in .gitea/workflows/. ci.yml runs the regression suite plus native Fedora/Arch package builds. release.yml reacts to v* tags, creates the Gitea Release through the built-in job token, uploads .deb, .rpm, .pkg.tar.zst and the generic tarball, then publishes SHA256SUMS.txt.
Packages produced by the Gitea release workflow embed that Gitea instance/repository as their self-update source, so moving CI to Gitea does not leave runtime updates pointing back to GitHub. See GITEA.md.
Verification
./tests/full-verify.sh
The release gate covers shell syntax, gofmt, Go unit/regression tests, go vet, static amd64 build, race detector, Omarchy integration, Debian payload verification and static validation of all native packaging definitions. Release CI additionally builds and inspects RPM and pacman packages inside their native distro environments.
See ARCHITECTURE.md, DISTRO_SUPPORT.md, packaging/SELF_UPDATE.md and RELEASE_NOTES.md for details.