forked from genewildish/Mainline
- Add ~20 gallery presets covering sources, effects, cameras, displays - Add MultiDisplay support with --display multi:terminal,pygame syntax - Fix ViewportFilterStage to recompute layout on viewport_width change - Add benchmark.py module for hook-based performance testing - Add viewport resize tests to test_viewport_filter_performance.py
283 lines
5.9 KiB
TOML
283 lines
5.9 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)
|
|
|
|
# ============================================
|
|
# DATA SOURCE GALLERY
|
|
# ============================================
|
|
|
|
[presets.gallery-sources]
|
|
description = "Gallery: Headlines data source"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = []
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-sources-poetry]
|
|
description = "Gallery: Poetry data source"
|
|
source = "poetry"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = ["fade"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-sources-pipeline]
|
|
description = "Gallery: Pipeline introspection"
|
|
source = "pipeline-inspect"
|
|
display = "pygame"
|
|
camera = "scroll"
|
|
effects = []
|
|
camera_speed = 0.3
|
|
viewport_width = 100
|
|
viewport_height = 35
|
|
|
|
[presets.gallery-sources-empty]
|
|
description = "Gallery: Empty source (for border tests)"
|
|
source = "empty"
|
|
display = "terminal"
|
|
camera = "feed"
|
|
effects = ["border"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
# ============================================
|
|
# EFFECT GALLERY
|
|
# ============================================
|
|
|
|
[presets.gallery-effect-noise]
|
|
description = "Gallery: Noise effect"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = ["noise"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-effect-fade]
|
|
description = "Gallery: Fade effect"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = ["fade"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-effect-glitch]
|
|
description = "Gallery: Glitch effect"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = ["glitch"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-effect-firehose]
|
|
description = "Gallery: Firehose effect"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = ["firehose"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-effect-hud]
|
|
description = "Gallery: HUD effect"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = ["hud"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-effect-tint]
|
|
description = "Gallery: Tint effect"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = ["tint"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-effect-border]
|
|
description = "Gallery: Border effect"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = ["border"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-effect-crop]
|
|
description = "Gallery: Crop effect"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = ["crop"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
# ============================================
|
|
# CAMERA GALLERY
|
|
# ============================================
|
|
|
|
[presets.gallery-camera-feed]
|
|
description = "Gallery: Feed camera (rapid single-item)"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = ["noise"]
|
|
camera_speed = 1.0
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-camera-scroll]
|
|
description = "Gallery: Scroll camera (smooth)"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "scroll"
|
|
effects = ["noise"]
|
|
camera_speed = 0.3
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-camera-horizontal]
|
|
description = "Gallery: Horizontal camera"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "horizontal"
|
|
effects = ["noise"]
|
|
camera_speed = 0.5
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-camera-omni]
|
|
description = "Gallery: Omni camera"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "omni"
|
|
effects = ["noise"]
|
|
camera_speed = 0.5
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-camera-floating]
|
|
description = "Gallery: Floating camera"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "floating"
|
|
effects = ["noise"]
|
|
camera_speed = 1.0
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-camera-bounce]
|
|
description = "Gallery: Bounce camera"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "bounce"
|
|
effects = ["noise"]
|
|
camera_speed = 1.0
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
# ============================================
|
|
# DISPLAY GALLERY
|
|
# ============================================
|
|
|
|
[presets.gallery-display-terminal]
|
|
description = "Gallery: Terminal display"
|
|
source = "headlines"
|
|
display = "terminal"
|
|
camera = "feed"
|
|
effects = ["noise"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-display-pygame]
|
|
description = "Gallery: Pygame display"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = ["noise"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-display-websocket]
|
|
description = "Gallery: WebSocket display"
|
|
source = "headlines"
|
|
display = "websocket"
|
|
camera = "feed"
|
|
effects = ["noise"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.gallery-display-multi]
|
|
description = "Gallery: MultiDisplay (terminal + pygame)"
|
|
source = "headlines"
|
|
display = "multi:terminal,pygame"
|
|
camera = "feed"
|
|
effects = ["noise"]
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
# ============================================
|
|
# SENSOR CONFIGURATION
|
|
# ============================================
|
|
|
|
[sensors.mic]
|
|
enabled = false
|
|
threshold_db = 50.0
|
|
|
|
[sensors.oscillator]
|
|
enabled = false
|
|
waveform = "sine"
|
|
frequency = 1.0
|
|
|
|
# ============================================
|
|
# 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
|