From 331f8d1e191b6aa1425cddec85d88ccc8ee7bac2 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 23 Jun 2026 23:02:38 +0000 Subject: [PATCH] fix(kyber-linux): prevent duplicate shortcuts; fix sudo for mingw-w64 - Python shortcut script now checks for existing 'Kyber Launcher' entry and exits early instead of appending a duplicate on each re-run - Use sudo apt-get directly for mingw-w64 install so the password prompt works (previous chained || approach suppressed the interactive prompt) Co-Authored-By: Claude Sonnet 4.6 Claude-Session: https://claude.ai/code/session_01D8ckUJQtj1pH8jtAddBDZs --- scripts/setup-kyber-linux.sh | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/scripts/setup-kyber-linux.sh b/scripts/setup-kyber-linux.sh index 34a3b7b..ea90389 100755 --- a/scripts/setup-kyber-linux.sh +++ b/scripts/setup-kyber-linux.sh @@ -268,8 +268,11 @@ else # Need mingw-w64 to compile the shim if ! command -v x86_64-w64-mingw32-gcc >/dev/null 2>&1; then echo " Installing mingw-w64..." - apt-get install -y mingw-w64 >/dev/null 2>&1 || \ - sudo apt-get install -y mingw-w64 >/dev/null 2>&1 || true + sudo apt-get install -y mingw-w64 || { + echo " WARNING: mingw-w64 install failed. Install manually:" + echo " sudo apt install mingw-w64" + echo " Then re-run this script." + } fi if command -v x86_64-w64-mingw32-gcc >/dev/null 2>&1; then @@ -423,21 +426,19 @@ def i(key, value): # VDF int field shortcuts_file, appid_s, exe_win, start_dir = sys.argv[1:5] appid = int(appid_s) -# Preserve existing shortcuts if the file already exists and is parseable. -# For simplicity we append a new entry to a freshly built map; if a prior -# Kyber entry exists we still work because Steam dedups on appid+exe. existing = b'' idx = 0 if os.path.exists(shortcuts_file): try: with open(shortcuts_file, 'rb') as f: raw = f.read() - # crude: keep raw inner entries between the outer "shortcuts" wrapper - # by stripping the leading \x00shortcuts\x00 and trailing \x08\x08 head = b'\x00shortcuts\x00' if raw.startswith(head) and raw.endswith(b'\x08\x08'): existing = raw[len(head):-2] - # count existing entries' top-level index keys to avoid collision + # Skip if Kyber Launcher entry already present + if b'Kyber Launcher' in existing: + print(" Kyber Launcher already in shortcuts.vdf — skipping.") + sys.exit(0) idx = existing.count(b'\x01appid\x00') except Exception: existing = b''