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:
96
scripts/games/setup-wine-bottle.sh
Executable file
96
scripts/games/setup-wine-bottle.sh
Executable file
@@ -0,0 +1,96 @@
|
||||
#!/usr/bin/env bash
|
||||
# HoMM / Steam bottle (HoMM-OldenEra): шрифты + сеть Wine для Steam UI.
|
||||
# GOG web-stub: scripts/games/gog/ — отдельный bottle, без Steam.
|
||||
# См. docs/games/WINE_MAC_RUNBOOK.md
|
||||
set -euo pipefail
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
# shellcheck source=config.sh
|
||||
source "${SCRIPT_DIR}/config.sh"
|
||||
if [[ -z "${BOTTLE_DIR:-}" ]]; then
|
||||
echo "❌ config.sh не задал BOTTLE_DIR (файл пустой или повреждён?)"
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -d "${BOTTLE_DIR}/drive_c" ]]; then
|
||||
echo "❌ Нет bottle drive_c: ${BOTTLE_DIR}"
|
||||
echo " Откройте Whisky → bottle «${BOTTLE_NAME:-HoMM-OldenEra}» и дождитесь создания префикса."
|
||||
exit 1
|
||||
fi
|
||||
# shellcheck source=wine-fonts.sh
|
||||
source "${SCRIPT_DIR}/wine-fonts.sh"
|
||||
|
||||
WINE_SETUP_VERSION="3"
|
||||
WINE_SETUP_MARKER="${BOTTLE_DIR}/.wine_mac_setup_v${WINE_SETUP_VERSION}"
|
||||
|
||||
cmd_wine_check() {
|
||||
if [[ ! -x "${WINE64}" ]]; then
|
||||
echo "Нет WhiskyWine: bash ${SCRIPT_DIR}/install-whiskywine-manual.sh"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
cmd_install_fonts_winetricks() {
|
||||
[[ "${WINE_SETUP_WINETRICKS:-0}" == "1" ]] || return 0
|
||||
if ! command -v winetricks >/dev/null 2>&1; then
|
||||
echo "winetricks: brew install winetricks, затем WINE_SETUP_WINETRICKS=1"
|
||||
return 0
|
||||
fi
|
||||
export WINEPREFIX="${BOTTLE_DIR}"
|
||||
export WINE="${WINE64}"
|
||||
export DYLD_LIBRARY_PATH="${WINE_LIB}:${DYLD_LIBRARY_PATH:-}"
|
||||
export WINEDEBUG=-all
|
||||
echo "winetricks liberation (до 3 мин)…"
|
||||
if command -v gtimeout >/dev/null 2>&1; then
|
||||
gtimeout 180 winetricks -q liberation 2>&1 | tail -5 || true
|
||||
elif command -v timeout >/dev/null 2>&1; then
|
||||
timeout 180 winetricks -q liberation 2>&1 | tail -5 || true
|
||||
else
|
||||
winetricks -q liberation 2>&1 | tail -5 || true
|
||||
fi
|
||||
homm_wine_register_fonts_registry
|
||||
}
|
||||
|
||||
cmd_wine_network() {
|
||||
export WINEPREFIX="${BOTTLE_DIR}"
|
||||
"${WINE64}" reg add 'HKCU\Software\Wine\Network' /v DnsIPv6Enabled /t REG_DWORD /d 0 /f >/dev/null 2>&1 || true
|
||||
"${WINE64}" reg add 'HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings' \
|
||||
/v DisableIPv6 /t REG_DWORD /d 1 /f >/dev/null 2>&1 || true
|
||||
"${WINE64}" reg add 'HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings' \
|
||||
/v ProxyEnable /t REG_DWORD /d 0 /f >/dev/null 2>&1 || true
|
||||
echo "Wine: DnsIPv6Enabled=0, ProxyEnable=0"
|
||||
}
|
||||
|
||||
main() {
|
||||
local force=0 fonts_only=0
|
||||
for arg in "$@"; do
|
||||
case "${arg}" in
|
||||
--force) force=1 ;;
|
||||
--fonts-only) fonts_only=1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
cmd_wine_check
|
||||
|
||||
if [[ "${fonts_only}" -eq 1 ]]; then
|
||||
homm_wine_ensure_fonts 1
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ -f "${WINE_SETUP_MARKER}" && "${force}" -eq 0 ]]; then
|
||||
echo "Bottle подготовлен: ${WINE_SETUP_MARKER}"
|
||||
echo "Обновить только шрифты: bash ${SCRIPT_DIR}/setup-wine-bottle.sh --fonts-only"
|
||||
echo "Полный повтор: bash ${SCRIPT_DIR}/setup-wine-bottle.sh --force"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Подготовка bottle «${BOTTLE_NAME}» (v${WINE_SETUP_VERSION})…"
|
||||
homm_wine_ensure_fonts 1
|
||||
cmd_install_fonts_winetricks
|
||||
homm_wine_ensure_fonts 0
|
||||
cmd_wine_network
|
||||
date -u +"%Y-%m-%dT%H:%M:%SZ" >"${WINE_SETUP_MARKER}"
|
||||
echo ""
|
||||
echo "OK. Steam/HoMM: bash ${SCRIPT_DIR}/start.sh steam-ui"
|
||||
echo "GOG (другой bottle): bash ${SCRIPT_DIR}/gog/README.md"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user