minimal file manager with terminal UI #Go
Alternatives To Gls
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
a day ago20July 26, 20224bsd-2-clauseC
n³ The unorthodox terminal file manager
2 hours ago68September 21, 2022318mitJavaScript
📻Terminal/ssh/telnet/serialport/sftp client(linux, mac, win)
Lf5,65313 days ago41April 25, 2021200mitGo
Terminal file manager
a month ago1March 03, 202157mitShell
📁 A simple file manager written in bash.
5 days ago124September 11, 20229mitRust
A hackable, minimal, fast TUI file explorer
5 hours ago243gpl-2.0C
Linux port of FAR v2
a month ago1lgpl-3.0Python
ssh rdp vnc telnet sftp bastion/jump web putty xshell terminal jumpserver audit realtime monitor rz/sz 堡垒机 云桌面 linux devops sftp websocket file management rz/sz otp 自动化运维 审计 录像 文件管理 sftp上传 实时监控 录像回放 网页版rz/sz上传下载/动态口令 django
20 days ago3July 08, 202231lgpl-3.0Rust
ranger-like terminal file manager written in Rust
15 hours ago11gpl-2.0C
The shell-like, command line terminal file manager: simple, fast, extensible, and lightweight as hell
7 months ago2bsd-2-clauseVim Script
File manager for vim/neovim powered by n³
Alternatives To Gls
Select To Compare

Alternative Project Comparisons


made-with-Go GitHub go.mod Go version of a Go module Linux macOS Windows

Its ls + du + tree with interactive TUI on your terminal! gls is created to easily view, filter and search your files, folders and directories with their size whenever you need to open up some storage space. It wouldnt be wrong to say that gls is a minimal yet powerful file manager CLI tool.

Table of Contents


From Source Code

Installing gls on your machine with the source code is pretty simple: just clone the repo and install cmd/gls.go:

$ git clone
$ cd gls
$ go install ./cmd/gls.go

After you run go install command, an executable file name gls is created in $GOPATH/bin. Now, you can simply run gls in terminal:

$ gls

For Ubuntu/Debian and derivatives

If you use a Debian-based distro on Linux, you can download the package which seems like gls_<VERSION_NUMBER>_amd64.deb from Releases page. Then, you can install it

  • via a package management software with GUI by clicking on the package if you use desktop environment
  • or from the terminal, type sudo dpkg -i gls_<VERSION_NUMBER>_amd64.deb in the directory where you downloaded the package.

For Windows

You can apply the similar procedure in PowerShell shown in the From Source Code section:

> git clone
> cd .\gls\
> go install -v .\cmd\gls.go

Now, you can use gls in all directories.


There are two running modes of gls: TUI and text-based.

The TUI mode is interactive and you will be able to use all of the features of gls, such as searching by text/regular expression, traversing on the file tree, creating/opening/deleting files and many other things, until you close the program.

The text mode however, is fairly simple and is a literal combination of running tree and du altogether, with some additional features.

Default usage (TUI)

The command below runs gls with TUI, which is the default mode. It parses the file tree under the specified path along with the file and folder sizes on disk, then shows the tree view of the parsed tree.

gls -path ~/Downloads

Screenshot of the TUI mode of gls

Text mode

The command below does the same parsing process as the command above does. Except, this one just dumps the parsed tree as a the tree command does with the file/folder sizes and permissions, to the terminal.

gls -nogui -path ~/Documents


gls includes (and still continues to include more) several features that mimic a normal file manager:

  • List the files and folders under the specified path, in tree view
  • Show current file info: size on disk, permissions, path, MIME type and last modification
  • Sort the tree by the size on disk
  • Search files/folders by name, using both plaintext and regular expressions
  • Ignore specific files/folders by using regular expressions, similar to .gitignore style
    • Default ignore file is .glsignore, but infinitely many other ignore files can be specified through the CLI arguments
  • Open files and folders by default programs or executables that you specify
  • Copy/paste and move files and folders
  • Remove files
  • Create (similar to touch) and open files to edit
  • Walk on the file tree, collapse and expand nodes easily

TUI shortcuts

Shortcut Command Description
q, ESC, C quit Exits the program
c collapse Collapses all nodes in the file tree view
e expand Expands all nodes in the file tree view
s search Opens modal to search nodes (files and folders) by name
r regex search Same as search, but you can search using regular expressions
x restore Loads the original file tree view, mostly used after search and regex search
o open Opens the selected (on hover) file/folder with the default program
p open Opens modal to specify the executable path which will be used to open the selected (on hover) file/folder
BACKSPACE , DEL remove Removes the selected (on hover) file. Folder removal is currently not supported
m mark Marks/unmarks the selected (on hover) file or folder. Marked nodes can be used later for duplicate and move
u unmark Unmarks all the marked files and folders
n new Create a new file
d duplicate Copy/pastes the marked files and folders to a specified destination. The destination is specified by the text input of the opened form.
v open file in vim Opens file in VIM editor.
TAB, SPACE, ENTER toggle expand node Expands the node if currently collapsed, and vice versa, the selected (on hover) file or folder
ARROW KEYS, SCROLL navigate Navigates between nodes in the file tree view


You can freely change the key bindings and shortcuts or configure the program for your needs from gui/core.go .

After your changes, run

go build cmd/gls.go

in the project directory.

In addition, if you think that your configurations or other changes seem necessary to improve the project, your contributions will be welcomed :)

Customize color palette

You can customize the color palette with .glsrc file. The only thing you need to do is create a .glsrc file in $HOME directory and set the colors as key-value pairs. An example is below:


When you run the program, the color palette values are overridden with values in .glsrc file. The file must be stored in $HOME directory and the file name must be .glsrc. Otherwise, the program uses the default color palette values.

Command line arguments

    	Increase log verbosity
-fmt string
   		size formatter, one of bytes, pow10 or none (default "bytes")
-ignore string
    	Comma-separated ignore files that specify which files folders to exclude
    	text-only mode
-path string
    	path to run on (required)
    	sort nodes by size (default true)
-thresh string
    	size filter threshold, e.g. 10M, 100K, etc.

You can also read this section from terminal by using gls without parameters.

How to Contribute

You are very welcome to contribute to gls! Here are a few steps to guide you how to start contributing:

  1. Check the open issues tab to see if there are any issue you may be interested in fixing. You can also list the issues with only the good-first-issue tag

  2. Check the contributing guide for more explanation on setting up the development environment, opening the PR, etc.

Popular Terminal Projects
Popular File Manager Projects
Popular Command Line Interface Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Command Line
Command Line Tool
File Manager