shepherd-launcher/config.example.toml
2025-12-29 16:54:57 -05:00

271 lines
6.9 KiB
TOML

# Sample shepherdd configuration
# This file defines the policy for what applications can run and when
config_version = 1
[service]
# 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)
# Set to 0 for unlimited (no time limit)
default_max_run_seconds = 3600
# Global volume restrictions (optional)
# These apply when no entry-specific restrictions are defined
[service.volume]
max_volume = 80 # Maximum volume percentage (0-100)
# min_volume = 20 # Minimum volume percentage (0-100)
allow_mute = true # Whether mute toggle is allowed
allow_change = true # Whether volume changes are allowed at all
# Default warning thresholds
[[service.default_warnings]]
seconds_before = 300
severity = "info"
message = "5 minutes remaining"
[[service.default_warnings]]
seconds_before = 60
severity = "warn"
message = "1 minute remaining!"
[[service.default_warnings]]
seconds_before = 10
severity = "critical"
message = "10 seconds remaining!"
# -----------------------------------------------------------------------------
# Entries
# -----------------------------------------------------------------------------
## === Native Linux executables ===
# Tux Math - math games
# Ubuntu: sudo apt install tuxmath
[[entries]]
id = "tuxmath"
label = "Tux Math"
icon = "tuxmath"
[entries.kind]
type = "process"
command = "tuxmath"
[entries.availability]
[[entries.availability.windows]]
days = "weekdays"
start = "15:00"
end = "18:00"
[[entries.availability.windows]]
days = "weekends"
start = "10:00"
end = "20:00"
# Putt Putt Joins the Circus via ScummVM
# This requires ScummVM to be installed (Ubuntu: `sudo apt install scummvm`).
# You must install the game files from your copy of the game into ScummVM first.
# See https://docs.scummvm.org/en/v2.9.1/use_scummvm/game_files.html for how to do this.
# If you do not have the game files, you can run via Steam instead (see below).
# https://store.steampowered.com/app/294690/PuttPutt_Joins_the_Circus/
[[entries]]
id = "scummvm-putt-putt"
label = "Putt Putt Joins the Circus"
icon = "scummvm"
[entries.kind]
type = "process"
command = "scummvm"
args = ["puttcircus-win-us"] # ScummVM game ID for Putt Putt Joins the Circus
[entries.availability]
[[entries.availability.windows]]
days = "weekdays"
start = "15:00"
end = "18:00"
[[entries.availability.windows]]
days = "weekends"
start = "10:00"
end = "20:00"
# Secret of Monkey Island via ScummVM
# Like above, but with the following caveats:
# * I have only tested this with the original CD-ROM version of the game.
# * The GOG version at https://www.gog.com/en/game/the_secret_of_monkey_island_special_edition uses a different engine.
# * It does *not* contain ScummVM-compatible data files, so this entry will not work with that version.
# * It may be possible to extract compatible files from the GOG installer or run it via WINE, but that is outside the scope of this example.
# * See https://www.gratissaugen.de/ultimatetalkies/ for how to do this.
[[entries]]
id = "scummvm-monkey-island"
label = "Secret of Monkey Island"
icon = "scummvm"
[entries.kind]
type = "process"
command = "scummvm"
args = ["monkey"] # ScummVM game ID for Secret of Monkey Island
[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]
# Set max_run_seconds or daily_quota_seconds to 0 for unlimited
max_run_seconds = 3600 # 1 hour max (0 = unlimited)
daily_quota_seconds = 7200 # 2 hours per day (0 = unlimited)
cooldown_seconds = 300 # 5 minute cooldown after each session
## === Snap-based applications ===
# Snap entries use the "snap" type for proper process management.
# GCompris - educational games suite
# Ubuntu: sudo snap install gcompris
[[entries]]
id = "gcompris"
label = "GCompris"
icon = "gcompris"
[entries.kind]
type = "snap"
snap_name = "gcompris"
[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 = 0 # Unlimited
daily_quota_seconds = 0 # Unlimited
cooldown_seconds = 0 # No cooldown
# Minecraft via mc-installer snap
# Ubuntu: sudo snap install mc-installer
[[entries]]
id = "minecraft"
label = "Minecraft"
icon = "minecraft"
[entries.kind]
type = "snap"
snap_name = "mc-installer"
[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 = 1800 # 30 minutes (roughly 3 in-game days)
daily_quota_seconds = 3600 # 1 hour per day
cooldown_seconds = 600 # 10 minute cooldown
[[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!"
# Entry-specific volume restrictions (overrides global)
[entries.volume]
max_volume = 60 # Limit volume during gaming sessions
## === Steam games ===
# Steam can be used via Canonical's Steam snap package:
# https://snapcraft.io/steam
# Install it with: sudo snap install steam
# Steam must be set up and logged in before using these entries.
# You must have the games installed in your Steam library.
# Human Resource Machine
# https://store.steampowered.com/app/375820/Human_Resource_Machine
[[entries]]
id = "steam-human-resource-machine"
label = "Human Resource Machine"
icon = "steam"
[entries.kind]
type = "snap"
snap_name = "steam"
args = ["steam://rungameid/375820"] # Steam App ID (passed to 'snap run steam')
[entries.availability]
[[entries.availability.windows]]
days = "weekdays"
start = "15:00"
end = "18:00"
[[entries.availability.windows]]
days = "weekends"
start = "10:00"
end = "20:00"
# No [entries.limits] section - uses service defaults
# Omitting limits entirely uses default_max_run_seconds
## === Media ===
# Just use `mpv` to play media (for now).
# Files can be local on your system or URLs (YouTube, etc).
# "lofi hip hop radio 📚 beats to relax/study to" streamed live from YouTube
# This should eventually be replaced with the media type.
[[entries]]
id = "lofi-beats"
label = "Lofi Beats"
icon = "mpv"
[entries.kind]
type = "process"
command = "mpv"
args = ["https://www.youtube.com/watch?v=jfKfPfyJRdk"]
[entries.availability]
always = true
[entries.limits]
max_run_seconds = 0 # Unlimited: sleep/study aid
daily_quota_seconds = 0 # Unlimited
cooldown_seconds = 0 # No cooldown
# Example: Disabled entry
[[entries]]
id = "disabled-game"
label = "Game Under Maintenance"
disabled = true
disabled_reason = "This game is being updated"
[entries.kind]
type = "process"
command = "/bin/false"