syn-wine — пакет pacman (не крейт Cargo), собранный из upstream Wine 11.19 со своими патчами synshell. Один PKGBUILD и один набор патчей на x86_64 и aarch64: то, что нужно только ARM, — под $CARCH в PKGBUILD и под #ifdef __aarch64__ в патчах. Заменяет wine, wine-mono и wine-gecko (provides/conflicts) и прежний телефонный пакет wine-arm64ec.
Возможности
- Касания — касания Wayland и X11 доходят до программ Windows, в том числе через DirectInput.
- Мост Steam API из Proton —
lsteamclientиsteam.exeс закреплённого коммита Proton: игры, которые зовутsteam_api, запускаются под этим Wine с клиентом Steam для Linux. - Средство совместимости Steam «syn-wine» —
/usr/share/steam/compatibilitytools.d/syn-wine: Windows-игры из библиотеки Steam идут на этом Wine без Proton. У каждой игры свой префикс рядом с её данными Steam, DXVK ставится при первом запуске, а в композиторе synshell игре можно задать своё разрешение экрана ([[x11_app]], «Параметры → Сеанс → X11-программы»). - Недостающие компоненты — если программе не хватает DLL (MFC, рантаймы Visual Basic, OpenAL…) или кодека GStreamer, Wine зовёт syn-wine-helper: окно предлагает поставить их один раз для всех префиксов и запускает программу заново.
- DXVK — Direct3D 8–11 через Vulkan;
setup-dxvk install|uninstallставит его в префикс (x64 + x32 на x86_64, ARM64EC + x32 на aarch64). - Wine Mono 11.3.0 и Wine Gecko 2.47.4 в пакете — распакованы в
/usr/share/wine/{mono,gecko}, общие для всех префиксов, так что новый префикс не просит их скачать. Mono — x86 на x86_64 и arm64 на aarch64; Gecko — x86 и x86_64 на обеих (им пользуются x86-программы через WoW64/FEX и x86_64-программы через ARM64EC). - Исправления — EmulateModeset под Xwayland (игра рисует в своём режиме, Wine растягивает картинку на экран), правки swapchain, DPI, Media Foundation и рамок окон;
.exeзапускаются через binfmt, псевдонимы шрифтов Win32 для fontconfig. - DLSS 5 — Wine сам выставляет своим программам
VKLayer_DLSS5=1, когда в syn-dlss включён переключатель «Игры syn-wine» (пакетsyn-wine-dlss5).
aarch64 (телефоны)
- ARM64EC и WoW64 — родной код ARM64, x86_64 внутри Wine эмулирует FEX (
libarm64ecfex.dll), 32-битный x86 — FEX (libwow64fex.dll, своя сборка с исправлениями деления на ноль, сбоевPOPи отладочных регистров) или Box64 — DLL из Hangover; x86-64 RootFS не нужна. - Эмулятор x86 по программе —
HKCU\Software\Wine\AppDefaults\<имя.exe>\Wow64: значениеx86выбирает DLL эмулятора, подразделEnvironmentзадаёт его окружение (например,FEX_TSOENABLED=0) до запуска. Heroes of Might and Magic III сразу идут на FEX без TSO: Box64 зависает, когда звуковой поток Miles приостанавливает поток игры, а FEX по умолчанию микширует так медленно, что игра дёргается. - OpenGL ниже 3.2 (Adreno 504 / freedreno): кадровый буфер GL-поверхности — через
glFramebufferTexture2D, игры DirectDraw/Direct3D больше не чёрные. - Своя сборка DXVK ARM64EC (DXVK 3.1.1, с разделяемыми ресурсами через D3DKMT).
- Подгонка под телефон — DPI 180 для новых префиксов, дальше — из
Xft.dpiX-сервера игры; обходы 39-битного адресного пространства ядер Android и delay-load rpcrt4; Wayland-драйвер, когда у Turnip нет X11 WSI (SYN_WINE_WAYLAND=1— принудительно).
Установка
В AUR syn-wine не публикуется — собирается из этого каталога.
cd crates/syn-wine
makepkg -si # компьютер (x86_64)
Телефон: synport hostpkg syn-wine (кросс-сборка на хосте, synmobile) или makepkg на телефоне. Для aarch64 в каталоге сборки нужны dxvk-<версия>-arm64ec.tar.gz (build-dxvk-arm64ec.sh) и libwow64fex-<коммит>.dll (build-fex-wow64.sh) — оба собираются на x86_64-хосте llvm-mingw.
Необязательно: synshell (syn-wine-helper — недостающие DLL), ntsync-autoload (NTSync), samba (NTLM).
Использование
wine setup.exe # как обычный Wine
setup-dxvk install # DXVK в $WINEPREFIX (по умолчанию ~/.wine)
setup-dxvk uninstall
В Steam: «Свойства игры → Совместимость → Принудительно использовать средство совместимости Steam Play» → «Wine synshell (системный)». Журнал средства — syn-wine.log в каталоге compatdata игры. Сам Steam — пакет syn-steam.
DLSS 5 (dlss5/)
Форк DLSS5VKLayer (от коммита ab722b0): DLSS 5 Neural Rendering для Linux-игр и игр под Wine/Proton на NVIDIA. Vulkan-слой VK_LAYER_NV_dlssnr (64 и 32 бит) отдаёт кадры помощнику dlssnr_helper.exe, который под syn-wine грузит NGX и модель. Отдельный пакет syn-wine-dlss5 (cd dlss5/packaging && makepkg -si) с окном syn-dlss.
Часть synshell
syn-wine входит в synshell: окружение рабочего стола для Wayland на Rust для компьютеров и телефонов, на UI-фреймворке syngui.
Лицензия
Wine — LGPL-2.1-or-later; DXVK — Zlib.