| π To DTS Stacks | |
|
W
elcome to the WSL Template Stacks β A Windows WSL Template Stack Collection |
Introduction
WSL Template Stacks provide pre-configured development environments for Windows developers who want to leverage the Windows Subsystem for Linux (WSL) for cross-platform development. Each WSL Template Stack is tailored for specific development scenarios and includes a complete development environment with all necessary tools, dependencies, and a working template project for specific programming languages and frameworks.
π Direct Links to:
πΆ The Available WSL Components
π Background information
πΆ WSL Questions & Answers
Design principles
WSL Template Stacks are containerized development environments that combine:
- Pre-configured WSL distribution with specific programming language toolchains
- Complete development toolset including compilers, package managers, and utilities
- Ready-to-use template projects demonstrating best practices and architecture
- Integrated development environment with VS Code as the default editor
General Quick Setup Process
- Prerequisites: Ensure WSL 2 is installed and enabled on your Windows system
- Clone: Clone the appropriate WLS repository template stack for your technology
- Setup: Use the instructions in the ./Howto folder to setup the environment
- Develop: Open the generated project in VS Code and start coding
Additional setup Information
General Requirements
- Have Docker Desktop installed and running on your Windows host
- WSL images are tested and supported on the following Windows systems:
- Supported on Windows 11 β
- Expect to work on Windows 10 uing WSl V2 β
Target Audience
- Windows developers wanting to use Linux development tools
- Teams requiring consistent development environments
- Developers starting new projects and wanting to skip initial setup
- Students and educators needing quick access to configured development environments
- Anyone who values rapid setup and clean, isolated development environments
Key Features
The stacks feature the following
- Rapid Development Setup
- Execute a single setup script to create and configure your development environment
- Automatically provision the WSL container with all required tools and dependencies
- Launch directly into VS Code with the template project ready for development
- Time to productivity: Minutes, not hours
- Isolated and Clean Environment
- Each stack contains only the tools and dependencies relevant to its specific technology
- Eliminates version conflicts and dependency issues between different projects
- Provides a consistent development environment across different machines
- No pollution of your host Windows system
- Production-Ready Template Projects
- Start with a fully functional template application that demonstrates best practices
- Includes proper project structure, configuration files, and documentation
- Template can be immediately built, tested, and extended
- Skip the boilerplate and focus on your business logic
- Cross-Platform Development
- Develop applications that run natively on both Linux (WSL) and Windows
- Test your applications in both environments without dual-boot or separate machines
- Use Linux tools and utilities while maintaining Windows workflow
- One codebase, multiple deployment targets
WSLg vs X11 Forwarding β Choosing the Right Graphical Output Method in WSL
Introduction
WSL provides two different methods for displaying Linux GUI applications on Windows.
Each method has different strengths depending on your needs, especially when working with Linux desktops or modern graphics frameworks.
Note: Using X11 vs WSLg for graphical output
WSL supports two graphical output paths: WSLg (the default) and X11 forwarding using an external X server.
Both are valid, but each is suited for different use-cases.
Β
WSLg (default) β Best for Modern OpenGL and Graphics Development
WSLg provides a built-in Wayland/RDP display server.
It supports hardware-accelerated OpenGL via Mesa, which enables many modern graphics and development frameworks:
- OpenGL 3.x / 4.x (depending on GPU drivers)
- GLFW
- Skia (OpenGL backend)
- Other accelerated frameworks
Use WSLg when:
- You are developing with OpenGL, GLFW, or Skia
- You need access to modern GPU features
- You want βplug-and-playβ GUI support without configuring an external X server
This makes WSLg ideal for graphics-heavy development environments.
X11 Forwarding β Best for Full Linux Desktop Environments
You can also run an external X11 server on Windows (e.g., VcXsrv, Xming).
This method is:
- Robust for general GUI applications
- Compatible with full Linux desktop environments (MATE, XFCE, LXDE, etc.)
However, due to limitations in the GLX protocol and Windows X-servers. OpenGL support is limited (typically ~OpenGL 1.x)
Use X11 Forward when:
- Running a full Linux desktop inside WSL
- Everyday GUI applications (stable, predictable GUI support)
- Tools that do not require modern GPU acceleration like OpenGL
Summary
| Feature / Need | WSLg | X11 Forwarding |
|---|---|---|
| Full Linux desktop (MATE/XFCE/etc.) | β οΈ Not supported | βοΈ Fully supported |
| Modern OpenGL (3.x / 4.x) | βοΈ Supported (GPU/driver dependent) | β Limited (β1.x) |
| GLFW, Skia, OpenGL development | βοΈ Recommended | β Not suitable |
| General GUI apps | βοΈ Works | βοΈ Works |
| Stability / simplicity | βοΈ Easy (built-in) | βοΈ Robust (once configured) |
The WSL Stack Components
This section provides an overview of the different WSL Template component stacks and their documentation. Most of these stacks are designed for developers and include template projects with instructions for use on both Windows and Linux. Most stacks support Visual Studio Code, and some also support Visual Studio 2022 (all editions).
Current under Development (Improvements in template project):
GLFW + Skia Template C/C++ project β WSL Environment with C++ graphics template
WSL Development stacks
Development stacks. Select one of the options below to view the related project page.
β‘οΈ Native Win32 C++ development (Windows)
- Windows Native API development through a WSL container, using a template project
β‘οΈ C++ GLFW-Skia Template project (Linux & Windows)
- Enables you to create windows, handle input and events (GLFW), and defines custom GUI controls (Skia)
β‘οΈ Python Flask & FAst Api (Linux & Windows)
- Create Python Flask web applications in combination with Fast-API (Todo)
WSL OS Related
The following repository contains instructions for setting up specific WSL OS distributions.
β‘οΈ WSL with Full Desktop GUI
- WSL with Mate full Desktop(Default). Uses X11 Forward to the host (Note: WSLg does not support full desktop)
License
All repositories are MIT licensed and free to use. For optional commercial support, customization, training, or long-term maintenance, see COMMERCIAL.md.
βββ β¦ βββ