All Projects → Canop → Broot

Canop / Broot

Licence: mit
A new way to see and navigate directory trees : https://dystroy.org/broot

Programming Languages

rust
11053 projects
HTML
75241 projects
CSS
56736 projects

Projects that are alternatives of or similar to Broot

Pypistats
Command-line interface to PyPI Stats API to get download stats for Python packages
Stars: ✭ 86 (-98.65%)
Mutual labels:  command-line-tool, command-line, hacktoberfest
Terjira
Terjira is a very interactive and easy to use CLI tool for Jira.
Stars: ✭ 713 (-88.79%)
Mutual labels:  command-line-tool, command-line, hacktoberfest
Pueue
🌠 Manage your shell commands.
Stars: ✭ 2,471 (-61.16%)
Mutual labels:  command-line-tool, command-line, hacktoberfest
Laminas Cli
Console command runner, exposing commands written in Laminas MVC and Mezzio components and applications
Stars: ✭ 25 (-99.61%)
Mutual labels:  command-line-tool, command-line, hacktoberfest
Starcli
✨ Browse GitHub trending projects from your command line
Stars: ✭ 269 (-95.77%)
Mutual labels:  command-line-tool, command-line, hacktoberfest
Bulksplash
A simple command line tool that lets you bulk download images from Unsplash
Stars: ✭ 362 (-94.31%)
Mutual labels:  command-line-tool, command-line
Castero
TUI podcast client for the terminal
Stars: ✭ 375 (-94.11%)
Mutual labels:  command-line, hacktoberfest
Mongo Seeding
The ultimate solution for populating your MongoDB database.
Stars: ✭ 375 (-94.11%)
Mutual labels:  command-line-tool, hacktoberfest
Azure Devops Cli Extension
Azure DevOps Extension for Azure CLI
Stars: ✭ 420 (-93.4%)
Mutual labels:  command-line-tool, command-line
Laravel Packer
Awesome Command Line Tool for speeding up your package creation.
Stars: ✭ 313 (-95.08%)
Mutual labels:  command-line-tool, hacktoberfest
Jmxterm
Interactive command line JMX client
Stars: ✭ 389 (-93.89%)
Mutual labels:  command-line-tool, command-line
Performance
⏱ PHP performance tool analyser your script on time, memory usage and db query. Support Laravel and Composer for web, web console and command line interfaces.
Stars: ✭ 429 (-93.26%)
Mutual labels:  command-line-tool, command-line
Tsukae
🧑‍💻📊 Show off your most used shell commands
Stars: ✭ 345 (-94.58%)
Mutual labels:  command-line-tool, command-line
Gitui
Blazing 💥 fast terminal-ui for git written in rust 🦀
Stars: ✭ 6,762 (+6.29%)
Mutual labels:  command-line-tool, hacktoberfest
T Rec Rs
Blazingly fast terminal recorder that generates animated gif images for the web written in rust
Stars: ✭ 361 (-94.33%)
Mutual labels:  command-line-tool, hacktoberfest
Git Duet
Support for pairing with git
Stars: ✭ 313 (-95.08%)
Mutual labels:  command-line-tool, hacktoberfest
Sendmidi
Multi-platform command-line tool to send out MIDI messages
Stars: ✭ 411 (-93.54%)
Mutual labels:  command-line-tool, command-line
Node.cli Progress
⌛️ easy to use progress-bar for command-line/terminal applications
Stars: ✭ 466 (-92.68%)
Mutual labels:  command-line-tool, command-line
Dateutils
nifty command line date and time utilities; fast date calculations and conversion in the shell
Stars: ✭ 458 (-92.8%)
Mutual labels:  command-line-tool, command-line
Cbt
CBT - fun, fast, intuitive, compositional, statically checked builds written in Scala
Stars: ✭ 489 (-92.31%)
Mutual labels:  command-line-tool, command-line

Broot

CI MIT Latest Version Chat on Miaou

A better way to navigate directories

Installation Instructions

Get an overview of a directory, even a big one

