Wine-NX is an experimental project that ports Wine to the Nintendo Switch, enabling aarch64 Windows PE programs to run on Horizon OS via libnx with a custom display driver and touch input support.

Stars

66

7-day growth

No data

Forks

1

Open issues

0

License

NOASSERTION

Last updated

2026-06-26

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

It demonstrates a functional, though slow, real-GUI Windows app (Notepad) running natively on Switch hardware, providing the first known open-source Wine implementation for the platform with published build scripts and a working display driver.

Who it is for

  • Switch homebrew developers
  • Wine and ARM64 PE enthusiasts
  • Nintendo Switch hardware tinkerers
  • Operating system and emulation researchers

Use cases

  • Running simple GUI Windows applications (e.g., Notepad) on a Switch console
  • Testing and debugging Wine's ARM64 build for a non-standard platform
  • Exploring Switch hardware capabilities for software rendering and input
  • Educational study of porting a complex compatibility layer to a gaming console

Strengths

  • Runs on actual Switch hardware with a staged SD-card package and NRO loader
  • Delivers a working Notepad GUI milestone including menus, text rendering, and touch interaction
  • Provides detailed build instructions using Docker and LLVM-MinGW for reproducibility
  • Includes a custom win32u display driver that blits software-rendered DIB surfaces to the libnx framebuffer

Considerations

  • Presentation is very slow due to full-framebuffer conversion and lack of GPU acceleration
  • Many Wine subsystems (messages, common controls, clipboard, keyboard, audio, networking) are incomplete or missing
  • Touch input is functional but lacks keyboard, controller, double-click, and focus polish; no GPU acceleration yet

README quick start

Wine-NX Switch

Wine-NX is a Nintendo Switch focused Wine bring-up. The goal is to run AArch64 Windows PE programs inside a Switch NRO, using libnx/Horizon services for process, memory, input, files, display, and eventually GPU presentation.

This repository is no longer just a primitive Horizon probe. It is the working tree for the Switch Wine runtime, the in-process Horizon/Wine server work, the win32u Switch display driver, and the SD-card package builder used for hardware testing.

Current Status

As of the latest runtime work, the project can build and stage a Switch NRO runtime that launches Wine PE targets from:

sdmc:/switch/wine

Notepad is the main real-GUI test target right now. It can launch far enough to show the main window, frame, menu bar, menu popups, text rendering, and touch driven menu interaction. It is still experimental and not production usable: responsiveness is poor, presentation is software-heavy, and several real-app subsystems remain incomplete.

What Works So Far

Switch Build And Packaging

  • wine-nx-probe/build-switch.sh builds the Switch runtime with the devkitpro/devkita64 Docker image.
  • The script stages a runnable SD package under:
wine-nx-probe/build-switch/sd-card/switch/wine
  • Runtime NRO output:
wine-nx-probe/build-switch/wine-nx-runtime.nro
wine-nx-probe/build-switch/sd-card/switch/wine/wine-nx-runtime.nro
  • WINE_NX_APP selects the staged target:
WINE_NX_APP=gui ./wine-nx-probe/build-switch.sh
WINE_NX_APP=notepad ./wine-nx-probe/build-switch.sh
  • The package now stages Wine NLS files and Wine fonts into the Switch package, including C:\windows\fonts and share/wine/fonts equivalents.

Runtime Loader

  • The runtime can bootstrap a Wine ARM64 PE target from the staged package.
  • PE import resolution, loader handoff, Wine DLL staging, and runtime target selection are in place for the smoke apps and Notepad path.
  • The runtime carries a build marker in the NRO so hardware logs can confirm which binary is actually running.
  • Logging goes to:
sdmc:/switch/wine/wine-nx-runtime.log
sdmc:/switch/wine/horizon-trace.log

Horizon And Wine Server Substrate

  • Early Horizon primitives were proven: TLS model, executable memory/JIT alias handling, thread setup, address-space reservation, and Switch-safe runtime logging.
  • The in

Description

Experimental Wine runtime for Nintendo Switch: AArch64 Windows PE loading, Horizon/libnx integration, win32u USER/GDI bring-up, software framebuffer display, touch input, and early Notepad GUI support.

Related repositories

Similar projects matched by category, topics, and programming language.

Infatoshi
Featured
Infatoshi GitHub avatar

netherite

A from-scratch C/CUDA reimplementation of Minecraft 1.11.2 that is bit-verified against the original Java game and includes batched CUDA reinforcement learning support.

AI & Machine LearningLarge Language Models
251
nsdkinx
Featured
nsdkinx GitHub avatar

twell

Twell is a tiny, embeddable, zero-allocation physics engine for interruptible, Apple-style UI animations, available as a single-header C library with Python bindings.

MobileDesign & Creative
17
sqliteai
Featured
sqliteai GitHub avatar

waste

WASTE is a C-based inference engine that streams MoE experts from disk to run a 2.78 trillion-parameter model on a consumer laptop with 64 GB RAM.

Data & DatabasesData Engineering
14