https://github.com/yu314-coder/manim_app
https://github.com/yu314-coder/manim_app
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/yu314-coder/manim_app
- Owner: yu314-coder
- License: mit
- Created: 2025-05-16T04:54:37.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-12-04T01:16:26.000Z (7 months ago)
- Last Synced: 2025-12-07T07:22:26.279Z (7 months ago)
- Language: Python
- Size: 15.1 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π¬ Manim Animation Studio
**Professional Desktop Environment for Creating Mathematical Animations**
A powerful, feature-rich desktop application for creating stunning mathematical animations using [Manim Community Edition](https://www.manim.community/). Built with Python, PyWebView, and modern web technologies.




---
## β¨ Features
### π¨ **Professional Code Editor**
- **Monaco Editor** (VS Code's editor) with full Python syntax highlighting
- IntelliSense and autocomplete for Manim classes
- Real-time error detection and linting
- Line numbers, code folding, and multiple cursors
- Customizable font size and themes
### β‘ **Dual Render Modes**
- **Quick Preview (F6)**: Fast, low-quality preview (480p, 15fps) for rapid iteration
- **Final Render (F5)**: High-quality output up to 8K resolution at 120fps
- GPU acceleration support (OpenGL renderer)
- Real-time progress tracking with live terminal output
### π **Integrated Asset Management**
- Drag & drop file uploads
- Support for videos, images, fonts, audio, and subtitles
- Built-in asset preview with media player
- Organized asset library with file metadata
- Easy access to custom fonts and media files
### π¦ **Visual Package Manager**
- Install Python packages with one click
- Check for package updates
- Uninstall packages safely
- View installed packages and versions
- No terminal commands needed
### π₯οΈ **Full-Featured Terminal**
- Real Windows cmd.exe integration with xterm.js
- Auto-activated virtual environment
- Copy/paste support (Ctrl+Shift+C/V)
- Persistent session across renders
- Color-coded output for better readability
### π― **Smart Workflow Features**
- **Auto-save backups**: Never lose your work
- **File recovery**: Restore from auto-saved versions
- **Auto-open output folder**: Jump directly to saved renders
- **Live preview**: See your animation immediately after render
- **Settings persistence**: Your preferences are remembered
### π **Modern UI/UX**
- Dark/Light theme toggle
- Responsive design with DPI awareness
- Glassmorphic design elements
- Smooth animations and transitions
- Collapsible render controls sidebar
- Toast notifications for all actions
---
## πΈ Screenshots
### Main Workspace
The main interface features a split view with Monaco code editor on the left and live preview on the right, with an integrated terminal at the bottom.
### Asset Manager
Browse, upload, and preview all your media files in one organized location with drag-and-drop support.
### Package Manager
Install and manage Python packages through an intuitive visual interface without touching the command line.
---
## π Getting Started
### Prerequisites
- **Windows 10/11** (64-bit)
- **Python 3.8+** installed and in PATH
- **4GB RAM minimum** (8GB recommended)
- **1GB free disk space**
### Installation
1. **Download the latest release**
```
Download from GitHub Releases
```
2. **Extract the archive**
```
Extract to your preferred location
```
3. **Run the application**
```
Double-click app.exe (or python app.py from source)
```
4. **First-time setup** (automatic)
- Virtual environment creation
- Manim installation
- LaTeX detection and setup
- Assets folder initialization
### Building from Source
```bash
# Clone the repository
git clone https://github.com/yourusername/manim-studio.git
cd manim-studio
# Install dependencies
pip install -r requirements.txt
# Run the application
python app.py
```
### Building Executable with Nuitka
```bash
# Activate build environment
python -m venv venv_nuitka
venv_nuitka\Scripts\activate
# Install Nuitka
pip install nuitka
# Build executable
python build_nuitka.py
# Output will be in dist_nuitka/
```
---
## π Quick Start Guide
### Creating Your First Animation
1. **Launch Manim Studio**
- The app opens with a default scene template
2. **Write Your Code**
```python
from manim import *
class MyScene(Scene):
def construct(self):
circle = Circle()
self.play(Create(circle))
self.wait()
```
3. **Preview (F6)**
- Click "Preview" or press F6
- Get a fast low-quality preview in seconds
4. **Final Render (F5)**
- Click "Render" or press F5
- Choose quality settings in the sidebar
- Save your high-quality video when complete
- **Output folder opens automatically** after saving
### Keyboard Shortcuts
| Action | Shortcut |
|--------|----------|
| Render Animation | `F5` |
| Quick Preview | `F6` |
| Stop Render | `Esc` |
| Save File | `Ctrl + S` |
| New File | `Ctrl + N` |
| Open File | `Ctrl + O` |
---
## π¨ Using Assets
### Adding Custom Fonts
1. **Upload Font**
- Go to Assets tab
- Drag & drop your .ttf or .otf file
2. **Use in Code**
```python
from manim import *
class CustomFontExample(Scene):
def construct(self):
register_font("YourFont.ttf")
text = Text("Hello!", font="YourFont")
self.play(Write(text))
```
### Adding Images/Videos
1. **Upload Media**
- Drag files to Assets tab dropzone
- Supported: MP4, PNG, JPG, SVG, GIF
2. **Use in Animation**
```python
from manim import *
class ImageExample(Scene):
def construct(self):
img = ImageMobject("myimage.png")
self.play(FadeIn(img))
```
### Adding Audio
```python
from manim import *
class AudioExample(Scene):
def construct(self):
self.add_sound("music.mp3")
circle = Circle()
self.play(Create(circle))
```
---
## βοΈ Configuration
### Render Settings
**Quality Presets:**
- **480p**: 854Γ480, 15fps (Fast preview)
- **720p**: 1280Γ720, 30fps (Standard HD)
- **1080p**: 1920Γ1080, 60fps (Full HD)
- **1440p**: 2560Γ1440, 60fps (2K)
- **4K**: 3840Γ2160, 60fps (Ultra HD)
- **8K**: 7680Γ4320, 60fps (Cinema quality)
**Output Formats:**
- MP4 (H.264 video)
- MOV (QuickTime)
- GIF (Animated)
- PNG (Image sequence)
### GPU Acceleration
Toggle GPU rendering in the header toolbar:
- **GPU: OFF** = Cairo renderer (CPU, compatible)
- **GPU: ON** = OpenGL renderer (GPU, faster but may have quirks)
### Editor Settings
Access via Settings (βοΈ icon):
- Font size (12-20px)
- Default save location
- Auto-save after render
- Auto-open output folder
- Manim cache settings
---
## π File Structure
```
C:\Users\\.manim_studio\
βββ assets\ # Your uploaded files (fonts, images, audio)
βββ media\ # Manim cache and temp files
βββ render\ # High-quality render output (temporary)
βββ preview\ # Quick preview output (temporary)
βββ autosave\ # Auto-saved code backups
βββ venvs\
β βββ manim_studio_default\ # Python virtual environment
βββ settings.json # Your app preferences
```
**Note:** Render outputs are temporary. Use the "Save" button after rendering to save them permanently to your chosen location. The output folder will open automatically in Windows Explorer after saving.
---
## π Troubleshooting
### Rendering Fails
**Problem:** Render shows errors in terminal
**Solutions:**
1. Check syntax errors (red underlines in editor)
2. Ensure all imported files exist in assets folder
3. Try Preview (F6) first to catch errors quickly
4. Check LaTeX status in System tab
5. Review terminal output for specific error messages
### Custom Fonts Not Working
**Problem:** Font doesn't appear in animation
**Solutions:**
1. Ensure font file is uploaded to Assets folder
2. Use `register_font("YourFont.ttf")` before using it
3. Reference font by name without extension: `font="YourFont"`
4. Check that font file is valid TrueType (.ttf) or OpenType (.otf)
### LaTeX Not Working
**Problem:** LaTeX formulas fail to render
**Solutions:**
1. Check LaTeX status indicator (header, right side)
2. Install MiKTeX or TeX Live if not present
3. Restart application after LaTeX installation
4. Use raw strings for LaTeX: `r"$\frac{1}{2}$"`
### Package Installation Fails
**Problem:** Cannot install Python packages
**Solutions:**
1. Check terminal output for specific error
2. Ensure package name is spelled correctly
3. Try installing via terminal manually
4. Check internet connection
5. Some packages may require system dependencies
### Video Won't Play in Preview
**Problem:** Preview panel shows no video after render
**Solutions:**
1. Check that render completed successfully (terminal logs)
2. Try refreshing Assets tab
3. Check file path is correct
4. Ensure video file exists and is not corrupted
5. Try a different browser (if using web version)
---
## π§ Advanced Usage
### Command Line Arguments
```bash
# Run with custom window size
python app.py --width 1920 --height 1080
# Run in debug mode
python app.py --debug
# Specify custom user data directory
python app.py --user-dir "D:\MyManimData"
```
### Environment Variables
```bash
# Use custom Python executable
set MANIM_PYTHON_EXE=C:\Python39\python.exe
# Custom media directory
set MANIM_MEDIA_DIR=D:\ManimOutput
```
### Virtual Environment Management
The app creates an isolated virtual environment at:
```
C:\Users\\.manim_studio\venvs\manim_studio_default\
```
You can manage it via the integrated terminal or Packages tab.
---
## π€ Contributing
Contributions are welcome! Here's how you can help:
1. **Report Bugs**: Open an issue with detailed reproduction steps
2. **Suggest Features**: Describe your use case and proposed solution
3. **Submit Pull Requests**: Fork, branch, code, test, and PR
4. **Improve Documentation**: Fix typos, add examples, clarify instructions
### Development Setup
```bash
# Clone and setup development environment
git clone https://github.com/yourusername/manim-studio.git
cd manim-studio
# Install development dependencies
pip install -r requirements-dev.txt
# Run in development mode
python app.py --debug
```
---
## π License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---
## π Acknowledgments
- **[Manim Community](https://www.manim.community/)** - The amazing animation engine
- **[Monaco Editor](https://microsoft.github.io/monaco-editor/)** - VS Code's powerful editor
- **[PyWebView](https://pywebview.flowrl.com/)** - Native Python desktop apps
- **[xterm.js](https://xtermjs.org/)** - Terminal emulator for the web
- **Font Awesome** - Beautiful icons
---
## π Support
- **Documentation**: Check the built-in Help modal (? icon)
- **Issues**: [GitHub Issues](https://github.com/yourusername/manim-studio/issues)
- **Discussions**: [GitHub Discussions](https://github.com/yourusername/manim-studio/discussions)
- **Manim Help**: [Manim Community Discord](https://discord.gg/manim)
---
## πΊοΈ Roadmap
### Upcoming Features
- [ ] **Live Preview Mode**: See animations update in real-time as you type
- [ ] **Scene Browser**: Visual navigation between multiple scenes
- [ ] **Animation Templates**: Pre-built scenes for common use cases
- [ ] **Export Presets**: Save and reuse render configurations
- [ ] **Collaborative Editing**: Share projects with team members
- [ ] **Plugin System**: Extend functionality with custom plugins
- [ ] **macOS/Linux Support**: Cross-platform compatibility
- [ ] **Cloud Sync**: Sync settings and projects across devices
- [ ] **Mobile Companion**: Preview on mobile devices
- [ ] **Timeline Editor**: Visual animation timeline
---
## π System Requirements
### Minimum
- **OS**: Windows 10 (64-bit)
- **CPU**: Dual-core 2.0 GHz
- **RAM**: 4GB
- **Storage**: 1GB free space
- **Display**: 1280Γ720
### Recommended
- **OS**: Windows 11 (64-bit)
- **CPU**: Quad-core 3.0 GHz
- **RAM**: 8GB+
- **GPU**: Dedicated graphics (for GPU rendering)
- **Storage**: 5GB free space (for cache)
- **Display**: 1920Γ1080 or higher
---
## π Learning Resources
### Manim Tutorials
- [Manim Community Docs](https://docs.manim.community/)
- [3Blue1Brown](https://www.youtube.com/c/3blue1brown) - Creator of Manim
- [Theorem of Beethoven](https://www.youtube.com/c/TheoremofBeethoven) - Manim tutorials
- [Manim Examples](https://docs.manim.community/en/stable/examples.html)
### Python Resources
- [Python Official Docs](https://docs.python.org/3/)
- [Real Python](https://realpython.com/)
- [Python for Data Science](https://www.python.org/about/gettingstarted/)
---
## β Star History
If you find this project useful, please consider giving it a star on GitHub!
[](https://star-history.com/#yourusername/manim-studio&Date)
---
## π Changelog
### v1.0.9.0 (Latest)
- β¨ **Auto-open output folder** after saving rendered files
- β¨ Improved render controls sidebar with chevron collapse icon
- π¨ Enhanced toast notifications with comprehensive logging
- π Fixed async button handler for folder opening
- π Improved DPI awareness and responsive scaling
- π Added comprehensive README documentation
### v1.0.8.0
- β¨ Added Package Manager with visual interface
- β¨ Drag & drop asset uploads
- π Fixed GPU toggle persistence
- π Fixed autosave recovery dialog
- π¨ Improved responsive scaling and DPI awareness
### v1.0.7.0
- β¨ Added auto-save with backup recovery
- β¨ Integrated xterm.js terminal
- π Fixed LaTeX detection
- π¨ Improved dark theme
### v1.0.6.0
- β¨ Initial public release
- π¨ Professional UI with Monaco Editor
- β‘ Dual render modes (Preview/Final)
- π Asset management system
[View Full Changelog](CHANGELOG.md)
---
**Made with β€οΈ for the Manim Community**
[β¬ Back to Top](#-manim-animation-studio)