Files
omarchy-sc/README.md
T
jbergner 5aadfd3427
Citizen Launcher CI / arch-package (push) Failing after 25s
Citizen Launcher CI / rpm-package (push) Failing after 40s
Citizen Launcher CI / verify (push) Successful in 2m44s
v1.1.2
2026-09-01 20:04:15 +02:00

150 lines
5.7 KiB
Markdown

# 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 `~/.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
```bash
./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
```bash
sudo apt install ./dist/citizen-launcher_1.1.2_amd64.deb
```
### Fedora / Nobara / RHEL family
```bash
sudo dnf install ./dist/citizen-launcher-1.1.2-1.linux.x86_64.rpm
```
### openSUSE Tumbleweed / Slowroll
```bash
sudo zypper install ./dist/citizen-launcher-1.1.2-1.linux.x86_64.rpm
```
### Arch / Manjaro / EndeavourOS / CachyOS / Omarchy
```bash
sudo pacman -U ./dist/citizen-launcher-1.1.2-1-x86_64.pkg.tar.zst
```
### Generic / immutable desktop Linux
```bash
./install.sh
```
For Omarchy plus the optional bar widget:
```bash
./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
```bash
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
```bash
./build.sh
./packaging/build-all.sh
```
Individual native builders:
```bash
./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
```bash
./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.