shepherd-launcher/config.example.toml
2025-12-27 14:18:32 -05:00

118 lines
2.5 KiB
TOML

# Sample shepherdd configuration
# This file defines the policy for what applications can run and when
config_version = 1
[daemon]
# Uncomment to customize paths
# socket_path = "/run/shepherdd/shepherdd.sock"
# log_dir = "/var/log/shepherdd"
# data_dir = "/var/lib/shepherdd"
# Default max run duration if not specified per entry (1 hour)
default_max_run_seconds = 3600
# Default warning thresholds
[[daemon.default_warnings]]
seconds_before = 300
severity = "info"
message = "5 minutes remaining"
[[daemon.default_warnings]]
seconds_before = 60
severity = "warn"
message = "1 minute remaining!"
[[daemon.default_warnings]]
seconds_before = 10
severity = "critical"
message = "10 seconds remaining!"
# -----------------------------------------------------------------------------
# Entries
# -----------------------------------------------------------------------------
# Example: ScummVM - classic adventure games
[[entries]]
id = "scummvm"
label = "ScummVM"
icon = "scummvm"
[entries.kind]
type = "process"
argv = ["scummvm", "-f"]
[entries.availability]
[[entries.availability.windows]]
days = "weekdays"
start = "15:00"
end = "18:00"
[[entries.availability.windows]]
days = "weekends"
start = "10:00"
end = "20:00"
[entries.limits]
max_run_seconds = 3600 # 1 hour max
daily_quota_seconds = 7200 # 2 hours per day
cooldown_seconds = 300 # 5 minute cooldown after each session
# Example: Minecraft (via snap mc-installer)
[[entries]]
id = "minecraft"
label = "Minecraft"
icon = "minecraft"
[entries.kind]
type = "process"
argv = ["mc-installer"]
[entries.availability]
always = true # No time restrictions
[entries.limits]
max_run_seconds = 5400 # 90 minutes
daily_quota_seconds = 10800 # 3 hours per day
[[entries.warnings]]
seconds_before = 600
severity = "info"
message = "10 minutes left - start wrapping up!"
[[entries.warnings]]
seconds_before = 120
severity = "warn"
message = "2 minutes remaining - save your game!"
[[entries.warnings]]
seconds_before = 30
severity = "critical"
message = "30 seconds! Save NOW!"
# Example: Educational game - unrestricted
[[entries]]
id = "tuxmath"
label = "Tux Math"
icon = "tuxmath"
[entries.kind]
type = "process"
argv = ["tuxmath"]
[entries.availability]
always = true
[entries.limits]
max_run_seconds = 7200 # 2 hours
# Example: Disabled entry
[[entries]]
id = "disabled-game"
label = "Game Under Maintenance"
disabled = true
disabled_reason = "This game is being updated"
[entries.kind]
type = "process"
argv = ["/bin/false"]