forked from genewildish/Mainline
- Rename VERTICAL camera mode to FEED (rapid single-item view) - Add SCROLL camera mode with float accumulation for smooth movie-credits style scrolling - Add estimate_block_height() for cheap layout calculation without full rendering - Replace ViewportFilterStage with layout-aware filtering that tracks camera position - Add render caching to FontStage to avoid re-rendering items - Fix CameraStage to use global canvas height for scrolling bounds - Add horizontal padding in Camera.apply() to prevent ghosting - Add get_dimensions() to MultiDisplay for proper viewport sizing - Fix PygameDisplay to auto-detect viewport from window size - Update presets to use scroll camera with appropriate speeds
118 lines
2.4 KiB
TOML
118 lines
2.4 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)
|
|
|
|
[presets.demo]
|
|
description = "Demo mode with effect cycling and camera modes"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "scroll"
|
|
effects = ["noise", "fade", "glitch", "firehose"]
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
camera_speed = 1.0
|
|
firehose_enabled = true
|
|
|
|
[presets.poetry]
|
|
description = "Poetry feed with subtle effects"
|
|
source = "poetry"
|
|
display = "pygame"
|
|
camera = "scroll"
|
|
effects = ["fade"]
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
camera_speed = 0.5
|
|
|
|
[presets.border-test]
|
|
description = "Test border rendering with empty buffer"
|
|
source = "empty"
|
|
display = "terminal"
|
|
camera = "scroll"
|
|
effects = ["border"]
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
camera_speed = 1.0
|
|
firehose_enabled = false
|
|
border = false
|
|
|
|
[presets.websocket]
|
|
description = "WebSocket display mode"
|
|
source = "headlines"
|
|
display = "websocket"
|
|
camera = "scroll"
|
|
effects = ["noise", "fade", "glitch"]
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
camera_speed = 1.0
|
|
firehose_enabled = false
|
|
|
|
[presets.sixel]
|
|
description = "Sixel graphics display mode"
|
|
source = "headlines"
|
|
display = "sixel"
|
|
camera = "scroll"
|
|
effects = ["noise", "fade", "glitch"]
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
camera_speed = 1.0
|
|
firehose_enabled = false
|
|
|
|
[presets.firehose]
|
|
description = "High-speed firehose mode"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "scroll"
|
|
effects = ["noise", "fade", "glitch", "firehose"]
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
camera_speed = 2.0
|
|
firehose_enabled = true
|
|
|
|
[presets.pipeline-inspect]
|
|
description = "Live pipeline introspection with DAG and performance metrics"
|
|
source = "pipeline-inspect"
|
|
display = "pygame"
|
|
camera = "scroll"
|
|
effects = ["crop"]
|
|
viewport_width = 100
|
|
viewport_height = 35
|
|
camera_speed = 0.3
|
|
firehose_enabled = false
|
|
|
|
# Sensor configuration (for future use with param bindings)
|
|
[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
|