MesmerGlass is a session-based desktop visual compositor and device-control tool built with PyQt6 + OpenGL.
It’s designed around sessions (*.session.json) that bundle:
- Playbacks (visual/audio “programs”)
- Cuelists (timed sequences of cues)
- A per-session Media Bank (folders for videos/images/fonts/audio)
MesmerGlass also includes built-in Bluetooth device control (MesmerIntiface) and optional VR output/streaming.
- Session workflow - Open/create a session and run it from the Home tab
- Real-time compositor - Video + shader effects + spiral overlay + text overlays
- Cuelists + cues - Timed playback control with prefetching
- Per-session Media Bank - Point a session at your own media directories
- Device control - Built-in MesmerIntiface (no Intiface Central required)
- Multi-display output - Render to selected monitors
- Wireless VR output - Stream visuals to Android VR headsets on WiFi (NVENC H.264 when available, JPEG fallback)
- Windows 10/11, macOS, or Linux
- Python 3.12+ (64-bit)
- Bluetooth LE support (for device control)
-
Clone the repository:
git clone https://github.com/Ashyy0205/MesmerGlass.git cd MesmerGlass -
Create and activate virtual environment:
python -m venv .venv # Windows .\.venv\Scripts\activate # macOS/Linux source .venv/bin/activate
-
Install dependencies:
pip install -r requirements.txt
-
Run MesmerGlass: (new unified CLI)
python -m mesmerglass run
Legacy:
python run.pystill works (deprecated; see docs/migration/run-py-deprecation.md).
- Open the GUI:
python -m mesmerglass run - Create a session: File → New Session… (or open an existing
*.session.json) - Choose outputs: Display tab → select monitors (and optional wireless VR device)
- Configure media: Home tab → Media Bank → add your media folders
- Build content:
- Playbacks tab: create/edit playbacks
- Cuelists tab: create cues and order them
- Run it: Home tab → Session Runner → Start
You can bundle MesmerGlass (including Python and dependencies) into a portable folder using PyInstaller:
- Ensure your virtual environment is active and install the build dependency:
pip install pyinstaller
- Run the helper script:
powershell -ExecutionPolicy Bypass -File scripts/build_windows_exe.ps1 -Version 1.0.0
This creates dist\MesmerGlass\MesmerGlass.exe with the mesmerglass_aperture_solar.ico icon. Copy that folder to any Windows PC and run the .exe directly—no Python runtime required.
MesmerGlass includes MesmerIntiface - a pure Python implementation for direct Bluetooth device control:
- No Rust compilation required
- No Intiface Central needed
- Direct Bluetooth LE communication
- Lovense: Lush, Max, Nora, Edge, Hush, Domi, Calor
- We-Vibe: Sync, Pivot, Nova
- Extensible for additional manufacturers
- Enable Bluetooth on your system
- Put your device in pairing mode
- In MesmerGlass: Device Sync → Scan for devices
- Select your device and start your session!
- 🔧 Development Setup - Setup development environment
- 🧪 Testing Guide - Running tests and validation
- 📋 MesmerIntiface Technical - Implementation details
- 🎵 Audio Engine - Audio processing system
- 🎬 Video Engine - Video overlay architecture
- 📡 Device Control - Communication protocols
- 🌀 Spiral Overlay
- 🥽 VR Streaming (MesmerVisor)
- 🛠 CLI Reference
Run the comprehensive test suite to validate functionality:
# Run all tests (replaces run_tests.py)
python -m mesmerglass test-run
# Run only fast tests (excludes slow integration tests)
python -m mesmerglass test-run fast
# Verbose
python -m mesmerglass test-run -v
# With coverage
python -m mesmerglass test-run -c# Unit tests only
python -m mesmerglass test-run unit
# Integration tests
python -m mesmerglass test-run integration
# Bluetooth functionality tests
python -m mesmerglass test-run bluetooth
# Slow tests only
python -m mesmerglass test-run slow# Test device control directly
python -m pytest mesmerglass/tests/test_device_control.py -v
# Test Bluetooth functionality
python -m pytest mesmerglass/tests/test_bluetooth.py -vMesmerGlass/
├── mesmerglass/ # Main application code
│ ├── engine/ # Core engines
│ │ ├── mesmerintiface/ # Pure Python device control
│ │ ├── audio.py # Audio processing
│ │ ├── video.py # Video overlay
│ │ └── pulse.py # Device synchronization
│ ├── mesmervisor/ # VR streaming server (JPEG encoding)
│ ├── vr/ # VR integration
│ │ └── android-client/ # Android VR client source code
│ ├── ui/ # User interface
│ └── tests/ # Comprehensive test suite
├── MEDIA/ # Media assets
│ ├── vr-client/ # Built VR APK for distribution
│ ├── Fonts/
│ ├── Images/
│ └── Videos/
├── docs/ # Documentation
│ ├── user-guide/ # User documentation
│ ├── development/ # Developer guides
│ └── technical/ # Technical references
├── run.py # Deprecated shim (use python -m mesmerglass)
└── requirements.txt # Dependencies
We welcome contributions! Please see our development documentation for:
- Development Setup
- Testing Guidelines
- Code style and conventions
- OS: Windows 10, macOS 10.15, or Linux (Ubuntu 20.04+)
- Python: 3.12 or higher
- RAM: 4GB minimum, 8GB recommended
- GPU: DirectX 11/OpenGL 3.3 compatible
- Bluetooth LE: Built-in or USB adapter
- Supported Devices: See device compatibility
This project is licensed under the MIT License - see the LICENSE file for details.
- 📖 Documentation: Start with our user guides
- 🐛 Issues: Report bugs on GitHub Issues
- 💬 Discussions: Join conversations in GitHub Discussions