I need testers - please register
I need testers to avoid distributing broken new versions, to tune and improve new features, and to ensure there's no regression, especially on platforms I can't test on.
To test, you need:
- to know your way in git in order to fetch from upstream or change branches
- to be able to compile from source
- to be able to come to the chat (https://miaou.dystroy.org/3)
If you're willing to help, please answer with your platform, watch this issue, and, on announcements if you have the time, test and tell me in the chat if it's OK or not, or what should be fixed or improved. If people answer here, I'll announce the dangerous commits or branches in this issue.
Right now I'd need people to test the git branch.

I'm in! Installed the git branch. My setup:
- Machine: Macbook Pro 16' 2019
- OS: MacOS Catalina (10.15.1, will keep it updated)
- Terminal: iTerm2 3.3.7
- ShelL: ZSH (5.7.1) + OhMyZSH
I'm not a heavy user, but I can try to help
- Os: Windows 10
I just pushed a testable version on the "git" branch. The main changes are
- leveraging libgit2 to handle finding what files to ignore (mostly to handle corner cases like the global .gitignore)
- simplifying the git_ignore toggle to only 2 states
I'm a little disappointed by the slowness of libgit2. I'd be interested by your feeling, maybe your speed comparisons. And as the compilation is a little more complicated, I'd like a confirmation there's no problem when compiling directly on mac or windows.
I changed a lot of things in the git ignoring system. I'd like to have confirmation everything looks OK.
I can also help:
- Machine: MacBook Pro (15-inch, 2018)
- OS: MacOS Mojave (10.14.6)
- Terminal: iTerm2 (3.3.7) + Terminal (2.9.5)
- Shell: ZSH (5.3)
If needed I can also boot Windows 10 on the same machine.
Question to testers: what should in your opinion be the value of the git status display toggle ? Should the status display be enabled by default ?
Personally I don't see much value in this feature (as in I wouldn't really use it). Since I have all my repositories in one directory, I would rather use some special mode that would show this information in a separate column (like --sizes).
BTW I tried using it with some big repositories and I've noticed that it blocks - there's a noticeable pause when entering them. Version built from master doesn't have this problem.
I pushed a new commit which makes the git_file_info not the default but also add more measurement points. I'd appreciate to have the DEBUG mode log of broot when it pauses entering a big repository so that I can see what exactly is slow (and maybe run this operation in a background thread).
Ok, I gave it a go with entering https://github.com/torvalds/linux in case you would like to test locally (previously I was testing on some private repos that I can't share). My test:
- Run broot providing directory containing 2 repos: broot and linux kernel.
- Go down to linux kernel repo.
- Enter it.
- Quit with
:q.
First run is with a simple build from your branch (git), here are the logs:
no-git-dev.log
Second with turning on show_git_file_info in code:
diff --git a/src/tree_options.rs b/src/tree_options.rs
index 77b0f5f..c5ee013 100644
--- a/src/tree_options.rs
+++ b/src/tree_options.rs
@@ -62,7 +62,7 @@ impl Default for TreeOptions {
only_folders: false,
show_sizes: false,
show_dates: false,
- show_git_file_info: false,
+ show_git_file_info: true,
trim_root: true,
show_permissions: false,
respect_git_ignore: true,
Logs: git-dev.log
I think these 2 are the culprits:
20:52:23 [DEBUG] (1) broot::git_status: get diff and stats took 1.600527973s
20:52:28 [DEBUG] (1) broot::tree_build::builder: computing git file infos took 7.419583807s
I've merged the git branch into master.
But now the git stats computation is done in a background thread and doesn't slow navigation or display.
Git information aren't displayed by default: the :gf toggle must be used
I just published the 0.13.6 version which ignores diacritics when searching. As the impact may be important, I'd be happy to hear from users on this one (here or on https://miaou.dystroy.org/3)
I just merged the "panels" branch into master. The feature still needs more work but it starts to be usable (and the rest works as before). I'd really like to have some reactions to this whole set of features. I created an issue for that ( https://github.com/Canop/broot/issues/230 ) but the initial discussion could also occur on miaou. As I rewrote most of broot, it's very possible there were regressions, please tell me if you found one.
The new-pattern branch is still a work in progress but is testable and I'd welcome opinions.
In short it introduce a new pattern syntax (with a breaking change) and a few new capabilities.
With the default settings, here's how you search:
| name | exemple query | example match | explanation |
|---|---|---|---|
| fuzzy name | abc |
abac.txt |
search for "abc" in a fuzzy way in filenames |
| regex name | /abc |
abc.txt |
search for the regular expression abc in filenames ("exact search") |
| regex name | /[yz]{3} |
fuzzy.rs |
search for the regular expression [yz]{3} in filenames |
| regex name | /abc/i |
aBc.txt |
search for the regular expression abc with flag i in filenames |
| fuzzy path | p/abc |
a/bac.txt |
search for "abc" in a fuzzy way in sub-paths from root |
| regex path | rp/abc |
e/abac.txt |
search for the "abc" regex in sub-paths from root |
(other types of search should come)
The search syntax is thus globally
<mode><pattern>[/<flags>]
(a verb invocation can follow as before)
The mode is either nothing (fuzzy name), just a slash (regex name) or some letters followed by a slash.
It's also possible to redefine the mode mappings if you want, for example if you usually prefer to do exact searches:
[search-modes]
"<empty>" = "regex name"
"/" = "fuzzy path"
"z/" = "regex path"
I said this was a breaking change because I can no longer decide a search is a regex just because it finishes by a /. abc/ is no longer a regex search. I have pondered alternative syntaxes (some in issues) but none was natural or easy to explain enough while the / character is frequently used for searches.
I just released broot 0.15.0
One of the interesting new features is the search on file content (prefix the pattern with c/).
It looks like this full text search is quite fast on linux but I'd be interested in confirmations (or infirmations). For a comparison with other full text search tools it's possible to run commands like
time br -c "c/memmap;:pp"
or
time br -c "c/memmap;:total_search;:pt"
(the second one to get all matching files)
Broot looks complete to me. If no problem is found I might label the 0.18 as 1.0 in a few days.
There's currently a new branch: preview_panel. When in this branch, if you do ctrl-right when a file is selected, you get a synchronized preview panel

It's still a preliminary version. It's not yet time for you to test but if you're interested you might come and chat
I can test on Windows (both powershell and WSL) and, in about a month, on Mac
I made an automated testing script here, check it out - https://github.com/asdf8dfafjk/broot_testing
Since version 0.20.0, broot is in release candidate mode, meaning I'm only fixing bugs (when I found some) and not adding any feature. When I feel confident enough, I'll tag the current version as 1.0.
The "clipboard" feature, which must be activated at compilation, brings two verbs:
:input_paste, mapped to ctrl-v, which inserts the clipboard content into the input:copy_path, mapped to alt-c, which puts the selected path in the clipboard
I'd need dev and user feedback regarding the compilation on your platform and your user experience.
Just tested it; ran into build trouble. Can you recommend which xcb libraries to install specifically? There's no libxcb (at least not in apt), and it wasn't clear which other ones to pick.
https://github.com/aweinstock314/rust-clipboard => sudo apt-get install xorg-dev
Ah, thank you; I dug too deep too quickly in the dependency tree.
Well, that's still useful: I must document that building on linux involves this step. And it means it will be harder to incorporate this feature in an application that people expect to install with cargo.
I also needed to install:
libxcb-render0-dev
libxcb-shape0-dev
libxcb-xfixes0-dev
Additionally, I played around with it some more and I believe that xorg-dev is not fully needed, but it brings in libxcb1-dev, which fills the -lxcb requirement. So the actual list* is:
libxcb1-dev
libxcb-render0-dev
libxcb-shape0-dev
libxcb-xfixes0-dev
* at least, on my Ubuntu instance, using apt. Other package managers might have different names.
The filesystems branch has a set of filesystem related features, only active on unix.
I'd need people to check it's OK both in compilation and in usage, even on non unix platform.
Here are two pictures.
When doing :fs :

When launching broot in whale-spotting mode (ie br -w):

Thanks to @asdf8dfafjk it's possible to display icons in the tree
See https://dystroy.org/broot/icons/
I'd appreciate tests of this feature before I merge the icons branch into master.
machines: assembled pc (amd ryzen), dell latitude 7490 operating systems: linux (manjaro), nixos terminal: alacritty, st shell: zsh+starship
Broot has almost creeped into my development workflow over the past month without intention (and I think that speaks to how powerful a tool it is) - now I always have tab#0 on tmux running an active broot session while working, for the easiest way to explore the code base. It subsumes uses of skim/fzf/dust/lsd/exa for me right now.
Count me in!
Platforms: NixOS, MacOS (Big Sur), Windows 10 w/WSL
I'm going to start looking at issues as well to help with PR's. I've been looking for an open source project to commit to, and considering I've been using broot as of late this seems like a great fit.