id = "television"
name = "Television"
homepage = "https://alexpasmantier.github.io/television/"
description = "A very fast, portable and hackable fuzzy finder for the terminal."
icon = "https://raw.githubusercontent.com/alexpasmantier/television/main/website/static/img/logo.svg"
executables = ["tv"]
[dotfiles]
paths = [
"~/.config/television/config.toml",
"~/.config/television/cable/",
"%LOCALAPPDATA%/television/config",
]
secret = []
side_effect = false
[commands]
format = 1
label = "Fuzzy find"
description = "Open television on a channel or an ad-hoc source command, optionally with a preview command. UI layout, keybinding and template options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.source]]
id = "manpage"
kind = "manual"
url = "https://raw.githubusercontent.com/alexpasmantier/television/main/man/tv.1"
revision = "main 2026-10-27"
evidence = """
[CHANNEL]
Which channel shall we watch?
[PATH]
The working directory to start the application in.
-s, --source-command <STRING>
Source command to use for the current channel.
--ansi
Whether tv should extract and parse ANSI style codes from the source command output.
--no-sort
Disable automatic sorting of entries based on match quality.
-p, --preview-command <STRING>
--no-preview
-i, --input <STRING>
--layout <LAYOUT>
Layout orientation for the UI.
[possible values: landscape, portrait]
--height <INTEGER>
Height in lines for non-fullscreen mode.
--inline
Use all available empty space at the bottom of the terminal as an inline interface.
--exact
Use substring matching instead of fuzzy matching.
--select-1
Automatically select and output the first entry if there is only one
entry.
"""
[[commands.field]]
id = "channel"
label = "Channel"
description = "Leave empty with a source command for an ad-hoc channel. Run tv list-channels to see channels."
type = "string"
position = 0
suggestions = [{ value = "files", label = "files" }, { value = "text", label = "text" }, { value = "git-repos", label = "git-repos" }]
sources = ["manpage"]
[[commands.field]]
id = "path"
label = "Working directory"
type = "path"
position = 1
path = { kind = "directory", role = "input" }
sources = ["manpage"]
[[commands.field]]
id = "source_command"
label = "Source command"
description = "Overrides the channel's command, or defines an ad-hoc channel when no channel is given."
type = "string"
option = ["--source-command", "-s"]
sources = ["manpage"]
[[commands.field]]
id = "preview_command"
label = "Preview command"
description = "Use {} for the selected entry, e.g. cat {}."
type = "string"
option = ["--preview-command", "-p"]
sources = ["manpage"]
[[commands.field]]
id = "input"
label = "Initial query"
type = "string"
option = ["--input", "-i"]
sources = ["manpage"]
[[commands.field]]
id = "exact"
label = "Substring matching"
type = "boolean"
option = ["--exact"]
sources = ["manpage"]
[[commands.field]]
id = "select_1"
label = "Auto-select a single match"
type = "boolean"
option = ["--select-1"]
sources = ["manpage"]
[[commands.field]]
id = "no_sort"
label = "Keep source order"
type = "boolean"
option = ["--no-sort"]
sources = ["manpage"]
[[commands.field]]
id = "ansi"
label = "Parse ANSI colors"
type = "boolean"
option = ["--ansi"]
sources = ["manpage"]
[[commands.field]]
id = "no_preview"
label = "No preview panel"
type = "boolean"
option = ["--no-preview"]
sources = ["manpage"]
[[commands.field]]
id = "layout"
label = "Layout"
type = "enum"
option = ["--layout"]
choices = [{ value = "landscape", label = "Landscape" }, { value = "portrait", label = "Portrait" }]
sources = ["manpage"]
[[commands.field]]
id = "inline"
label = "Inline interface"
type = "boolean"
option = ["--inline"]
sources = ["manpage"]
[[commands.field]]
id = "height"
label = "Height (lines)"
type = "integer"
option = ["--height"]
sources = ["manpage"]
[[commands.task]]
id = "channel"
label = "Browse a channel"
fields = ["channel", "path", "input"]
required = ["channel"]
[[commands.task]]
id = "adhoc"
label = "Ad-hoc source with preview"
fields = ["source_command", "preview_command", "path"]
required = ["source_command"]
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["channel", "path", "source_command", "preview_command", "input"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["exact", "select_1", "no_sort", "ansi", "no_preview", "layout", "inline", "height"]