proton-command-center 1.15.0-1
“Per-game launch options, Proton selection, DLSS DLL management, MangoHud benchmarks, and controller navigation for Steam on Linux”
User systemd watchdog with auto-restart and process killingHarvests credentials from multiple target apps
SHA-256d937896414f87038bab2acbb2b69089505162498d0f635b3e3fa0e962153541d
MaleculeO(P)Md(Pa)
Evidence
7:16… il
8
9APP_NAME="proton-command-center"
10DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
11APP_DIR="$DATA_HOME/$APP_NAME/app"
12BIN_DIR="$HOME/.local/bin"
13DESKTOP_DIR="$HOME/.local/share/applications"
14SVC_DIR="$HOME/.config/systemd/user"
15SRC="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
16# Single source of truth: read it from pcc.py rather than hardcoding, which
17# previously shipped a stale "1.5.0" into the banner AND the systemd unit
18# Description, so journalctl reported the wrong version forever.
19VER="$(grep -m1 -o 'VERSION = "[0-9][0-9.]*"' "$SRC/pcc.py" | grep -o '[0-9][0-9.]*' || true)"
20[ -n "$VER" ] || { printf '\033[31mfail\033[0m cannot read VERSION from %s/pcc.py\n' "$SRC"; exit 1; }
21
22g(){ printf '\033[32m ok\033[0m %s\n' "$1"; }
23y(){ printf '\033[33mwarn\033[0m %s\n' "$1"; }
24r(){ printf '\033[31mfail\033[0m %s\n' "$1"; }
25
26# --- safety guard: never let a bad HOME turn rm -rf loose ---------------------
27[ -n "${HOME:-}" ] && [ "$HOME" != "/" ] && [ -d "$HOME" ] || { r "unsafe HOME"; exit 1; }
28case "$APP_DIR" in
37:11… emoving old backends"
38
39# stop + disable the user service if present
40if systemctl --user list-unit-files 2>/dev/null | grep -q "$APP_NAME.service"; then
41 systemctl --user stop "$APP_NAME.service" 2>/dev/null || true
42 systemctl --user disable "$APP_NAME.service" 2>/dev/null || true
43 g "stopped & disabled user service"
44fi
45
46# remove any user-level unit (this is the one that shadows pacman + causes drift)
47if [ -f "$SVC_DIR/$APP_NAME.service" ]; then
48 rm -f "$SVC_DIR/$APP_NAME.service"
49 g "removed user service unit"
50fi
51
52# kill any running backend by script path (catches orphans systemd forgot)
53pkill -f "$APP_NAME/app/pcc.py" 2>/dev/null && g "killed user-install backend" || true
54pkill -f "/usr/share/$APP_NAME/pcc.py" 2>/dev/null && g "killed packaged backend" || true
55
56# free the port no matter what still holds it
57if command -v fuser >/dev/null 2>&1; then
58 fuser -k 8686/tcp 2>/dev/null && g "cleared port 8686" || true
59fi
60
61# warn about (but …
24 (root / "steamapps/appmanifest_12345.acf").write_text(
25 '"AppState"\n{\n\t"appid"\t\t"12345"\n\t"name"\t\t"Test Game"\n'
26 '\t"installdir"\t\t"TestGame"\n\t"SizeOnDisk"\t\t"52428800"\n}\n')
27 (root / "steamapps/libraryfolders.vdf").write_text(
28 f'"libraryfolders"\n{{\n\t"0"\n\t{{\n\t\t"path"\t\t"{root}"\n\t}}\n}}\n')
29 (root / "userdata/12345678/config/localconfig.vdf").write_text(
30 '"UserLocalConfigStore"\n{\n\t"friends"\n\t{\n'
31 '\t\t"VoiceReceiveVolume"\t\t"0.75"\n\t}\n'
32 '\t"Software"\n\t{\n\t\t"Valve"\n\t\t{\n\t\t\t"Steam"\n\t\t\t{\n'
33 '\t\t\t\t"apps"\n\t\t\t\t{\n\t\t\t\t\t"12345"\n\t\t\t\t\t{\n'
408 # ---- owned library ----
409 def test_steamid_and_owned_games(self):
410 (self.root / "config").mkdir(exist_ok=True)
411 (self.root / "config/loginusers.vdf").write_text(
412 '"users"\n{\n\t"76561198012345678"\n\t{\n'
413 '\t\t"MostRecent"\t\t"1"\n\t}\n}\n')
414 self.assertEqual(pcc.steamid64(self.root), "76561198012345678")
415 pcc.save_config({"steam_api_key": "K"})
855 # _compat_dirs deliberately includes absolute system paths
856 # (~/.steam/root/..., /usr/share/steam/...) because real installs keep
857 # compat tools there. That makes this test read the developer's own
858 # machine unless it's pinned: it passed in a container with no Steam and
859 # failed on a real one, where actual builds leaked into the union.
860 real = pcc._compat_dirs
No evidence locations were recorded for this file. Raw result