Expand local_machine docs and automation for connectivity, games, and ops.

Add proxy/VPN/telegram launchd and emergency runbooks; reorganize apps docs;
document JA3 CrossOver runbook and Wine troubleshooting; add GOG/HoMM game
scripts, disk cleanup guides, and gitea push-via-proxy helper. Ignore temp/.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
ahauimix
2026-06-01 08:12:19 +03:00
parent a39ef89125
commit 1938b7c743
135 changed files with 9933 additions and 388 deletions

View File

@@ -0,0 +1,58 @@
#!/usr/bin/env bash
# DXMT (D3D10/11 → Metal) для JA3 без GPTK. JA3 на D3D12 всё равно нужен GPTK; скрипт + -graphicsapi d3d11.
set -euo pipefail
GOG_DIR="$(cd "$(dirname "$0")" && pwd)"
GAMES_DIR="$(cd "${GOG_DIR}/.." && pwd)"
# shellcheck source=config.sh
source "${GOG_DIR}/config.sh"
DXMT_CACHE="${GAMES_DIR}/cache/dxmt"
DXMT_TAR="${DXMT_CACHE}/dxmt-v0.80-builtin.tar.gz"
DXMT_URL="https://github.com/3Shain/dxmt/releases/download/v0.80/dxmt-v0.80-builtin.tar.gz"
WINE_LIB="${WHISKY_LIBS}/Libraries/Wine/lib"
WINE_LIB64="${WINE_LIB}/wine/x86_64-windows"
WINE_UNIX="${WINE_LIB}/wine/x86_64-unix"
SYS32="${BOTTLE_DIR}/drive_c/windows/system32"
gog_wine_check
mkdir -p "${DXMT_CACHE}" "${SYS32}"
[[ -f "${DXMT_TAR}" ]] || curl -L --fail -o "${DXMT_TAR}" "${DXMT_URL}"
tar -xzf "${DXMT_TAR}" -C "${DXMT_CACHE}"
# builtin layout: bin/ or root with dlls — find files
DXMT_ROOT="${DXMT_CACHE}"
for sub in dxmt-v0.80-builtin bin .; do
[[ -f "${DXMT_CACHE}/${sub}/d3d11.dll" ]] && DXMT_ROOT="${DXMT_CACHE}/${sub}" && break
done
[[ -f "${DXMT_ROOT}/d3d11.dll" ]] || DXMT_ROOT="$(find "${DXMT_CACHE}" -name d3d11.dll -print -quit | xargs dirname)"
install_one() {
local src="$1" dest="$2"
[[ -f "${src}" ]] || return 0
cp -f "${src}" "${dest}/"
}
install_one "${DXMT_ROOT}/winemetal.so" "${WINE_UNIX}"
install_one "${DXMT_ROOT}/winemetal.dll" "${WINE_LIB64}"
install_one "${DXMT_ROOT}/winemetal.dll" "${SYS32}"
install_one "${DXMT_ROOT}/d3d11.dll" "${WINE_LIB64}"
install_one "${DXMT_ROOT}/dxgi.dll" "${WINE_LIB64}"
install_one "${DXMT_ROOT}/d3d10core.dll" "${WINE_LIB64}"
# Только wine lib + system32 (не в папку игры — иначе конфликт с overrides).
install_one "${DXMT_ROOT}/d3d11.dll" "${SYS32}"
install_one "${DXMT_ROOT}/dxgi.dll" "${SYS32}"
install_one "${DXMT_ROOT}/d3d10core.dll" "${SYS32}"
export WINEPREFIX="${BOTTLE_DIR}"
export DYLD_LIBRARY_PATH="${WINE_LIB}:${DYLD_LIBRARY_PATH:-}"
"${WINE64}" reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d12 /d disabled /f >/dev/null 2>&1 || true
"${WINE64}" reg delete 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d11 /f >/dev/null 2>&1 || true
"${WINE64}" reg delete 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v d3d10core /f >/dev/null 2>&1 || true
"${WINE64}" reg delete 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v dxgi /f >/dev/null 2>&1 || true
touch "${BOTTLE_DIR}/.ja3_dxmt_installed"
if [[ -f "${BOTTLE_DIR}/Metadata.plist" ]]; then
/usr/libexec/PlistBuddy -c 'Set :dxvkConfig:dxvk false' "${BOTTLE_DIR}/Metadata.plist" 2>/dev/null || true
/usr/libexec/PlistBuddy -c 'Set :performanceConfig:forceD3D11 true' "${BOTTLE_DIR}/Metadata.plist" 2>/dev/null || true
fi
echo "OK: DXMT v0.80 в ${BOTTLE_NAME} (+ game dir)"