id = "frotz" name = "Frotz" homepage = "https://661.org/proj/if/frotz/" description = "Infocom-style interactive fiction player." executables = ["frotz", "dfrotz", "sfrotz"] [dotfiles] # The upstream frotz(6) documentation and ux_init.c say curses Frotz checks # $HOME/.frotzrc before the system frotz.conf. The system file is intentionally # omitted because it is outside the user's home. # https://github.com/DavidGriffith/frotz/blob/master/doc/frotz.6 # https://github.com/DavidGriffith/frotz/blob/master/src/curses/ux_init.c paths = ["~/.frotzrc"] secret = [] [commands] format = 1 label = "Play a story file" description = "Start the curses Frotz interpreter on a Z-code or Blorb file with display, sound and random-seed options. Debug watch options and screen size overrides 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/testing/frotz/frotz.6.en.html" revision = "2.55+dfsg-3" evidence = """ frotz [options] file [blorb_file] -b Sets the default background color. -f Sets the default foreground color. -d Disable color. -F Force color mode. -e Enable sound. -q Quiet. Turns off sound effects. -m Enable mouse support. -p Plain ASCII output only. -s N Set the random number seed value. -t Sets the Z-machine's Tandy bit, which may affect the behavior of certain Infocom games. -u N Sets the number of slots available for Frotz's multiple undo hotkey -x Expand the abbreviations "g", "x", and "z" to "again", "examine", and "wait". -R Restricted read/write. black red green yellow blue magenta cyan white """ [[commands.field]] id = "story" label = "Story file" description = "Z-code or Blorb file." type = "path" position = 0 path = { kind = "file", role = "input", must_exist = true } sources = ["man"] [[commands.field]] id = "blorb" label = "Blorb file" description = "Optional alternatively-named Blorb file." type = "path" position = 1 min = 0 path = { kind = "file", role = "input", must_exist = true } sources = ["man"] [[commands.field]] id = "background" label = "Background color" type = "enum" option = ["-b"] choices = [{ value = "black", label = "Black" }, { value = "red", label = "Red" }, { value = "green", label = "Green" }, { value = "yellow", label = "Yellow" }, { value = "blue", label = "Blue" }, { value = "magenta", label = "Magenta" }, { value = "cyan", label = "Cyan" }, { value = "white", label = "White" }] sources = ["man"] [[commands.field]] id = "foreground" label = "Foreground color" type = "enum" option = ["-f"] choices = [{ value = "black", label = "Black" }, { value = "red", label = "Red" }, { value = "green", label = "Green" }, { value = "yellow", label = "Yellow" }, { value = "blue", label = "Blue" }, { value = "magenta", label = "Magenta" }, { value = "cyan", label = "Cyan" }, { value = "white", label = "White" }] sources = ["man"] [[commands.field]] id = "no_color" label = "Disable color" type = "boolean" option = ["-d"] sources = ["man"] [[commands.field]] id = "quiet" label = "Quiet (no sound)" type = "boolean" option = ["-q"] sources = ["man"] [[commands.field]] id = "plain_ascii" label = "Plain ASCII output" type = "boolean" option = ["-p"] sources = ["man"] [[commands.field]] id = "seed" label = "Random seed" type = "integer" option = ["-s"] sources = ["man"] [[commands.field]] id = "undo_slots" label = "Undo slots" type = "integer" option = ["-u"] sources = ["man"] [[commands.field]] id = "expand" label = "Expand g, x and z" type = "boolean" option = ["-x"] sources = ["man"] [[commands.field]] id = "tandy" label = "Tandy bit" type = "boolean" option = ["-t"] sources = ["man"] [[commands.field]] id = "mouse" label = "Mouse support" type = "boolean" option = ["-m"] sources = ["man"] [[commands.field]] id = "restrict_path" label = "Restrict file access to" type = "path" option = ["-R"] path = { kind = "directory", role = "input" } sources = ["man"] [[commands.task]] id = "play" label = "Play" fields = ["story", "blorb", "background", "foreground", "plain_ascii", "quiet"] required = ["story"] [[commands.task]] id = "plain" label = "Plain terminal (no color, ASCII)" set = { no_color = [true], plain_ascii = [true] } lock = ["no_color", "plain_ascii"] fields = ["story", "no_color", "plain_ascii", "quiet"] required = ["story"] [[commands.group]] id = "basic" label = "Basic" fields = ["story", "blorb", "background", "foreground", "no_color", "quiet", "plain_ascii"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["seed", "undo_slots", "expand", "tandy", "mouse", "restrict_path"]