Configuration
Configure Manim's behavior through files and code.
Configuration Hierarchy
Manim reads configuration from (in order of precedence):
- Command-line arguments (highest priority)
- User's
manim.cfgin current directory - User's global config
- Default values (lowest priority)
manim.cfg File
Create a manim.cfg file in your project directory:
[CLI]
# Preview after rendering
preview = True
# Default quality
quality = medium_quality
# Output format
format = mp4
# Frame rate
frame_rate = 30
[output]
# Custom output directory
media_dir = ./media
# Save last frame as PNG
save_last_frame = False
[renderer]
# Background color
background_color = BLACK
[style]
# Default font
font = ArialCommon Configuration Options
CLI Section
[CLI]
# Quality presets: low_quality, medium_quality, high_quality, production_quality, fourk_quality
quality = medium_quality
# Preview video after rendering
preview = True
# Frame rate
frame_rate = 30
# Output format: mp4, gif, mov, webm, png
format = mp4
# Transparent background
transparent = False
# Progress bar: display, leave, none
progress_bar = displayRendering Section
[renderer]
# Background color (hex or color name)
background_color = #1e1e1e
# Renderer type: cairo, opengl
renderer = cairoResolution
[CLI]
# Frame dimensions
pixel_width = 1920
pixel_height = 1080Programmatic Configuration
Access and modify config in your Python code:
# Access config values
config.pixel_width # e.g., 1920
config.frame_rate # e.g., 30
config.background_color # e.g., BLACK
# Modify config (before creating scenes)
config.pixel_width = 1920
config.pixel_height = 1080
config.frame_rate = 60
config.background_color = BLUE_EIn Scene
class MyScene(Scene):
def construct(self):
# Access frame dimensions
width = config.frame_width
height = config.frame_height
# Create rectangle matching frame size
frame_rect = Rectangle(
width=width,
height=height,
stroke_color=WHITE
)
self.add(frame_rect)Background Color
In Config File
[renderer]
background_color = BLACK
# Or hex color
background_color = #1a1a2eIn Code
class DarkBackground(Scene):
def construct(self):
self.camera.background_color = "#1a1a2e"
# ... rest of sceneOutput Directory Structure
Default media directory structure:
media/
├── videos/
│ └── scene_file/
│ ├── 480p15/ # Low quality
│ ├── 720p30/ # Medium quality
│ ├── 1080p60/ # High quality
│ └── 2160p60/ # 4K quality
├── images/
│ └── scene_file/
│ └── SceneName.png
└── Tex/ # LaTeX cacheCustom Output Directory
[output]
media_dir = ./outputOr via CLI:
manim --media_dir ./output file.py SceneTex Configuration
For LaTeX rendering:
[tex]
# Custom preamble
preamble = \usepackage{amsmath}\usepackage{amssymb}
# Tex compiler
tex_compiler = latexCaching
[CLI]
# Disable caching (useful for debugging)
disable_caching = True
# Max cached files
max_files_cached = 100Viewing Current Config
# Show all config values
manim cfg show
# Show specific section
manim cfg show CLI
# Write current config to file
manim cfg writeProject-Specific Config
Create manim.cfg in your project root:
[CLI]
quality = high_quality
preview = True
frame_rate = 60
[renderer]
background_color = #0d1117
[output]
media_dir = ./rendersPlugins
Manim has an extensible plugin system:
# List installed plugins
manim plugins -l
# Install a plugin
pip install manim-pluginnameEnable plugins in manim.cfg:
[CLI]
plugins = manim-pluginname
# For multiple plugins:
plugins = plugin1,plugin2Best Practices
- Use manim.cfg for project defaults - Consistent settings across team
- Keep quality low during development - Faster iteration
- Set background_color in config - Not in every scene
- Use custom media_dir - Keep renders organized
- Commit manim.cfg to version control - Share settings with collaborators