Files
omarchy-sc/README.md
T
jbergner 4a48f9b8c5
Citizen Launcher CI / verify (push) Failing after 1m18s
Citizen Launcher CI / arch-package (push) Failing after 1m19s
Citizen Launcher CI / rpm-package (push) Failing after 1m21s
v1.1.1
2026-09-01 19:50:44 +02:00

5.7 KiB

Citizen Launcher 1.1.1

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.1 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 ~/.local user 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.1_amd64.deb

Fedora / Nobara / RHEL family

sudo dnf install ./dist/citizen-launcher-1.1.1-1.linux.x86_64.rpm

openSUSE Tumbleweed / Slowroll

sudo zypper install ./dist/citizen-launcher-1.1.1-1.linux.x86_64.rpm

Arch / Manjaro / EndeavourOS / CachyOS / Omarchy

sudo pacman -U ./dist/citizen-launcher-1.1.1-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_count and 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.