id = "direwolf"
name = "Dire Wolf"
homepage = "https://github.com/wb2osz/direwolf"
description = "Software soundcard AX.25 packet modem/TNC and APRS encoder"
executables = ["direwolf"]
[dotfiles]
paths = ["~/direwolf.conf"]
secret = []
[[dotfiles.secret_paths]]
file = "~/direwolf.conf"
match = { prefix = ["IGLOGIN"] }
[commands]
format = 1
label = "Run Dire Wolf"
description = "Run the software TNC with common audio and logging options. Modem-specific, FX.25 and calibration options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.source]]
id = "man"
kind = "manual"
url = "https://manpages.debian.org/bookworm/direwolf/direwolf.1.en.html"
evidence = """
direwolf [ options ] [ - | udp:9999 ]
-c file
Read configuration file from specified location rather than the default locations.
-l logdir
Generate daily log files in specified directory. Use "." for current directory.
-r n
Audio sample rate per second for first channel. Default 44100.
-n n
Number of audio channels for first device. 1 or 2. Default 1.
-b n
Audio sample size for first channel. 8 or 16. Default 16.
-B n
Data rate in bits/sec for first channel. Standard values are 300, 1200, 2400, 4800, 9600.
-d x
Debug options.
-q x
Quiet (suppress output).
-t n
Text colors. 0=disabled. 1=default.
-p
Enable pseudo terminal for KISS protocol.
direwolf -n 1 -r 48000 -b 16 udp:7355
"""
[[commands.field]]
id = "input"
label = "Audio input"
description = "Leave empty to use the sound card from the config file. Use - for stdin or udp:PORT for streamed audio."
type = "string"
position = 0
suggestions = [{ value = "-", label = "Standard input" }, { value = "udp:7355", label = "UDP port 7355" }]
sources = ["man"]
[[commands.field]]
id = "config"
label = "Configuration file"
type = "path"
option = ["-c"]
path = { kind = "file", role = "input" }
sources = ["man"]
[[commands.field]]
id = "logdir"
label = "Log directory"
description = "Daily log files; use . for the current directory."
type = "path"
option = ["-l"]
path = { kind = "directory", role = "output" }
sources = ["man"]
[[commands.field]]
id = "rate"
label = "Sample rate"
description = "Samples per second for the first channel. Default 44100."
type = "integer"
option = ["-r"]
sources = ["man"]
[[commands.field]]
id = "channels"
label = "Audio channels"
type = "enum"
option = ["-n"]
choices = [{ value = "1", label = "1 (mono)" }, { value = "2", label = "2 (stereo)" }]
sources = ["man"]
[[commands.field]]
id = "sample_size"
label = "Sample size (bits)"
type = "enum"
option = ["-b"]
choices = [{ value = "8", label = "8-bit" }, { value = "16", label = "16-bit" }]
sources = ["man"]
[[commands.field]]
id = "baud"
label = "Data rate (bits/sec)"
type = "string"
option = ["-B"]
suggestions = [{ value = "300", label = "300" }, { value = "1200", label = "1200" }, { value = "2400", label = "2400" }, { value = "4800", label = "4800" }, { value = "9600", label = "9600" }]
sources = ["man"]
[[commands.field]]
id = "colors"
label = "Text colors"
description = "0 disables colors, 1 is the default."
type = "integer"
option = ["-t"]
sources = ["man"]
[[commands.field]]
id = "quiet"
label = "Suppress output"
description = "One or more letters: h = heard line, d = decoded packets."
type = "string"
option = ["-q"]
sources = ["man"]
[[commands.field]]
id = "debug"
label = "Debug options"
description = "One or more letters, e.g. k for KISS client or i for IGate."
type = "string"
option = ["-d"]
sources = ["man"]
[[commands.field]]
id = "pty"
label = "KISS pseudo terminal"
type = "boolean"
option = ["-p"]
sources = ["man"]
[[commands.task]]
id = "sdr"
label = "Stream audio from stdin or UDP"
fields = ["input", "rate", "channels", "sample_size"]
required = ["input"]
[[commands.task]]
id = "config"
label = "Run with a config file"
fields = ["config", "colors"]
required = ["config"]
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["input", "config", "rate", "channels", "sample_size"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["baud", "colors", "quiet", "debug", "pty", "logdir"]