cd /news/ai-tools/peektea-brews-on-wsl-and-installs-in… · home topics ai-tools article
[ARTICLE · art-23508] src=dev.to pub= topic=ai-tools verified=true sentiment=↑ positive

peektea brews on WSL 👀🍵 (and installs in one line)

Developer Maneshwar has added Windows Subsystem for Linux (WSL) support to peektea, a minimal terminal file browser built with Bubble Tea. The tool now automatically detects WSL environments and routes file openings through `wslview` or `explorer.exe` when no Linux GUI apps are available, converting Linux paths to Windows UNC paths as needed. Peektea also now installs via a single curl command, replacing the previous "brew from source" requirement.

read5 min publishedJun 6, 2026

Hello, I'm Maneshwar. I'm building git-lrc, a Micro AI code reviewer that runs on every commit. It is free and source-available on Github. Star git-lrc to help devs discover the project. Do give it a try and share your feedback.

Two things I kept putting off.

First: people on Windows asked if peektea runs on WSL. It does now.

Second: "brew it from source" is a terrible install story for a tool that's supposed to be minimal. That's fixed too.

Demo here in case above preview not showing up.

WSL is Linux. peektea runs on Linux. So far, so good.

The problem is o

the key that opens files.

On a normal Linux machine, pressing o

on an image launches feh

or eog

. On WSL there are no Linux GUI apps.

The call fails silently or prints an error.

peektea now detects WSL at startup:

func IsWSL() bool {
    if os.Getenv("WSL_DISTRO_NAME") != "" {
        return true
    }
    data, err := os.ReadFile("/proc/version")
    return err == nil && strings.Contains(strings.ToLower(string(data)), "microsoft")
}

When WSL is detected, file opens route through wslview

(from wslu) if it's installed, otherwise fall back to explorer.exe

:

func WSLOpener() string {
    if _, err := exec.LookPath("wslview"); err == nil {
        return "wslview"
    }
    if _, err := exec.LookPath("explorer.exe"); err == nil {
        return "explorer.exe"
    }
    if _, err := os.Stat("/mnt/c/Windows/explorer.exe"); err == nil {
        return "/mnt/c/Windows/explorer.exe"
    }
    return ""
}

There's one more wrinkle: Windows programs can't read Linux paths like /home/taco/file.png

.

They need UNC paths like \\wsl.localhost\Ubuntu\home\taco\file.png

.

WSL ships wslpath

for exactly this:

func WindowsPath(path string) string {
    out, err := exec.Command("wslpath", "-w", path).Output()
    if err != nil {
        return path
    }
    return strings.TrimSpace(string(out))
}

When the configured opener ends in .exe

, the path gets converted before the command runs.

wslview

handles conversion itself so it doesn't need this, only raw explorer.exe

does.

A minimal terminal file browser built with Bubble Tea.

Peek through your filesystem with arrow keys (or vim keys), then pour each file straight into the app you've configured for it.

A quick peek before you steep:

One-liner:

curl -fsSL https://raw.githubusercontent.com/lovestaco/peektea/master/scripts/install.sh | sh

Download a binary (no Go required) — grab the latest release for your platform from the releases page:

Platform File
Linux x86-64 peektea_
Linux arm64 peektea
macOS x86-64 peektea
macOS Apple Silicon peektea_darwin_arm64.tar.gz

Extract and put the peektea

binary anywhere on your $PATH

.

Install with Go:

go install github.com/lovestaco/peektea@latest

Build from source:

git clone https://github.com/lovestaco/peektea
cd peektea
make install

make install

puts the binary in ~/go/bin

and figures out $PATH

for you:

~/.local/bin

is on your PATH — symlinks the binary there, works immediately in the current shell.~/go/bin

to your .bashrc

peektea init

on a normal Linux machine asks you to pick a text editor, file manager, image viewer, and PDF viewer from what's installed.

On WSL there usually aren't any Linux GUI apps. Asking you to pick between zero options isn't a great experience.

So on WSL, init skips those categories and sets the Windows opener as the fallback instead of xdg-open

.

You still get the full text editor setup (vim, nvim, nano those work fine in WSL), and the Windows side handles everything visual.

Demo here in case the above preview is not showing up.

While at it, peektea init

got smarter in general.

If you decline the "already exists, overwrite?" prompt, it used to just exit.

Now it keeps your config and continues to the chafa check, so you can re-run peektea init

any time just to install extras without nuking your setup.

And if chafa isn't installed, it doesn't just print the install command anymore.

It offers to run it:

── Image previews
   chafa not found — it renders images right in the terminal (the `p` preview).
   Install it now? (sudo apt install -y chafa) [Y/n]:

It detects your package manager (apt

, dnf

, pacman

, zypper

, apk

, brew

) and runs the right command. Bare enter means yes.

The other thing that needed fixing: the only install method was cloning the repo and running make install

.

That requires Go, git, and knowing where ~/go/bin

is.

Too much friction for a tool that's supposed to just work.

peektea now ships pre-built binaries for Linux and macOS (x86-64 and arm64) on every release.

One-liner:

curl -fsSL https://raw.githubusercontent.com/lovestaco/peektea/master/scripts/install.sh | sh

The script detects your OS and architecture, pulls the right binary from the latest release, and installs it to ~/.local/bin

or /usr/local/bin

whichever is already on your PATH.

With Go:

go install github.com/lovestaco/peektea@latest

** peektea version now works correctly** regardless of how you installed it.

When installed via go install

, the binary reads its own module version from debug.ReadBuildInfo()

.

When built with make install

, the version comes from git describe

via ldflags.

Either way:

peektea version

AI agents write code fast. They also silently remove logic, change behavior, and introduce bugs — without telling you. You often find out in production.

git-lrc fixes this. It hooks into git commit and reviews every diff before it lands. 60-second setup. Completely free.

Any feedback or contributors are welcome! It's online, source-available, and ready for anyone to use.

⭐ Star it on GitHub:

| 🇩🇰 Dansk | 🇪🇸 Español | 🇮🇷 Farsi | 🇫🇮 Suomi | 🇯🇵 日本語 | 🇳🇴 Norsk | 🇵🇹 Português | 🇷🇺 Русский | 🇦🇱 Shqip | 🇨🇳 中文 |

AI agents write code fast. They also silently remove logic, change behavior, and introduce bugs -- without telling you. You often find out in production.

** git-lrc fixes this.** It hooks into

git commit

and reviews every diff git-lrc-intro-60s.mp4See git-lrc catch serious security issues such as leaked credentials, expensive cloud operations, and sensitive material in log statements

── more in #ai-tools 4 stories · sorted by recency
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/peektea-brews-on-wsl…] indexed:0 read:5min 2026-06-06 ·