From 88ff94e17350623f758a68706994f14f709ef1f6 Mon Sep 17 00:00:00 2001 From: Taiga Date: Sun, 21 Jun 2026 09:03:49 +0000 Subject: [PATCH] [2026-06-21] taiga-vault: family/how-to/htpc-emulators-setup.md family/how-to/htpc-steam-nonsteam-shortcuts.md --- family/how-to/htpc-emulators-setup.md | 2 +- .../how-to/htpc-steam-nonsteam-shortcuts.md | 37 ++++++++++++------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/family/how-to/htpc-emulators-setup.md b/family/how-to/htpc-emulators-setup.md index b3e585f8..f08abc02 100644 --- a/family/how-to/htpc-emulators-setup.md +++ b/family/how-to/htpc-emulators-setup.md @@ -412,7 +412,7 @@ CACHE="$HOME/.var/app/org.libretro.RetroArch/config/retroarch/system/Mupen64plus | Игра | ROM slug | Статус | |------|----------|--------| -| Animal Crossing New Horizons | `animal_crossing.nsp` | ❓ | +| Animal Crossing New Horizons | `animal_crossing.nsp` | ✅ работает | | Donkey Kong Country Tropical Freeze | `donkey_kong.nsp` | ✅ работает | | Super Mario Odyssey | `mario_odyssey.nsp` | ✅ работает | | Mario Kart 8 Deluxe | `mario_kart_8.nsp` | ✅ работает | diff --git a/family/how-to/htpc-steam-nonsteam-shortcuts.md b/family/how-to/htpc-steam-nonsteam-shortcuts.md index 8456e9c2..10b3e172 100644 --- a/family/how-to/htpc-steam-nonsteam-shortcuts.md +++ b/family/how-to/htpc-steam-nonsteam-shortcuts.md @@ -16,38 +16,46 @@ systemctl --user start gamescope-session-plus@steam.service Если после stop Steam всё ещё активен — повторить. -## Единственный правильный способ — vdf.binary_load +## Процедура (один bash-скрипт) -**Процедура (один py-скрипт, с бэкапом):** - -1. Остановить Steam -2. Сделать бэкап shortcuts.vdf -3. Отредактировать VDF -4. Запустить Steam +Один скрипт на HTPC: останавливает Steam → делает бэкап → редактирует VDF → запускает Steam. Использовать модуль `vdf` (установлен на HTPC через pip). **Никогда** не редактировать бинарный VDF через ручную сборку байтов или замену строк — это ломает файл. +```bash +#!/bin/bash +set -e + +# 1. Остановить Steam +systemctl --user stop gamescope-session-plus@steam.service +sleep 2 + +# 2. Бэкап +cp ~/.steam/steam/userdata/147839491/config/shortcuts.vdf{,.bak} + +# 3. Редактировать VDF (скрипт лежит рядом) +python3 /path/to/edit_vdf.py + +# 4. Запустить Steam +systemctl --user start gamescope-session-plus@steam.service +``` + +Python-скрипт (`edit_vdf.py`): ```python import os, vdf, shutil, binascii, struct vdf_path = os.path.expanduser('~/.steam/steam/userdata/147839491/config/shortcuts.vdf') -# 1. Бэкап -shutil.copy2(vdf_path, vdf_path + '.bak') - -# 2. Загрузить существующий with open(vdf_path, 'rb') as f: data = vdf.binary_load(f) shortcuts = data.get('shortcuts', {}) -# 3. Вычислить appid (алгоритм Steam) def compute_appid(name, exe): key = exe + name top = binascii.crc32(key.encode('utf-8')) | 0x80000000 return struct.unpack('i', struct.pack('I', top))[0] -# 4. Создать entry next_idx = str(len(shortcuts)) shortcuts[next_idx] = { 'AppName': 'Game Name', @@ -68,12 +76,13 @@ shortcuts[next_idx] = { 'tags': {}, } -# 5. Записать data['shortcuts'] = shortcuts with open(vdf_path, 'wb') as f: vdf.binary_dump(data, f) ``` +Скрипты на HTPC загружать через scp, не через heredoc. + ## CompatToolMapping (Proton) в config.vdf После добавления shortcut нужно прописать Proton в текстовом `config.vdf`: