What is Television?
Television (the command is tv) is a fuzzy finder built around channels. A channel is a named data source with its own preview command, keybindings and actions: files, text inside files, directories, git repositories, environment variables, processes, docker containers, or anything else you can describe in a few lines of TOML. It searches as you type, previews what is selected, and hands the result to the shell, an editor or your own command.
tv update-channels pulls the newest channel prototypes from upstream, which expect a matching binary. Neither Debian nor Ubuntu packages it, so a current build is not a nicety here; it is the only way to have it at all.
⚡ Key Features of Television
🔎 Channels, Not Just Files
Files, text, directories, git repositories, environment variables, processes and containers are all channels, tv list-channels shows what this build ships.
👁️ Previews Built In
Every channel can define a preview command, so you see the file, the log, the diff or the container details next to the results list.
🧵 Hackable in TOML
A channel is a small TOML file describing its source command, preview, keybindings and actions, a new workflow is a file in ~/.config/television/cable/.
⌨️ Shell Integration
tv init wires smart autocomplete onto Ctrl+T and history search onto Ctrl+R for bash, zsh and fish.
🚀 Fast by Design
An async, parallel matcher keeps typing responsive over very large sources, and previews are computed lazily and can be cached.
🧰 Ad-hoc Mode
--source-command and --preview-command turn any pair of shell commands into a one-off finder without writing a channel at all.
apt upgrade keeps you on the latest version.
📦 Installation from deb.griffo.io
Step 1: Add Repository
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update🆓 There is an always-free mirror. deb-free.griffo.io serves packages free forever, no account, no subscription, at most 2 months behind upstream, security fixes immediately. It currently carries cliamp, Ghostty, lazydocker, Oh My Posh and Zed; Television is not one of them, so the repository above is the only way to get it today, ask and it can be enrolled.
Step 2: Install Television
# Install latest Television
sudo apt install television
# Verify installation
tv --version# Install latest Television
apt install television
# Verify installation
tv --versionStep 3: First run and shell integration
# See which channels this build ships with
tv list-channels
# Search the files under the current directory
tv files
# Shell integration: Ctrl+T to complete, Ctrl+R for history
echo 'eval "$(tv init bash)"' >> ~/.bashrc
# The manual page and bash, zsh and fish completions ship with the package
man tv🎯 Basic Usage Examples
Everyday searching:
# The default channel
tv
# The channels you will use most
tv files
tv text
tv dirs
tv git-repos
# Start somewhere other than the current directory
tv files ~/src
# Fetch the latest channel prototypes from upstream
tv update-channelsAd-hoc channels from any command:
# Turn any command into a fuzzy finder
tv --source-command "fd -t f -H"
# With a preview built from the selected entry
tv --source-command "git branch --format='%(refname:short)'" \
--preview-command "git log -20 --oneline {}"
# Keep the colours the source command emits
tv --source-command "rg --color=always -n TODO" --ansi
# Preserve the source's own ordering instead of match ranking
tv --source-command "ls -t" --no-sortShell, completions and custom channels:
# Enable Ctrl+T and Ctrl+R in this shell
eval "$(tv init zsh)"
# Tab completion for tv's own subcommands
tv completions fish > ~/.config/fish/completions/tv.fish
# Custom channels live in the cable directory
mkdir -p ~/.config/television/cable
$EDITOR ~/.config/television/cable/tldr.toml
# After an upgrade, trim machine-written defaults from your config
tv migrate-config🔧 Tool Integrations
Television is designed to be glued to the rest of your setup:
- Your shell:
tv init bash,zshorfishadds smart autocomplete and history search, and any channel can print straight into the command line - Editors: community integrations exist for Neovim, Vim, VS Code, JetBrains IDEs and Zed, all driving the same binary
- ripgrep and friends: channels are shell commands, so
rg,fd,git,dockeror your own script can be the source - Config:
~/.config/television/config.tomlfor defaults and keybindings,cable/*.tomlfor the channels themselves - Everything else: the selected entry is printed on stdout, so
tvcomposes with pipes, aliases and scripts exactly like any other command
🚀 Why Choose deb.griffo.io?
- Official Ubuntu: does not package Television,
apt install televisionfails on a stock system - cargo install television: current, but a Rust compile on every machine, outside apt and without the man page or completions
- The upstream install script: convenient, but it writes into your system behind the package manager's back and updates itself on its own schedule
- deb.griffo.io: latest version with automatic updates
- ✅ Channels Match the Binary: channel prototypes evolve with the tool, so a current build is what makes
tv update-channelsuseful instead of confusing - ✅ The Only apt Source: Television is in neither the Debian nor the Ubuntu archives; this repository packages the official upstream build
- ✅ Automatic Updates: packages updated within hours of upstream releases
- ✅ Complete Package: the upstream binary as
/usr/bin/tv, thetv.1man page and bash, zsh and fish completions - ✅ Three Architectures, One Conflict Declared: amd64, arm64 and i386, and the package declares a conflict with
treeviewx, which owns the same/usr/bin/tvpath, so apt tells you instead of two packages fighting over it - ✅ Multi-Distribution: works on Ubuntu 22.04, 24.04, 25.10 and 26.04
- ✅ Easy Maintenance: standard apt commands for updates
📦 Package Build Repository
The Ubuntu packages are automatically built and maintained in this GitHub repository:
- 📼 television-debian - Latest release builds
🔗 Related Packages
Also available from deb.griffo.io:
- fzf - The classic fuzzy finder, if you prefer its model
- ripgrep - Fast recursive search to feed a channel
- zoxide - Directory jumping that pairs well with tv dirs
- Yazi - Terminal file manager for browsing what you found
💝 Support This Project
If this repository saves you time and effort, please consider supporting it!