Files
2025-10-07 06:51:46 +02:00

113 lines
3.2 KiB
Markdown

# Dev Container Template System
This directory contains a template-based dev container configuration system for the Tello Simulator project that automatically adapts to different platforms.
## Quick Start
Run the setup script to generate a platform-specific `devcontainer.json`:
```bash
.devcontainer/setup.sh
```
The script will:
1. 🔍 Auto-detect your platform (macOS, Linux, Windows, WSL)
2. 📝 Generate the appropriate `devcontainer.json` from the template
3. 📋 Show platform-specific setup instructions
## Files
- `devcontainer.template.json` - Template with platform variables
- `setup.sh` - Platform detection and configuration script
- `devcontainer.json` - Generated file (git-ignored)
- `Dockerfile` - Base Docker configuration
- `Dockerfile.windows` - Windows-specific Docker configuration with VNC
- `supervisord.conf` - Process manager for Windows VNC setup
- `setup-windows.sh` - Windows container initialization script
## Manual Platform Selection
You can also specify a platform manually:
```bash
.devcontainer/setup.sh macos # Force macOS configuration
.devcontainer/setup.sh linux # Force Linux configuration
.devcontainer/setup.sh windows # Force Windows configuration
.devcontainer/setup.sh wsl # WSL with options
```
## Platform Configurations
### macOS
- ✅ Uses `host.docker.internal:0` for DISPLAY
- ❌ No X11 socket mounting (not available on macOS)
- 📦 Requires XQuartz: `brew install --cask xquartz`
- 🔧 Run `xhost +localhost` after XQuartz setup
### Linux
- ✅ Direct X11 socket mounting via `/tmp/.X11-unix`
- ✅ Host networking for optimal performance
- ✅ Uses local `$DISPLAY` environment variable
- 🚀 Works out of the box on most Linux distributions
### Windows
- 🖥️ VNC server on port 5901 (password: `vncpass`)
- 🌐 Web access: `http://localhost:5901`
- 📱 VNC client: `localhost:5901`
- 🎯 Virtual framebuffer with Fluxbox window manager
### WSL (Windows Subsystem for Linux)
Interactive setup with three options:
1. **X11 forwarding** - Requires Windows X server (VcXsrv, Xming)
2. **VNC server** - Same as Windows setup
3. **Linux-style** - If X11 forwarding already configured
## GUI Application Support
All configurations support GUI applications required by the Tello simulator's Ursina engine:
**Test GUI support:**
```bash
python -c "import tkinter; tkinter.Tk().mainloop()"
```
**Run the simulator:**
```bash
python tello_sim/run_sim.py
```
## Development Notes
- The generated `devcontainer.json` is git-ignored to prevent platform conflicts
- Each developer runs `setup.sh` once to configure for their environment
- Template uses JSON variable substitution via the setup script
- Windows configuration includes full VNC stack for GUI support
## Troubleshooting
**Script fails to detect platform:**
```bash
.devcontainer/setup.sh [platform] # Specify manually
```
**GUI not working:**
- macOS: Ensure XQuartz is running and `xhost +localhost` was executed
- Linux: Check X11 forwarding with `echo $DISPLAY`
- Windows: Connect to VNC at `localhost:5901`
**Container won't start:**
- Check Docker is running
- Verify VS Code "Dev Containers" extension is installed
- Try "Dev Containers: Rebuild Container" from Command Palette