explaingit

gokcehan/lf

9,265GoAudience · developerComplexity · 2/5Setup · easy

TLDR

lf is a fast, minimal terminal file manager written in Go that lets you browse and manage files entirely from the keyboard, with no GUI required. It starts instantly and uses very little memory.

Mindmap

mindmap
  root((lf))
    What it does
      Terminal file manager
      Keyboard navigation
      Background operations
    Tech Stack
      Go
      Single binary
    Use Cases
      Browse files in terminal
      Run shell commands
      Multi-instance control
    Setup
      Pre-built binary
      Package managers
      Build from source
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Navigate your file system from the terminal using keyboard shortcuts without touching a mouse or GUI file explorer.

USE CASE 2

Run file copy or move operations in the background while continuing to browse in the same lf session.

USE CASE 3

Extend file management with custom shell commands bound to keys, keeping lf lightweight while adding your own workflows.

Tech stack

Go

Getting it running

Difficulty · easy Time to first run · 5min

In plain English

lf, short for "list files", is a terminal file manager. Instead of using a graphical file explorer with icons and mouse clicks, lf runs inside a text terminal where you navigate your folders and files using the keyboard. It was written in Go and was inspired by an older terminal file manager called ranger. The program works on Linux, macOS, various Unix systems, and Windows. It ships as a single binary file with no additional software required to run it. The developers highlight that it starts quickly and uses little memory, which matters for users who keep it running in a terminal session alongside other tools. File operations happen in the background without freezing the interface, so you can browse while a copy or move is in progress. The program supports running multiple instances at once through a server and client setup, where one instance can send commands to another. Keybindings are customizable and come with defaults based on vi and readline conventions, which are familiar to many terminal users. lf deliberately leaves out certain features that other file managers sometimes include. It does not have built-in tabs, windows, a text editor, or a pager for reading files, on the reasoning that these are better handled by the surrounding shell environment or a terminal multiplexer. Instead, it focuses on file browsing and lets you extend its behavior through shell commands. Installation options include community-maintained packages, pre-built binaries from the releases page, or building from source with the Go toolchain. Running lf starts in the current directory, and the documentation is accessible directly from the command line.

Copy-paste prompts

Prompt 1
I just installed lf terminal file manager. Show me the most useful default keybindings and how to add a custom key that opens the selected file in my editor.
Prompt 2
Using lf, how do I write a keybinding in my lfrc config that runs a shell command on the currently selected file, like extracting a zip or converting an image?
Prompt 3
Help me configure lf so that when I quit, my shell automatically changes directory to wherever lf was last open. Show me the shell function and lfrc setting needed.
Open on GitHub → Explain another repo

← gokcehan on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.