Skip to content
Oeiuwq Faith Blog OpenSource Porfolio

alexpasmantier/television

A very fast, portable and hackable fuzzy finder for the terminal.

alexpasmantier/television.json
{
"createdAt": "2024-09-15T22:16:18Z",
"defaultBranch": "main",
"description": "A very fast, portable and hackable fuzzy finder for the terminal.",
"fullName": "alexpasmantier/television",
"homepage": "https://alexpasmantier.github.io/television/",
"language": "Rust",
"name": "television",
"pushedAt": "2026-01-06T11:20:55Z",
"stargazersCount": 3989,
"topics": [
"cli",
"command-line-tool",
"fuzzy",
"fuzzy-finder",
"fuzzy-matching",
"fuzzy-search",
"fuzzyfinder",
"grep",
"rust",
"television",
"terminal",
"tui",
"tv"
],
"updatedAt": "2026-01-07T21:24:02Z",
"url": "https://github.com/alexpasmantier/television"
}

A very fast, portable and hackable fuzzy finder for the terminal.

GitHub Release docs.rs GitHub branch check runs GitHub License Discord

2025-12-18-013816_hyprshot

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:

  • files and directories
  • code
  • notes
  • processes
  • git repositories
  • environment variables
  • docker containers
  • …and much more (creating your own channels)

with support for previewing results, customizable actions and keybindings, and integration with your favorite shell and editor.

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.

Terminal window
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:

Terminal window
tv list-channels

To pull in the latest community channels from the github repo, run:

Terminal window
tv update-channels

You can also pipe output into tv to search through command results, logs, or any stream of text:

Terminal window
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:

Terminal window
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.

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"

Start searching:

Terminal window
tv tldr

Switch channels using the remote control and pick from a large choice of community-maintained channels:

![tv remote]!(./assets/tv-files-remote.png)

See the channels docs for more info on how to set these up.

  1. [Automatically select the best installation method]!(#automatically-select-the-best-installation-method)
  2. [Linux]!(#linux)
  3. [MacOS]!(#macos)
  4. [Windows]!(#windows)
  5. [NetBSD]!(#netbsd)
  6. [Cross-platform]!(#cross-platform)
  7. [Precompiled binaries]!(#precompiled-binaries)

Automatically select the best installation method

Section titled “Automatically select the best installation method”

Running the following command will detect your OS and install television using the best available method:

Terminal window
curl -fsSL https://alexpasmantier.github.io/television/install.sh | bash
Terminal window
pacman -S television
Terminal window
VER=`curl -s "https://api.github.com/repos/alexpasmantier/television/releases/latest" | grep '"tag_name":' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/'`
curl -LO https://github.com/alexpasmantier/television/releases/download/$VER/tv-$VER-x86_64-unknown-linux-musl.deb
echo $VER
sudo dpkg -i tv-$VER-x86_64-unknown-linux-musl.deb
Terminal window
apk add chimera-repo-user
apk add television
Terminal window
nix run nixpkgs#television
Terminal window
brew install television
Terminal window
scoop bucket add extras
scoop install television
Terminal window
winget install --exact --id alexpasmantier.television
Terminal window
pkgin install television
Terminal window
cargo install television
Terminal window
pixi global install television

Download the latest release from the releases page.

Terminal window
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.

For more information, check out the docs.

This project was inspired by the awesome work done by the telescope neovim plugin.

It also leverages the great helix editor’s nucleo fuzzy matching library, the tokio async runtime as well as the formidable ratatui library.

A special thanks to tv’s contributors for their help and support: