Files
Mainline/presets.toml
David Gwilliam 901717b86b feat(presets): Add upstream-default preset and enhance demo preset
- Add upstream-default preset matching upstream mainline behavior:
  - Terminal display (not pygame)
  - No message overlay
  - Classic effects: noise, fade, glitch, firehose
  - Mixed positioning mode

- Enhance demo preset to showcase sideline features:
  - Hotswappable effects via effect plugins
  - LFO sensor modulation (oscillator sensor)
  - Mixed positioning mode
  - Message overlay with ntfy integration
  - Includes hud effect for visual feedback

- Update all presets to use mixed positioning mode
- Update completion script for --positioning flag

Usage:
  python -m mainline --preset upstream-default --display terminal
  python -m mainline --preset demo --display pygame
2026-03-21 18:16:02 -07:00

165 lines
3.7 KiB
TOML

# Mainline Presets Configuration
# Human- and machine-readable preset definitions
#
# Format: TOML
# Usage: mainline --preset <name>
#
# Built-in presets can be overridden by user presets in:
# - ~/.config/mainline/presets.toml
# - ./presets.toml (local override)
# ============================================
# TEST PRESETS (for CI and development)
# ============================================
[presets.test-basic]
description = "Test: Basic pipeline with no effects"
source = "empty"
display = "null"
camera = "feed"
effects = []
viewport_width = 100 # Custom size for testing
viewport_height = 30
[presets.test-border]
description = "Test: Single item with border effect"
source = "empty"
display = "null"
camera = "feed"
effects = ["border"]
viewport_width = 80
viewport_height = 24
[presets.test-scroll-camera]
description = "Test: Scrolling camera movement"
source = "empty"
display = "null"
camera = "scroll"
effects = []
camera_speed = 0.5
viewport_width = 80
viewport_height = 24
[presets.test-figment]
description = "Test: Figment overlay effect"
source = "empty"
display = "terminal"
camera = "feed"
effects = ["figment"]
viewport_width = 80
viewport_height = 24
# ============================================
# DEMO PRESETS (for demonstration and exploration)
# ============================================
[presets.upstream-default]
description = "Upstream default operation (terminal display, legacy behavior)"
source = "headlines"
display = "terminal"
camera = "scroll"
effects = ["noise", "fade", "glitch", "firehose"]
camera_speed = 1.0
viewport_width = 80
viewport_height = 24
enable_message_overlay = false
positioning = "mixed"
[presets.demo-base]
description = "Demo: Base preset for effect hot-swapping"
source = "headlines"
display = "terminal"
camera = "feed"
effects = [] # Demo script will add/remove effects dynamically
camera_speed = 0.1
viewport_width = 80
viewport_height = 24
enable_message_overlay = true
positioning = "mixed"
[presets.demo-pygame]
description = "Demo: Pygame display version"
source = "headlines"
display = "pygame"
camera = "feed"
effects = ["noise", "fade", "glitch", "firehose"] # Default effects
camera_speed = 0.1
viewport_width = 80
viewport_height = 24
enable_message_overlay = true
positioning = "mixed"
[presets.demo-camera-showcase]
description = "Demo: Camera mode showcase"
source = "headlines"
display = "terminal"
camera = "feed"
effects = [] # Demo script will cycle through camera modes
camera_speed = 0.5
viewport_width = 80
viewport_height = 24
enable_message_overlay = true
positioning = "mixed"
[presets.test-message-overlay]
description = "Test: Message overlay with ntfy integration"
source = "headlines"
display = "terminal"
camera = "feed"
effects = ["hud"]
camera_speed = 0.1
viewport_width = 80
viewport_height = 24
enable_message_overlay = true
positioning = "mixed"
# ============================================
# SENSOR CONFIGURATION
# ============================================
[sensors.mic]
enabled = false
threshold_db = 50.0
[sensors.oscillator]
enabled = true # Enable for demo script gentle oscillation
waveform = "sine"
frequency = 0.05 # ~20 second cycle (gentle)
amplitude = 0.5 # 50% modulation
# ============================================
# EFFECT CONFIGURATIONS
# ============================================
[effect_configs.noise]
enabled = true
intensity = 1.0
[effect_configs.fade]
enabled = true
intensity = 1.0
[effect_configs.glitch]
enabled = true
intensity = 0.5
[effect_configs.firehose]
enabled = true
intensity = 1.0
[effect_configs.hud]
enabled = true
intensity = 1.0
[effect_configs.tint]
enabled = true
intensity = 1.0
[effect_configs.border]
enabled = true
intensity = 1.0
[effect_configs.crop]
enabled = true
intensity = 1.0