br -s

overview

Notice the unlisted?

That's what makes it usable where the old tree command would produce pages of output.

.gitignore files are properly dealt with to put unwanted files out of your way (you can ignore them though, see documentation).

Find a directory then cd to it

type a few letters

cd

Hit altenter and you're back to the terminal in the desired location.

This way, you can navigate to a directory with the minimum amount of keystrokes, even if you don't exactly remember where it is.

broot is fast and doesn't block (any keystroke interrupts the current search to start the next one).

Most useful keys for this:

  • the letters of what you're looking for
  • enter on the root line to go up to the parent (staying in broot)
  • enter to focus a directory (staying in broot)
  • esc to get back to the previous state or clear your search
  • and may be used to move the selection
  • altenter to get back to the shell having cd to the selected directory
  • :q if you just want to quit (you can use ctrlq if you prefer)

Never lose track of file hierarchy while you search

search

broot tries to select the most relevant file. You can still go from one match to another one using tab or arrow keys.

You may also search with a regular expression. To do this, add a / before the pattern.

And you have other types of searches, for example searching on file content (start with c/):

content search

You may also apply logical operators or combine patterns, for example searching test in all files except json ones could be !/json$/&c/test and searching carg both in file names and file contents would be carg|c/carg.

Once the file you want is selected you can

  • hit enter (or double-click) to open it in your system's default program
  • hit altenter to open it in your system's default program and close broot
  • hit ctrl to preview it (and then a second time to go inside the preview)
  • type a verb. For example :e opens the file in your preferred editor (which may be a terminal one)

blog: a broot content search workflow

Manipulate your files

mv

Most often you move your files in the blind. You do a few ls before, then your manipulation, and maybe you check after.

You can instead do it without losing the view of the file hierarchy.

Move, copy, rm, mkdir, are built in and you can add your own shortcuts.

Manage files with panels

When a directory is selected, do ctrl and you open another panel (you may open other ones, or navigate between them, with ctrl and ctrl).

custom colors tree

(yes, colors are fully customizable)

Using two panels, you can for example copy or move elements between them:

cpp

If you like you may do it Norton Commander style by binding :copy_to_panel to F5 and :move_to_panel to F6.

Preview files

Hit ctrl when a file is selected and the preview panel appears.

preview

preview

The preview panel stays synchronized with the selection in tree panels.

If your terminal is kitty, then the image preview is high definition:

kitty preview

Apply a standard or personal shortcut to a file

size

Just find the file you want to edit with a few keystrokes, type :e, then enter.

You can add verbs or configure the existing ones; see documentation.

And you can add shortcuts, for example a ctrl sequence or a function key

Replace ls (and its clones):

If you want to display sizes, dates and permissions, do br -sdp which gets you this:

replace ls

You may also toggle options with a few keystrokes while inside broot. For example hitting a space, a d then enter shows you the dates. Or a space, then h then enter and you see hidden files.

Sort, see what takes space:

You may sort by launching broot with --sort-by-size or --sort-by-date. Or you may, inside broot, type a space, then sd, and enter and you toggled the :sort_by_date mode.

When sorting, the whole content of directories is taken into account. So if you want to find on Monday morning the most recently modified files, launch br --sort-by-date ~.

If you start broot with the --whale-spotting option (or its shortcut -w), you get a mode tailored to "whale spotting" navigation, making it easy to determine what files or folders take space.

whales

And you keep all broot tools, like filtering or the ability to delete or open files and directories.

If you hit :fs, you can check the usage of all filesystems, so that you focus on cleaning the full ones.

fs

Sizes, dates, files counts, are computed in the background, you don't have to wait for them when you navigate.

check git statuses:

size

Use :gf to display the statuses of files (what are the new ones, the modified ones, etc.), the current branch name and the change statistics.

And if you want to see only the files which would be displayed by the git status command, do :gs. From there it's easy to edit, or diff, selected files.

blog: use broot and meld to diff before commit

Further Reading

See Broot's web site for instructions regarding installation and usage.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].