
Broot – A new way to see and navigate directory trees - gilad
https://dystroy.org/broot/
======
fraktl
I'm one of those skeptic people who always criticize just because I'm a
negative person. However... I LOVE THIS PROGRAM! I really, really, _really_
love it!

I don't care if it's been done before. I don't care if <insert name here>
exists and does a similar thing.

Awesome because: \- short name (br in terminal, I'll remember that instantly)

\- easy installation

\- web page is awesome and shows you instantly how to best use this program

\- help page in the program itself is awesome, clear and easy to navigate

\- defaults are sensible and totally easy to get used to

\- broot just WORKS! and it works well, I finally got rid of all the aliases
around ls that I used in order to get info I want

Amazing job Denys, 10/10 for the web, program, documentation and examples!

Btw. Linux/Windows user here.

~~~
yodsanklai
Just installed it. It looks nice. It's great to see that there is room for
improvement for the shell commands and utilities we use everyday.

I think a vim mode would be great. The first thing I did was to use 'j' to
navigate in the tree.

~~~
dystroy
The problem with using "j" to go down is that it prevents you from using "j"
to filter files having a "j" in their name.

~~~
jgrpf
A couple of programs substitue that with ctrl+[hjkl].

~~~
dystroy
You can define your own shortcuts for navigation. See for example this:
[https://github.com/Canop/broot/issues/24#issuecomment-572481...](https://github.com/Canop/broot/issues/24#issuecomment-572481660)

------
breytex
Love it. Thanks for sharing.

But I found one issue which might be a critical one:

When you start broot with "br --sizes", it shows you all the folder sizes. The
tree than takes a while to render all the different files and folders, since
they probably have to be recursively evaluated in size.

However, when you select a specific file, press space and then `rm` to delete
it, the pointer might change to another file randomly. This is because the
file list is still not rendered-out because of the file sizes beeing
calculated, however, the pointer to the selected file should be persistant or
you might accidentaly delete an important file.

~~~
dystroy
There's an issue for that (it's a few hours old). This is a top priority and
should be fixed before next week.

------
fastbeef
Man, I must be getting old, because more and more often something like this
pops up and it strikes me that this has been done before.

In this case, I was flying through the file system like nobodies business in
1991 with Norton Commander[0]

[0][https://en.wikipedia.org/wiki/Norton_Commander](https://en.wikipedia.org/wiki/Norton_Commander)

~~~
kronholm
Once you get used to two panes, it's hard to go back.

From ~1990 to now (yikes, 30 years!), I've used these:

\- Amiga: Directory Opus (DOpus)

\- MSDOS: Norton Commander (NC)

\- Windows: Total Commander

\- Linux: Midnight Commander (mc)

\- MacOS: Tux commander

Looking back at old Directory Opus screenshots tickles the nostalgic bone. I
miss the colourcoded buttons.

I wonder if Directory Opus was the first 2-split navigator, but probably not.

~~~
yks
What is the best modern file manager for MacOS? Using ForkLift but it's not
Total Commander.

~~~
nausher81
You can try Commander One - [https://apps.apple.com/us/app/commander-one-file-
manager/id1...](https://apps.apple.com/us/app/commander-one-file-
manager/id1035236694?mt=12)

I've used it as a replacement for Total Commander on the Mac. Another posted
posted Marta, which I just downloaded and it seems to have almost the same
features as Total Commander but in a free/open source offering.

------
sdan
Not only do I think this is cool and would use, but I also love the simple
landing page.

Pictures illustrating exactly what it does, something many
people/organizations _cough_ oxide.computer _cough_ don't do properly.

~~~
bbx
I was thinking the exact same thing.

I'm not the most technical person but I could easily understand the purpose of
the program by quickly scanning the webpage. The combo "clear headline + demo
screenshot" is all that's required to explain what the product features are,
and how I, as a user, can benefit from this product. There is even a blob of
text available under each screenshot, for those who want to know a little bit
more. (Reminds of "The obvious, the easy, and the possible" [1])

A lot of landing pages of SaaS products and other tech-related websites could
benefit a lot from this "old" but straightforward approach, instead of trying
to sell you a better lifestyle with "Be productive" or "Break free" or "Solve
all your issues" marketing headlines.

[1]: [https://signalvnoise.com/posts/3047-the-obvious-the-easy-
and...](https://signalvnoise.com/posts/3047-the-obvious-the-easy-and-the-
possible)

~~~
Royalaid
I think the reason this happens is because there is a belief that, and who
knows maybe it's the truth, people buy emotionally. Business and marketing
books (E-myth and How to win friends come to mind specifically) constantly
parrot that "sales studies" and "marketing research" show that people buy, or
this case download, with their feelings. This seems to lead people to add
vacuous fluff to marketing pages to "appeal" to someone's emotions.

As you can tell by most of comment I think this isn't the whole truth and that
really things live somewhere in the middle and that the domain and scope of
interaction greatly shift this spectrum one way or another, picking a
doctor/lawyer vs picking and IDE comes to mind for myself, YMMV with that
example and might even further drive home the point.

Long story long, marketing is hard and the people doing the marketing often
aren't domain experts and have to rely on the information passed to them
through a convoluted game of telephone via authors and experts that can't even
communicate everything needed to be effective because they themselves aren't
good at teaching.

------
Sammi
I had this immediate assumption that this was implemented in Rust when I saw
the landing page. Didn't know for sure until I checked Github, but lo and
behold it was which I think is funny. I sense a trend where new and
interesting projects are usually implemented in Rust.

~~~
eerrt
Yeah so many CLI tools in Rust:

[https://github.com/sharkdp/fd/](https://github.com/sharkdp/fd/)
[https://github.com/sharkdp/bat](https://github.com/sharkdp/bat)
[https://github.com/BurntSushi/ripgrep](https://github.com/BurntSushi/ripgrep)
[https://github.com/ogham/exa](https://github.com/ogham/exa)

~~~
eindiran
Here are some more that I've used or seen:

* lsd - [https://github.com/Peltoche/lsd](https://github.com/Peltoche/lsd)

* sk - [https://github.com/lotabout/skim](https://github.com/lotabout/skim)

* hx - [https://github.com/sitkevij/hex](https://github.com/sitkevij/hex)

~~~
pdimitar
Immediately installed and tried `hx` and liked it. Thank you for that.

Have you compared `skim` with `fzf`? And `lsd` with `exa`?

~~~
eindiran
I used to use `skim` a fair amount, but over time I've gradually found myself
defaulting to `fzf`, but YMMV. I haven't personally used `exa`, but I do like
`lsd`. I would also vouch for the other three tools mentioned by eerrt
(`ripgrep`, `fd`, and `bat`).

~~~
pdimitar
I switched to `ripgrep` a few months ago and I can't imagine using anything
else now!

Discovered `fd` and `bat` when I scanned this thread and immediately started
using them too. :)

I'll try and evaluate and choose between `exa` and `lsd`. Already switched to
`exa` but will still analyse `lsd` to make sure I am not missing out.

------
ojosilva
I wish the Github UI had an user experience like this. I do a lot of directory
tree navigation in the GH interface these days, while searching for algorithms
and examples for a new project and it's horrible how much time I'm wasting on
clicking into and stepping back out of folders trying to get a glimpse of
whats in them. The lack of file sizes and filetype icons make it even worse.
GH file navigation feels like a step back from where we already were in 1986
with Norton Commander.

~~~
gringoDan
While not exactly the solution you're looking for, I've found that Octotree is
a useful tool for navigating GitHub:
[https://github.com/ovity/octotree](https://github.com/ovity/octotree)

~~~
galacticdessert
+1. Would be nice to have something similar for gitlab as well.

------
stevendgarcia
Loving everything about this. You really knocked it out the park. It's so much
more ergonomic than cd + ls (which feels like a caveman solution by
comparison) Congrats on bringing directory navigation into the 21st Century. I
have installed it on all my servers and I will use it forever. Long live
Broot!

~~~
stinos
Don't want to downplay broot, but fzf has been around for a while and when I
first discovered it I had the exact same idea 'YEAH finally directory/file
navigation for the 21st century' :) Mainly because of the fuzzy matching, and
because of the ways to extend it and because it works on most platforms.
Possibly there were already predecessors though, not sure.

~~~
pdimitar
Another poster mentioned
[https://github.com/lotabout/skim](https://github.com/lotabout/skim) but I
haven't compared it to fzf yet.

------
dwrodri
pro-tip: I think a lot of people would really appreciate it if you put a quick
blurb about installation at the top of the GitHub README and on Broot's
landing page. It took me about 30 or so seconds to find the installation page,
which gave me enough time to think that this was still new enough that you
don't want to hand it out like crazy yet.

Those of us who like to charge in to CLI tools all guns-blazing-like would
appreciate it. Also, it would immediately communicate that the project is
written in Rust, which some people may like.

~~~
dystroy
Author here: thanks for the tip. I'll do that. edit: done.

Note that broot is far from new and is reliable on linux. I used it daily in
the past 10 months. The only thing which prevented me from tagging it 1.0 is
the rough edges on Windows.

~~~
asmosoinio
As a Mac and brew user I would have needed to see "brew install broot"
somewhere - since there is no Mac binary I was not sure how to test this until
I looked at the comments here.

I am not sure if you have something to do with the "brew" installer for this
on MacOS? Or does someone else create that?

Anyways, looks awesome, I think I'll use this at least for listing files by
size.

~~~
dystroy
The reason I don't mention brew today is that I don't manage the formula
myself and I don't check it. I'm not even sure of what it does.

------
moralsupply
Is there a way to make Broot respect the terminal theme's colors? If I have a
light theme running, br doesn't care and uses a dark background, and when I
run it with --sizes half of the screen has a dark background and the other
half is light.

~~~
dystroy
You can't just respect the terminal colors because the colors you add wouldn't
be readable.

Right now the best option is to define the skin in the config file (see
[https://dystroy.org/broot/documentation/configuration/#white...](https://dystroy.org/broot/documentation/configuration/#white-
background-skin)) and I've added a new issue requesting that broot detects if
a white skin seems more suitable.

~~~
JdeBP
"respect the terminal theme's colours" generally decodes to "use indexed
colour and just the 16 AIXTerm colour indexes", note.

------
j88439h84
Ranger is another good option for navigating directories.

[https://ranger.github.io/](https://ranger.github.io/)

------
nizmow
I love it, but it's REALLY slow in Windows on the new MS Terminal, which is
typically actually quite fast. Noticeably laggy and I can see the screen
redraws. Anyone have any idea why, or how to speed it up?

~~~
JdeBP
In the 1980s, full-screen TUI programs did significant work to optimize
terminal output. A complete redraw of an 80 by 24 screen at 300 BPS was not
quick. So applications normally only wrote _changes_ to the screen, only
performing a full redraw when requested by a Control-L input (or some such).

Terminals have sped up, but the amount of terminal I/O to draw a screen has
increased, too. Nowadays there are lengthy SGR 38/48 sequences for 24-bit RGB,
plus the other SGR sequences for attributes, plus of course characters that
are now commonly multi-byte UTF-8 encodings, including box drawing characters.

So the old considerations of optimizing terminal output still apply nowadays
to full-screen TUI applications. Optimize out cursor motions that move to
where the cursor currently is; replace absolute motions to nearby positions by
shorter relative motion control sequences; optimize out superfluous attribute
and colour changes; replace onwards horizontal cursor motions by just
rewriting the relevant characters; skip unchanged cells; and so forth.

* [https://github.com/jdebp/nosh/blob/79b1c0aab9834a09a59e15d47...](https://github.com/jdebp/nosh/blob/79b1c0aab9834a09a59e15d47710f355c5c0417a/source/TUIOutputBase.cpp#L143)

The Rust full-screen TUI code in Broot (and common Rust libraries) does not do
any of this.

* [https://github.com/Canop/broot/blob/d8ba179946ad10d777f93b4a...](https://github.com/Canop/broot/blob/d8ba179946ad10d777f93b4a280f00462a27d393/src/displayable_tree.rs#L181)

* [https://github.com/crossterm-rs/crossterm/blob/41ff73e3d3763...](https://github.com/crossterm-rs/crossterm/blob/41ff73e3d376382dd102ddea42d9dabb20910a27/src/cursor.rs#L62)

When it is a Win32 application, it uses console I/O and this does not matter
quite as much, although it's still a waste of system call context switches to
overwrite a console screen buffer with what is already there. But when it is
using terminal I/O this matters significantly.

The Rust terminal handling is actually fairly poor overall. This list, for
example, is in reality a lot longer. The terminfo database records a lot more
terminal types that understand these escape sequences. "putty" for one
egregiously missing example.

* [https://github.com/crossterm-rs/crossterm/blob/41ff73e3d3763...](https://github.com/crossterm-rs/crossterm/blob/41ff73e3d376382dd102ddea42d9dabb20910a27/src/ansi_support.rs#L60)

* [https://invisible-island.net/ncurses/terminfo.ti.html#tic-pu...](https://invisible-island.net/ncurses/terminfo.ti.html#tic-putty)

Personally, rather than treat lack of capability as the norm with a paltry
list of exceptions, I prefer the opposite assumption that (except for "dumb")
the world has nowadays reached 1976 capability levels. (-:

* [https://github.com/jdebp/nosh/blob/79b1c0aab9834a09a59e15d47...](https://github.com/jdebp/nosh/blob/79b1c0aab9834a09a59e15d47710f355c5c0417a/source/TerminalCapabilities.cpp#L54)

------
abjKT26nO8
Judging from the landing page, it seems to be a file manager and not an
alternative to tree(1). If so, another one that's also handy and shows you a
preview of the files one level up and down the directory tree is ranger(1) ---
and it has vim keys which makes it extra great.

~~~
istjohn
Yeah, I just discovered ranger a couple weeks ago. I'm going to see how this
compares.

------
rcshubhadeep
Great work! Thanks a lot. Can we get somekind of "brew" integration for Mac
users as well please?

~~~
dystroy
There's a brew formula, yes. You can do `brew install broot`.

I've been told that the bash file path I use on mac is wrong though:
[https://github.com/Canop/broot/issues/84](https://github.com/Canop/broot/issues/84)

~~~
frereubu
In the meantime you can just add this line to the bottom of .bash_profile
after installation:

source /Users/username/Library/Preferences/org.dystroy.broot/launcher/bash/br

Obviously replacing username with your username...

~~~
cyrusmg
If `echo $USER` works on MacOS, everybody can do `source
/Users/$USER/Library/Preferences/org.dystroy.broot/launcher/bash/br`

------
vermaden
I really liked _broot_ after using it for several minutes.

One of the downsides is that it calculates the space everytime with -s option
which makes it slow in that mode.

If you seek for really fast tool for that purpose then try _ncdu_ which
calculates the sizes only once at start then then does that only on your
request by pressing the 'r' key.

Here is how _ncdu_ looks like:

[https://linuxundich.de/wp-content/uploads/2014/12/ncdu-
linux...](https://linuxundich.de/wp-content/uploads/2014/12/ncdu-linux1.png)

~~~
pdimitar
If you look for dedicated separate tools that calculate directory sizes then
those two (also Rust tools) can help:

1\. `cargo install dirstat-rs` (binary is `ds`): Prints several lines showing
the size of the directory and the top fattest children. Colored output.

2\. `cargo install dua-cli` (binary is `dua`): Only prints one line with the
specified directory size. Colored output.

Both are insanely fast (they use all CPU cores). Love them both.

~~~
vermaden
Thank you, will look into them.

------
modeless
Looks cool! You should record some demos with
[https://asciinema.org/](https://asciinema.org/)

~~~
dystroy
I did in the past but the problem of asccinema for applications like vi or
broot is that people don't really understand: you hit two or three keys and
the stuff is magically done.

~~~
rmetzler
If seen YouTube videos with an overlay of key presses. Unfortunately I’m not
sure how to record something like this.

~~~
Joona
OBS can do this with a plugin: [https://github.com/univrsal/input-
overlay](https://github.com/univrsal/input-overlay)

------
aargh_aargh
I tried it and think I'll keep using it mainly for the "See what takes space"
mode (I haven't encountered an alternative that works in terminal, but I
haven't looked, either).

~~~
Phelinofist
I use NCDU: [https://dev.yorhel.nl/ncdu](https://dev.yorhel.nl/ncdu)

~~~
ekianjo
Ncdu is very good as well. But little known.

~~~
Semaphor
It isn’t? When I was setting up my VPS I looked for a windirstat or wiztree
alternative on linux and commandline and ncdu was the first thing I found.

------
TheCabin
Really cool!

I sometimes find it amazing that we do computer science for decades now, but
there is still a lot of room to improve very basic things.

------
seren
Just a quick remark but for a simple command line utility, I really like a
static binary you only need to download, drop into a directory in the path. I
am always wary of tools that need to install either a python or node.js
distribution, because this seems unnecessary bloat, and might mess with local
install if you are not careful.

~~~
dystroy
You can download binaries from there:
[https://dystroy.org/broot/documentation/installation/](https://dystroy.org/broot/documentation/installation/)

~~~
JosephHatfield
Strange that Chrome doesn't appear to trust broot.exe. When that binary is
downloaded, the downloaded file message is: broot.exe is not commonly
downloaded and may be dangerous.

~~~
nkrisc
Well the first part of the message is almost certainly true and likely what is
triggering the message.

------
mpawelski
Looks like _really_ cool and useful project. Is it usable on Windows though? I
can't press Shift key to enter ":" for commands. Seems like a dealbreaker. I
tested it on WSL and Ubuntu on VM and Shift works there.

Anyway. This look _super_ cool. I'm a Windows guy but have been using terminal
more lately with tools like
[https://github.com/BurntSushi/ripgrep](https://github.com/BurntSushi/ripgrep)
[https://github.com/sharkdp/bat](https://github.com/sharkdp/bat)
[https://github.com/sharkdp/fd](https://github.com/sharkdp/fd) and they work
great on Windows (plus are easily installable by
[https://scoop.sh/](https://scoop.sh/)). Hope the Windows story will improve
for Broot to.

Some suggestions after _very_ quick look (except not working Shift key on
Windows).

* Screen refreshing and general experience is really slow. Hold arrow key for couple of seconds and see that refreshing can't catch up. The best performance is on standard windows cmd, a bit worse on new "Windows Terminal (Preview)", absolutely horrible on ConEmu (which I use daily :-( )

* I sort of expected that I can "scroll" current directory but I get "400 unlisted" text at the bottom. It makes sense for nested directories and looks like main feature of Broot. But for _current directory_ it would be great if it didn't "trim" entries at the end and you could just use standard arrows keys, PageUp/PageDown and Home/End to quickly glance and see what files are available when I don't know what file names I'm looking for. And when I would want to do the same for some nested directory I would just select it with Enter. So basically it would be great if Broot was more like [https://github.com/junegunn/fzf](https://github.com/junegunn/fzf) but not just for flat list of files.

~~~
pdimitar
I learned about bat and fd from you and had no clue before, thank you!

------
djsumdog
Hmm .. I wish there was an IRC or Gitter chat. If I try to select some files
with a regex like /SomeTVSeries(.*)mkv .. it selects everything, but then a
space mv and new path only moved the currently selected directory or file.

There is a section in the help about using verbs on a selection, but nothing
to indicate how to turn a regex search into a multiple file selection (can't
tell if this is supported or not) ... I guess if it's not it would be a neat
thing to see if I could add.

Edit: there is a chat room!
[https://miaou.dystroy.org/3490?broot](https://miaou.dystroy.org/3490?broot)

------
almindor
Really cool. For some reason when I opened the webpage I was like "this seems
like it's written in Rust" and it is! I'm using Rust as my main language for
the past 6 months now so it makes me happy :D

------
kovek
This is awesome!! I read through all the features and I can’t wait to try it
tomorrow when I get behind my terminal.

------
adwf
This is really great! Two things that could do with improvement:

\- The backspace key quits the program. I've accidentally quit so many times
after deleting my filter by holding the key down.

\- The filter seems quite quick at first, but when I add a period it slows
down massively. ie. Search for "xorg", then "xorg.conf", the moment you type
the period it hangs for a good few seconds, even though it's in the top level
of my home folder. A breadth first search should find it trivially, so I'm
assuming it's some quirk of the fuzzy matching.

~~~
pdimitar
The dot is likely treated as an "any character" in a regex type of way.

------
scoopr
Is it something I'm not understanding or a bug, but alt-enter does the same
thing as plain enter? (macos, zsh, iterm2, fi-locale. Installed through cargo,
the executable installed the br thing)

~~~
dancek
MacOS Terminal and iTerm users need to configure their terminal to use the
Option key properly. You need Option-Enter to output either Esc+Enter or Meta-
Enter.

See [https://superuser.com/a/496152](https://superuser.com/a/496152) for
screenshots.

~~~
pathsjs
I tried, but sometimes I actually need the Alt key to behave like it does by
default, to enter modified characters such as ~ (which is not on my keyboard).
Any other ways?

~~~
dancek
ITerm allows you to map the left and right option keys separately. Maybe that
helps?

------
colordrops
Can someone make this work like fzf so we can embed it in vim for ctrl-p style
plugins? That would be amazing.

~~~
dystroy
Using it to replace ctrl-p in vim is something I think a lot about those days.
I guess I'll have to do it.

------
ausjke
tried it, pretty neat like other useful rust tools: bat, rg, fd, etc. For this
one compared to ranger, here is what I feel to make broot even better.

    
    
        1. support vim keybindings
        2. support editing text files inside the terminal as ranger does
    

with a quick try i still feel ranger is better, if I missed something that
broot has advantages over ranger please let me know.

~~~
capdeck
> 2\. support editing text files inside the terminal as ranger does

Can it be configured to just open file in vim or other eidtor? May be in a
subshell, so you can return back to broot. Why reinvent the wheel...

~~~
ausjke
ranger uses vi directly inside the terminal, when you quit vi you are back to
ranger in the same terminal. ranger is also .git aware.

on the other hand, grep/find GNU tools all should be upgraded to ignore
.git/node_modules/pip-site-packages by default, and honor .gitignore,etc.

------
jhidding
Would also be cool as a Vim plugin!

~~~
skykooler
Indeed! I'd love to have some way to use broot instead of NERDTree.

------
NetOpWibby
Can I install this with brew? I’m currently using exa in place of ls but broot
looks neat too.

~~~
cujo
"brew search broot" is a lot fewer characters than your question!

~~~
NetOpWibby
I never knew this was a thing, wow!

------
greenn
This somewhat reminds of a tool I’ve been working on at
[https://github.com/digicannon/peek](https://github.com/digicannon/peek).
Looks like this is further along it’s goals, though.

~~~
6510
You need a new idea! I suggest making a brown tree shaped tree with shades of
green for the leaves and a monkey to navigate it using a controller. Brown
leaves for deleted files. The monkey shakes the tree and you catch the leaves
you want to keep. It can also chew off branches.

------
halayli
i am still waiting for someone to replicate xtgold... but then I realize the
generations gap and how it might never resurface again.

~~~
aepiepaey
In addition to the one mentioned by a sibling comment, there are several
others:

Windows:

\-
[http://textmode.netne.net/Extreme.html](http://textmode.netne.net/Extreme.html)

\- [http://www.ztree.com/](http://www.ztree.com/)

Unix:

\- [http://www.unixtree.org/](http://www.unixtree.org/)

------
wedn3sday
This seems like a huge step up from tree, I'm definitely giving this a chance.

------
fphilipe
This looks great!

Only dealbreaker for me unfortunately is that it forces me to use up/down
arrows, i.e. leave the home row. I use ctrl+p/n everywhere (or ctrl+j/k in
some tools), be it in the terminal or on macOS.

~~~
dystroy
You __can __use ctrl-p and ctrl-n. You wouldn 't be the first one :
[https://github.com/Canop/broot/issues/24#issuecomment-572481...](https://github.com/Canop/broot/issues/24#issuecomment-572481660)

------
gulabjamuns
On Mac OS, Enter invokes Xcode. How to get it to use vim for text files.

~~~
dystroy
By default the standard file opening provided by the system is used but you
can override it: [https://dystroy.org/broot/documentation/tricks/#open-
files-w...](https://dystroy.org/broot/documentation/tricks/#open-files-
without-a-windowing-system)

------
meonico
In order to install this you'll need 200mb rust + 100mb in .cargo dir it will
drag along and then wait like 3m until it compiles this, jesus christ cli app.

~~~
maccam94
Or download a 3MB statically-linked executable...

------
dod9er
Hmm, looks nice, maybe its time to kick my old (ls,less,vi) workflow :) Btw,
anyone using this with another pager for fast source-code viewing ?

~~~
TsiCClawOfLight
Agreed, but I don't see a use-case for it given that we have ranger[1]. I find
the two-pane navigation + embedded preview + easy opening of files when moving
into them to be a perfect combination.

Given your workflow, you might want to give ranger a try?

[1]: [https://ranger.github.io/](https://ranger.github.io/)

------
santa_boy
This looks good and I can understand the use case. Pretty neat!

Just for those who don't want to learn more ... you can get a lot of similar
utility experience using:

`tmux` (for panes with mouse support) and `fish` (for autocomplete)

I prefer to handle lot of the _additional_ function over `ls` or `tree` that
is offered by `broot` in separate panes.

I just feel it is more manageable and interactive with a lot of flexibility.

------
nicpottier
Looks pretty neat. Would REALLY like CTRL-P and CTRL-N to work for up/down as
is standard in OS X / most linux systems.

~~~
dystroy
You can very easily configure broot :
[https://github.com/Canop/broot/issues/24#issuecomment-572481...](https://github.com/Canop/broot/issues/24#issuecomment-572481660)

------
Emptysister
Wow! loving it after using it for the first 5 minutes!

thank you

------
wakkaflokka
I really love this. First thing I tried to do was use vim keybindings
though... that would make this absolutely stellar.

~~~
quacker
You can open directories in Vim, with netrw which is usually there by default:
[https://shapeshed.com/vim-netrw/#netrw---the-unloved-
directo...](https://shapeshed.com/vim-netrw/#netrw---the-unloved-directory-
browser)

------
elwell
Anti-GUI developers can now get the benefits of GUI visualization while still
being cool enough to stay in the terminal. See also: dired-subtree for Emacs:
[https://www.youtube.com/watch?v=z26b8HKFsNE](https://www.youtube.com/watch?v=z26b8HKFsNE)

------
growt
Can I match directories and file names at the same time?

"frontendaction" will match "frontendaction.txt" but not "frontend/action.txt"

"frontend/action" will turn the search into a regular expression and complain

~~~
dystroy
There's currently no search on paths, only on filenames.

------
makach
This is great. "brew install broot" worked lovely on my mac

------
mam2
Super nice. Here's an issue: why when you search the cursor is not the first
in the line ? it makes no sense when you make enter when you already know the
path and want to go fast

------
getsauce
Was anyone able to make this work in WSL? I can run the broot binary if I
specify the path to it, but even after running the install script, trying to
use br doesn't work.

------
aiisjustanif
I'm surprised no one has brought up the weight of the node modules on the
system in the last section on their site, "See what takes space:"

It's quite beefy for such a tool.

------
bestest
very nice!

but does anyone has an idea if there is a way to customise file sorting?

~~~
dystroy
Not now. Sorting isn't really compatible with the tree view idea.

There's the "fat whales spotting" mode, which only displays one level and
sorts by size, though, and I plan to extend this mode to other sortings.

------
avaku
I miss my Far Manager, working on Linux now... Just remembering how quickly I
was doing stuff in directory structure, people couldn't even follow with their
eyes...

~~~
vetinari
Install mc (midnight commander). It is slightly different, in some ways
better, in some ways worse.

------
spurgu
Ooh nice, like ls, tree and du/ncdu wrapped into one.

------
frequentnapper
thanks to this i looked at Rust again. Going over the Rust book:
[https://doc.rust-lang.org/stable/book/](https://doc.rust-
lang.org/stable/book/). The concepts of ownership and borrowing made instant
sense whereas before I had ignored Rust after hearing that it was way too
complex. I think I just might take it up as a hobby.

------
dhshahsndeisjwn
This is amazing. The only problem is I now want all these features within the
OS X file open dialog for opening saving files within applications.

------
monkeydust
So i installed on windows 10 - can run it from the directory via broot but not
br nor anything added to PATH. I am doing something wrong here?

------
friend-monoid
I like it! It's a bit too slow on my machine, but I really have too many
files, I need to clean up some of the crap I have lying around.

------
piahoo
no support for fish shell?

~~~
dystroy
There's one but there was a problem for fish on mac until a few minutes ago...

(I made a new release)

~~~
samatman
works for me now, thanks!

------
meonico
It doesn't do anything special that ranger cannot, well search is nice indeed
but that's it. No vi shortcuts btw.

~~~
roryokane
If anyone is wondering what ranger is, it’s “a console file manager with VI
key bindings” whose home page is
[https://ranger.github.io/](https://ranger.github.io/).

------
luladjiev
That's one really nice tool. Great job.

------
xwowsersx
Just installed, this is awesome. What is alt-enter on Mac OS? How do I use
this to CD into the directory I selected?

~~~
xwowsersx
I can do :cd but is there a way to make alt-enter work?

------
baq
tested with mosh with black-on-white color scheme and it doesn't play nicely
with that combo - text it prints is color-on-black; i'd rather have it redraw
the whole terminal or (better) keep to the terminal color scheme

~~~
dystroy
The skin is customizable. There's one that I propose for black-on-white:
[https://dystroy.org/broot/documentation/configuration/#white...](https://dystroy.org/broot/documentation/configuration/#white-
background-skin)

and I guess people more used to black-and-white could submit a better one

~~~
baq
thanks for thinking about that! do you think there's a way to identify that
the terminal is black-on-white and use something like that by default? i don't
really care that much about specifics as long as it can pick one automatically
depending on terminal settings.

~~~
dystroy
It should be possible. I'll open an issue for that. edit:
[https://github.com/Canop/broot/issues/87](https://github.com/Canop/broot/issues/87)

------
acd
Brilliant idea to fold files.

------
7532yahoogmail
For some at the office midnight commander still rocks their world....

------
ComodoHacker
Isn't it what file managers like mc are for?

~~~
eps
They aren't quite there yet. Still need to realize that having 2 panels side-
by-side would eliminate any need for typing when copying and moving stuff
around.

Also an XTree-like info panels around the tree itself would help tidying the
layout and increasing info density.

All new is a well-forgotten old.

~~~
Erlich_Bachman
What are you talking about, mc has two panels by default?

~~~
eps
It was in reference to the submitted project, not mc.

------
unishark
/I/am/Broot

\-- I am Broot

\-- I am Broot

\-- I am Broot

------
cliqueiq
you can just vim into a dir and get a collapsible tree. i don't see any reason
to invent yet another tool for something tree -f | grep foo can do. More
supply chain hell, more useless tooling, more bloat IMO, prob for some junior
dev's "portfolio"/"resume".

------
Multrex
How to install on CentOS?

~~~
SAI_Peregrinus
[https://dystroy.org/broot/documentation/installation/](https://dystroy.org/broot/documentation/installation/)

How I did it (though not using CentOS, should be identical):

Install rustup from [https://rustup.rs/](https://rustup.rs/) (download & run
the shell script).

Then `cargo install broot` to download and and install this. Then run `broot`,
and restart the shell. After that it can be invoked via the `br` command.

------
gulabjamuns
On Mac OS, is there a way so that Enter opens a text file using vim and not
xcode.

~~~
dystroy
If it's only for text files, you should configure the system opening.

If it's for any kind of file, then you can override the Enter:
[https://dystroy.org/broot/documentation/tricks/#open-
files-w...](https://dystroy.org/broot/documentation/tricks/#open-files-
without-a-windowing-system)

More usually you define a few shortcuts for your specific needs :
[https://dystroy.org/broot/documentation/configuration/#verbs...](https://dystroy.org/broot/documentation/configuration/#verbs-
shortcuts-and-keys)

~~~
gulabjamuns
I get: Bad configuration: not a valid key: enter

When I put enter as a key in place of F2.

------
archivist1
We are broot

