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,133 @@
#!/usr/bin/env bash
# GOG Galaxy в GOG-bottle (CEF). По умолчанию — виртуальный desktop Wine (окно видно на Mac).
set -euo pipefail
GOG_DIR="$(cd "$(dirname "$0")" && pwd)"
# shellcheck source=config.sh
source "${GOG_DIR}/config.sh"
# shellcheck source=gog-process.sh
source "${GOG_DIR}/gog-process.sh"
LOG="/tmp/gog-galaxy-client-${BOTTLE_NAME}.log"
GALAXY_LOG="${BOTTLE_DIR}/drive_c/ProgramData/GOG.com/Galaxy/logs/GalaxyClient.log"
INIT_LOG="${BOTTLE_DIR}/drive_c/ProgramData/GOG.com/Galaxy/logs/GalaxyInitialization.log"
CEF_LOG="${BOTTLE_DIR}/drive_c/ProgramData/GOG.com/Galaxy/logs/cef.log"
gog_launch_wine() {
local win='C:\Program Files (x86)\GOG Galaxy\GalaxyClient.exe'
local -a args=()
mapfile -t args < <(gog_galaxy_cef_args_array)
cd "${BOTTLE_DIR}/drive_c"
if [[ "${GOG_USE_WINEVDESKTOP:-1}" == "1" ]]; then
local w h
IFS='x' read -r w h <<< "${GOG_VDESKTOP:-1280x800}"
echo "Режим: explorer /desktop=GOGGalaxy,${w}x${h}"
if [[ "${GOG_LAUNCH_FG:-0}" == "1" ]]; then
exec "${WINE64}" explorer "/desktop=GOGGalaxy,${w}x${h}" "${win}" "${args[@]}"
fi
nohup "${WINE64}" explorer "/desktop=GOGGalaxy,${w}x${h}" "${win}" "${args[@]}" >>"${LOG}" 2>&1 &
else
echo "Режим: прямой GalaxyClient (GOG_USE_WINEVDESKTOP=0)"
if [[ "${GOG_LAUNCH_FG:-0}" == "1" ]]; then
exec "${WINE64}" "${win}" "${args[@]}"
fi
nohup "${WINE64}" "${win}" "${args[@]}" >>"${LOG}" 2>&1 &
fi
}
main() {
gog_wine_check
gog_swap_guard "${GOG_SWAP_MAX_MB:-400}" || exit 1
gog_disk_guard 8 || exit 1
if [[ ! -f "${BOTTLE_DIR}/.gog_galaxy_extract_installed" ]]; then
echo "Сначала: bash ${GOG_DIR}/install-galaxy-extract.sh"
exit 1
fi
if ! find "${BOTTLE_DIR}/drive_c/Program Files"* -name 'GalaxyClient.exe' -print -quit 2>/dev/null | grep -q .; then
bash "${GOG_DIR}/install-galaxy-extract.sh"
fi
echo "Останавливаем старые процессы GOG Galaxy…"
gog_kill_all
pkill -f 'explorer.exe /desktop=GOGGalaxy' 2>/dev/null || true
if gog_galaxy_running; then
echo "❌ Galaxy всё ещё в процессах — повторите: bash ${GOG_DIR}/reset.sh"
pgrep -fl 'Galaxy' 2>/dev/null || true
exit 1
fi
export_wine_env_gog
echo "Bottle: ${BOTTLE_NAME}"
echo "Лог: ${LOG}"
: >"${LOG}"
if [[ "${GOG_LAUNCH_FG:-0}" == "1" ]]; then
echo ""
echo "Foreground: окно Wine привязано к этому терминалу. Закройте Galaxy — Ctrl+C."
echo "Ищите окно «GOGGalaxy» или полосу заголовка Wine desktop."
echo ""
gog_launch_wine
exit 0
fi
gog_launch_wine
echo "Запуск wine64…"
local ok=0 i
for i in $(seq 1 30); do
sleep 1
if grep -q 'Second client instance detected' "${INIT_LOG}" 2>/dev/null; then
if tail -5 "${INIT_LOG}" 2>/dev/null | grep -q 'The client will exit'; then
echo "❌ Второй экземпляр: bash ${GOG_DIR}/reset.sh && bash $0"
tail -8 "${INIT_LOG}"
exit 1
fi
fi
if [[ -f "${GALAXY_LOG}" ]] && grep -qE 'Showing login form|No refresh token found|will continue' "${GALAXY_LOG}" 2>/dev/null; then
ok=1
break
fi
if [[ -f "${INIT_LOG}" ]] && grep -q 'will continue' "${INIT_LOG}" 2>/dev/null; then
ok=1
break
fi
if ! gog_galaxy_running; then
sleep 2
if ! gog_galaxy_running; then
break
fi
fi
done
if ! gog_galaxy_running; then
echo "❌ GalaxyClient не остался в процессах:"
tail -25 "${LOG}"
[[ -f "${INIT_LOG}" ]] && tail -15 "${INIT_LOG}"
exit 1
fi
sleep 2
gog_mac_activate_wine || true
echo ""
echo "OK: GOG Galaxy запущен (процесс + login в логе — окно на Mac не гарантировано)."
echo " • Окно: bash ${GOG_DIR}/launch-galaxy-whisky.sh → Whisky → pin gog-galaxy → Run"
echo " • RCA/логи 7ч: docs/games/GOG_GALAXY_7H_RCA.md | collect-gog-logs-7h.sh"
if [[ "${GOG_USE_WINEVDESKTOP:-1}" == "1" ]]; then
echo " • Cmd+Tab → «wine64» / «GOGGalaxy» — отдельное окно виртуального стола Wine"
else
echo " • Cmd+Tab → «GalaxyClient» или «wine64»"
fi
echo "Не видно окна? bash ${GOG_DIR}/launch-galaxy-ui.sh (vdesktop + foreground)"
echo " • Whisky → «${BOTTLE_NAME}» → pin gog-galaxy → Run"
echo " • Лог: ${GALAXY_LOG}"
if [[ "${ok}" -eq 1 ]]; then
echo " • В логе login UI — войдите → Jagged Alliance 3 → Install"
if [[ -f "${CEF_LOG}" ]] && grep -q 'parent window' "${CEF_LOG}" 2>/dev/null; then
echo " • cef.log: «parent window» — типично для Wine; vdesktop/Whisky Run часто лечит"
fi
fi
}
main "$@"