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] # https://raw.githubusercontent.com/wb2osz/direwolf/dev/doc/User-Guide.pdf — # the default direwolf.conf is searched in the current directory and then in # the user's home directory when no -c path is supplied. paths = ["~/direwolf.conf"] secret = [] # https://github.com/wb2osz/direwolf/blob/master/conf/generic.conf — IGLOGIN # carries the APRS-IS login name and passcode in the user config line. [[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"]