CHADTOPIA LAUNCHER — NATIVE LINUX

Mint / Ubuntu / Debian: https://chadtopia.net/downloads/chadtopia-launcher.deb
Fedora / openSUSE:      https://chadtopia.net/downloads/chadtopia-launcher.rpm
Anything else:          https://chadtopia.net/downloads/Chad-Launcher-Linux.tar.gz
Windows:                https://chadtopia.net/launcher

1. Double-click the .deb (or .rpm) and click Install. From a terminal instead:
   sudo apt install ./chadtopia-launcher.deb    or    sudo dnf install ./chadtopia-launcher.rpm
   Then open "Chadtopia Launcher" from the applications menu (or run chadtopia-launcher).
   The launcher keeps its running copy in ~/.local/share/chadtopia/launcher and updates
   itself there, so no password is needed for updates. Uninstall: sudo apt remove
   chadtopia-launcher (or dnf remove); your mods and settings stay.
   Archive instead: extract it into a folder you own and open Chad-Launcher-Linux.
2. (archive only) If your file manager asks, choose Run.
3. Sign into native Linux Steam and install Project Zomboid's matching server build.
4. Let the launcher detect your Steam game folder, or choose it with Browse.
5. Click Play Chadtopia. Matching mods already installed through Steam are verified
   and copied locally into the launcher installation, without downloading again.
   Missing or different versions are downloaded to match the server. Subsequent
   launches reuse unchanged managed mods. Verify / repair checks installed files.

Initial supported target: x86_64 Linux Mint 22 / Ubuntu 24.04 or newer compatible
glibc 2.39 distributions, with a graphical X11 session or XWayland and native Steam.
The binary includes Python, Tk and its Python dependencies. No Wine or separate
Python installation is required to run the launcher. Optional game optimization
uses bash and unzip (or the system's Python 3), normally included on Mint/Ubuntu.
Flatpak Steam, Proton, ARM and older distributions have not been validated.

Movies & TV is an optional library: select the test broadcast, then Download chosen.
Use the matching in-game tape with a powered TV or configured cinema screen. The
initial test tape is admin-only; ordinary films can be added by the server owner.
Movies use ~/Zomboid/ChadMedia and the same player/library as Windows. No YouTube yet.

The launcher connects and queries chadtopia.net through DNS, offers
optimization/memory settings, and removes the
retired multi-Workshop downloader automatically when the game is closed. The separate
movie helper remains. It sends the game's bounded console log to Chadtopia at five
and ten minutes, then every ten minutes (sooner after 3 MiB of new log, at least five
minutes apart) and on game exit, with duplicate suppression, as Windows does. It also
answers log requests from the game (Zomboid/Lua/ChadtopiaLogRequest.txt, the SEND LOG
button) at once. Closing the window does not stop this: the launcher keeps running
without a window until the game exits.

Returning to normal Steam play: the launcher no longer patches the game's Lua
login screen or installs its rejoin/lean-join Lua helpers. On opening the launcher
with the game closed, it repairs recognized files left by older versions using
verified originals and keeps backups. If an old patch has also been edited, repair
stops with instructions instead of replacing unknown changes. The launcher-specific
Java helpers and memory choice use ProjectZomboid64.chadtopia.json; Steam uses the
game's own settings. The game's normal account controls remain available.
Automatic rejoin and the custom saved-login/lean-join enhancements are retired.
The separately selected PZ Optimization installation remains installed; this
repair does not uninstall it or reset unrelated player settings.

Automatic updates verify a signed release containing BOTH Windows and Linux builds,
then replace this executable and reopen it. Keep the launcher in a writable folder.
If /tmp is mounted noexec, choose an executable temporary filesystem with TMPDIR.
The publisher releases both platforms through one tested build/publication command.

Join-time Lua warm-up (ChadLuaWarm): with PZ Optimization installed, the launcher starts the game with a small helper that
prepares mod Lua files on spare CPU cores while the game loads, so joining is faster. To turn it off, create an empty file named
ChadLuaWarm.off in ~/Zomboid (next to options.ini); delete the file to turn it back on. Each launch's decision (on, or off and why)
is one line mentioning ChadLuaWarm in ~/Zomboid/chadtopia-launcher.log. Your own ProjectZomboid64.json is never changed for it.

Five more speed helpers, same rules (PZ Optimization needed, launcher's own settings copy only, one log line each per launch):
ChadZombieGate (far-zombie updates), ChadAnimFast (zombie animation lookups), ChadSnowFast (snow footprints), ChadKahluaJit
(compiles only the Lua functions named in ~/Zomboid/chad-kjit-allow.txt, which the launcher writes; an empty list compiles nothing)
and ChadJavaCall (faster Lua to Java calls; it switches itself off after a game or PZ Optimization update).
To turn one off, create an empty file in ~/Zomboid: chad-zgate.off, chad-animfast.off, chad-snowfast.off, chad-kjit.off or
chad-jcall.off. The
launcher then leaves that helper out (and the helper itself also checks the same file).

Hardware line: at every Play the launcher writes one line starting "[hw]" into ~/Zomboid/chadtopia-launcher.log (which is sent to the
Chadtopia server like the game's console log): the kind of drive the mods and the game are on (NVMe, SSD, HDD or unknown), total and
free memory, the number of CPU cores and the CPU model, hours since boot, and the Linux name and version. It is there to find out why
joining is slow on some PCs. No names, paths or ids are in it; a part the launcher cannot read says "unknown", and it never delays Play.

Mods/receipts: ~/Zomboid; settings: ~/.config/chadtopia (honors XDG_CONFIG_HOME).
Game configuration changes have adjacent .chadtopia-*.bak backups.
Uninstall mods removes recorded, unchanged files; edited/unrelated files and saves
remain. Extra files in managed mod folders are preserved outside mods in a
.chadtopia-preserved-* folder to avoid game checksum conflicts.

Source/maintenance: pz-mod-audits/chad-launcher-20261014/linux; ../release.py.
Both platforms check existing Steam Workshop libraries before downloading mods.
Steam originals stay untouched. Linux downloads missing/different items separately;
Windows can also use the full-pack bootstrap when no Steam items are available.

Third-party notices: Python and Tk retain their respective licenses in the bundled
runtime. cryptography is Apache-2.0/BSD; PyInstaller uses its GPL exception for bundled
applications. The movie helper retains Byte Buddy's license/notice within its JAR.
PZ_Optimization installer is fetched at the same pinned upstream revision as Windows:
https://github.com/xD3I/PZ_Optimization/tree/24f32e446cb9797e2803ac55788e851c1f55b028
The tests/pzopt-install.pinned.sh copy is a build-time pin fixture, not bundled in the
player archive. Game assets, Steam, and third-party Workshop mods are not included.
