Television is a cross-platform, fast, and extensible general-purpose fuzzy finder designed to help users quickly search through various data sources such as files, git repositories, environment variables, and more. Built with a terminal user interface (TUI), it provides seamless integration with shells and supports asynchronous operations for optimal performance.
Key Features:
High-speed, responsive UI leveraging asynchronous I/O and multithreading.
Advanced fuzzy matching algorithm for efficient filtering of large datasets.
Builtin channels for common data sources like files, git repositories, and environment variables.
Customizable themes to suit individual preferences or workflows.
Cross-platform support for Linux, macOS, and Windows.
Audience & Benefit:
Ideal for developers, power users, and anyone seeking a fast and flexible way to navigate and search through data. Television enhances productivity by enabling quick access to information across diverse sources, with minimal setup required. It can be installed via winget, ensuring easy integration into existing workflows.
README
Television (tv)
A very fast, portable and hackable fuzzy finder for the terminal.
About
Television is a very fast, portable and hackable fuzzy finder for the terminal.
It lets you search in real time through any kind of data source (called "channels") such as:
with support for previewing results, customizable actions and keybindings, and integration with your favorite
shell and editor.
Getting started with tv
tv uses channels to define different sources of data to browse and preview. It comes with several built-in channels for common tasks like browsing files, searching text, and viewing git repositories.
tv # uses the default channel (usually "files")
tv files # browse files and directories
tv text # ripgrep-powered text search
tv git-repos # browse git repositories
To get a list of available channels, run:
tv list-channels
To pull in the latest community channels from the github repo, run:
tv update-channels
You can also pipe output into tv to search through command results, logs, or any
stream of text:
rg "ERROR" /var/log/syslog | tv
git log --oneline | tv
my_program_that_generates_logs | tv
And if you need a one-off channel for a specific task, tv's command line options let you create temporary channels on the fly:
tv --source-command "rg --line-number --no-heading TODO ."
tv --source-command "fd -t f" --preview-command "bat -n --color=always '{}'" --preview-size 70
You can create custom channels for any specific task you want to do regularly. Channels are defined using TOML files that specify how to get the data, how to preview it, and any keybindings or actions you want to add.
Example: TLDR pages channel
Create a channel: ~/.config/television/cable/tldr.toml
[metadata]
name = "tldr"
description = "Browse and preview TLDR help pages for command-line tools"
requirements = ["tldr"]
[source]
command = "tldr --list"
[preview]
command = "tldr '{0}'"
[keybindings]
ctrl-e = "actions:open"
[actions.open]
description = "Open the selected TLDR page"
command = "tldr '{0}'"
mode = "execute"
tv # default channel
tv [channel] # e.g. `tv files`, `tv env`, `tv git-repos`, `tv my-awesome-channel` etc.
# pipe the output of your program into tv
my_program | tv
fd -t f . | tv --preview-command 'bat -n --color=always {}'
# or build your own channel on the fly
tv --source-command 'fd -t f .' --preview-command 'bat -n --color=always {}' --preview-size 70
> [!TIP]
> 🐚 Television has builtin shell integration. More info here.