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.
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.
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.
This could use some documentation imo. Like the essentials of what 'supported on Win10+' means (is it supported in powershell, or command prompt or bash running on msys or ... ?) and how to laucnh/install it. I only looked briefly, ran broot in cmd but the only thing I get out of broot is that it creates a file <AppData>\Roaming\dystroy\broot\data\launcher\bash\1 and a link (even when entering 'n' instead of 'Y' when it asks to install!!). So I figured it maybe needs to find a 'br' command and added a function 'br' in powershell and launched that, but it still says it's not installed.
The problem is I don't know exactly what works or not on windows... I'd need an involved tester/coder familiar with Windows to help me for that (you can volunteer on miaou: https://miaou.dystroy.org/3).
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.
broot looks really useful - thanks! One comment: on the configuration web page, it states:
"The easiest way to read and edit broot's configuration file is to go the help screen (using ?) then to type :open."
When I do that, I get "verb not found: "open"". Not quite sure what is supposed to happen here. I found the config file and editted it manually, but was some magic supposed to happen with the "open" verb?
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.
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).
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.
Yeah, love this! I hate when I can't figure out what a software or service does from their homepage.
Looking at oxide.computer... man... what DO they do? Do they sell servers?
My other pet peeve for these kind of websites is when the landing page is full of just release notes and links to tangentially related articles news articles and talks about the product, and it takes me 10 minutes to figure out where I can actually read about what the heck product I'm even looking at, and why I would use it over other products in its class.
This XKCD about uni websites gives the general gist of what I'm talking about https://xkcd.com/773/
Some Github repos are also awful. The README should summarize what the product is or link to a website that does.
It's hard to find some really terrible ones right now...
Apache products tend to take some effort to decipher what it is they even do or how they'd be used. They have a nice summary description like the start of a man page, but that's about it.
https://ant.apache.org/https://hadoop.apache.org/
The GitHub landing page is surprisingly worse than you'd expect. It's not terrible... but check it out in Incognito / Private Window and imagine you'd never heard of GitHub:
https://github.com/
Compare the above, with how cleanly and clearly Travis-CI manages to express what it does, and why you would use them, along with a useful screenshot of what the UI looks like right near the top of the page, so you can get an idea of what it would be like to use in practice:
https://travis-ci.org/
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.
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.
There's a significant underlying principle there. Commom UI widgets are not prepared to deal with collections of widely varying sizes.
The two-pane file browser (folder tree plus folder contents like Windows 95 Explorer, or two parallel panes like Norton Commander) was a compromise solution that has worked for decades.
But this idea of showing in context a limited view of representative items of each collection could be generalized and exploited in other generic data-heavy interfaces, where there's no business code to show the specific data loads in the best way.
It's the zero/one/infinity rule. Programmers don't even know what it's called, they just absorb it by osmosis. But in the real world there are so many lists that will never have more than 20 items.
Well, I'd say the rule should be upgraded as zero/one/small-sample/expand-for-infinity, at least for user interfaces (not for coding, although doing it for coding is what lazy evaluation is for).
> Commom UI widgets are not prepared to deal with collections of widely varying sizes.
I don't think there is a standard widget other than what's implemented by each solution. Broot is one way of looking at a volume at the expense of lots of disk reads (for every file on the volume). Ranger does that at a single depth and that's a design choice in Miller's view. nnn doesn't prefer to read within directories unless explicitly requested and that's a design choice too. There's nothing good or bad about these other than a choice to the user to pick the one that fits his use case.
A user always has the liberty to concentrate only on the current directory, just know where he is in the filesystem from the file path and do a fuzzy search to find a file deep in the subtree when he needs to do so. As you might have noticed, even with Broot there's no simple way to list the files marked "unlisted" without navigating to the dir and expanding it. It's a nice program and is a solution to people who likes to see a snapshot of the filesystem in a glance. But would everyone be always interested in the contents of /etc, /run, /usr and /var as shown in one of the sample images?
Anything listed at https://en.wikipedia.org/wiki/Graphical_widget#List_of_commo... does count as "standard widgets". There may be variations in different GUI libraries, but anything that deviates too much from common user expectations will be perceived as broken.
There are ways to avoid traversing the whole volume in each use, namely caching each directory content when it's updated.
As for always showing unwanted information, an interactive solution could allow an option to "fold and hide" specific folders so that their contents are not shown until the user specifically reopens them. A user-friendly interactive solution doesn't require the user to remember and choose among all the available choices for each use, it provides good defaults and reminders on how to access alternative options when those are needed.
One of the guiding principles of nnn is minimum disk IOs so probably it's not comparable in this respect. Reading through a complete volume on a stuffed microSD or SD card attached to a RaspberryPi to list the filesystem and then supporting dynamic events may not be very simple. nnn development is driven by minimum resource availability and usage.
Yes, but that's a less informative solution, as you can only see contents of one directory at a time. Broot provides a more comprehensive view of the file system.
I assume you all know Midnight Commander (mc) - because of my Norton/Total Commander past, this is still something I always install on my machines (although using it less often)
for the current windows platform there is far manager: https://www.farmanager.com/ Unlike Norton it has plug-ins and there are a lot of them available.
These types of file-managers are called 'Orthodox file managers'. [1]
In answer to your question of which was the first, the answer appears to be PathMinder (1984) and Norton Commander (1986). Both were for DOS so it seems to be an original innovation from the DOS world. Directory Opus first came out in 1990.
I wasn't familiar with PathMinder before looking at the wikipedia article but I was familiar with Norton Commander, as I think nearly everyone who used DOS in the late 80s would be. I personally favoured XTree (1985) more. Xtree didn't originally have the two pane view, but added it in 1989.
In the days of applications with no concept of standard file dialogues, running on single-tasking operating systems, for platforms where disc media were sold unformatted, and needed low-level formats, it really was.
Being able to format a floppy disc and continue to do things on OS/2 without applications becoming seriously jerky was also a feature. (-:
CentralPoint PC Tools seems little remembered nowadays. It was quite an extensive toolkit, as I recall. File viewers for various types of database/spreadsheet/wordprocessor files. Disc and file hex editors. Repair utilities. Extended directory change. A uniform look and feel, and a fairly good manual.
> CentralPoint PC Tools seems little remembered nowadays.
Indeed, up to the point that the name was usurped by some unrelated software.
It was very useful even in the later DOS era; it was a standard part of my travelling tech toolkit. It had one of the fastest floppy formatters around, and just about the fastest DOS disk-defragmenter I ever saw, nearly an order of magnitude quicker than Norton's.
The PC Tools backup/restore tool was also superb and extremely fast. It used an extended disk format, squeezing about 1.6 MB onto an HD 3½" floppy, and compressed data on the fly, so many megabytes of software or data could be squeezed onto the minimum number of floppies.
What doomed Central Point software is that it did a licensing deal with Microsoft. Cut-down versions of PC Tools Backup and the separate Central Point Antivirus were bundled with MS-DOS 6. Microsoft promised CP that CP would make money from DOS 6 customers wishing to upgrade to the full versions.
In actual fact, people got by with the freebie versions and CP's sales of standalone products _and_ upgrades both stagnated.
MS tried similar tactics on STAC in the hope of bundling the Stacker disk-compression tool with MS-DOS 6. STAC, wisely, said no.
So Microsoft just stole the code and used it anyway.
It used the money wisely, to diversify the company out of disk compression by acquisition, buying vendors of remote-control software (ReachOut) and enterprise backup (Replica).
Sadly, this was long before ubiquitous Internet connectivity, even by dial-up modem. ReachOut mainly worked by direct-dial modem-to-modem comms -- useful, but expensive, as each machine to be controlled needs a modem, a telephone line and its own phone number.
It wasn't enough and STAC ended up going broke. Central Point Software was bought out by Symantec, like Quarterdeck and Norton and others.
MS-DOS 6 was badly buggy anyway and MS had to release a free update, MS-DOS 6.2. (Note, at this time, product updates, service packs, etc. were extremely rare.)
Then, when it lost the STAC lawsuit, it released another update, MS-DOS 6.21, which simply removed disk compression altogether.
Then MS rewrote the offending code and released MS-DOS 6.22, another free update, replacing the infringing "DoubleSpace" with "DriveSpace" -- basically the same tool but with different compression/decompression routines.
This was the last-ever version of MS-DOS, and thus DOS 6 has the dubious distinction of being the most-patched release in history.
There are details of this on Wikipedia but it's been sanitised by MS PR so it merely mentions patent infringement, rather than the direct code theft involved.
> _Once you get used to two panes, it's hard to go back._
Just as a data point, I tried that and I never could figure out how to populate the left pane and the right pane in such a way that it was helpful. (I.e. that copy and move did the right thing.) It just felt pointless to me.
I've used vifm a few times, but only after figuring out how to turn off the two-pane split :-)
"Double Commander (https://doublecmd.sourceforge.io/) is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas."
I can't believe DOS Navigator [1] is not mentioned - true MDI in TUI using Turbo Vision. Ran circles around Norton Commander. Even had a freaking spreadsheet built-in!
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.
Double Commander seems to be the most popular and featureful among cross-platform two-panel managers. However, its integration with the rest of the system is rather lacking on Mac.
Forklift made some questionable choices in the version 3. The app became much slower.
Fixing the number of panes at 2 seems a little arbitrary. I used dired in emacs and open precisely the number of panes I want: most of the time 1, fairly often 2, once in a blue moon 3, and I've never needed 4.
Counter data point here. NC/VC since 90-ish, TC, MC, Far. Then suddenly it all lost fit and explorer/finder felt much better, with many windows and quick access pins. Explorer still lacks Finder’s inplace folder expanding, but that’s bearable.
Idk what happened exactly, but now I can’t stand commanders at all.
Occasionally that better execution is overlooked because it looks like just a bunch of features, but a confluence of features often changes the game.
A rope and pulley attached to a vertically-moving platform existed for a really long time, and then someone bolted on a ratchet, and it became an elevator, which (with some iteration, and marketing) gave birth to skyscrapers. Another one is LXC, which existed for 5 years before Docker's confluence of features (and impressive marketing) made it ubiquitous and changed the [backend] tech landscape.
And before them both, chroot jails... at a high enough level of abstraction this reminds me of "there are only six plots", but occasionally a book will change the world.
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?
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.
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.
But they only work with a subset of architectures (only x86_64 in this case) and a subset of OSs (Windows with GNU installed, Linux with GNU libraries including libc and libgcc)
Rust on windows has targets for msvc or gnu. The MSVC integrates better with Visual Studio and other Microsoft libraries for development. One downside I've found is that it dynamically links against a msvcrt DLL. Which means you may need to download and install a Visual C++ Redistributable package to run.
The gnu target seems to be fully static and run everywhere with no dependencies.
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...
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!
It never occurred to me before, but it'd be great for GitHub et al to have a way to leave kudos and thank-you notes. As things stand, the only affordances are for leaving issues and complaints, so it's not surprising that that's what get left.
I've done that a few times, and always felt anxiety before hitting "submit". So far I've had mostly good reactions to it, but I've also had it ignored and the ticket silently closed.
I'd be happy to use a first-party system designed for simply saying why I like something. However I'm not willing to create a Twitter account just so I can thank someone when we've never met (and likely never will), and are likely never to speak to each other again. Same deal with signing into other services through GitHub (like gitter), that might start sending me emails (when signing in via GitHub, the service gets your email address; so far as I know, gitter doesn't use it for anything, but other services might).
Unclear, I think. I tend to use GitHub stars as bookmarks, which implies interest but not necessarily hearty approval.
I don't think you can generalize here; it's like Twitter, where some people use Likes to remember all-time favourites and some people use them as an "I've read this" checkbox.
Besides the thing sibling commenters mentioned about GitHub Stars acting like bookmarks, I also feel that GitHub Stars are more intended to be used to indicate interest in the source code itself—which is a bit different from indicating interest in the product you get by compiling said source code.
I might Star e.g. Postgres (yeah, I know, not their official repo) because someone told me that it's an example of good, elegant code, and I would like to study it. But that doesn't mean that I'm a Postgres user, let alone an adoring fan. I'm starring the code.
Please accepts my sincere congratulations and appreciation for your work on broot too! (Et bonjour de lyonnais à lyonnais pendant qu'on y est!) And I see you work for this french group now, and I'm pretty sure one of my plant management software is deployed at one of their plants - the world is small!
I was unable to cagro install it, had a bunch of build errors. Decided to brew install it instead, and although its a major version behind the github release, it works as advertised!
I second this. This has replaced nnn for me and solves so many devops headaches. Excellent work!
This should teach anyone that tackling something that's considered "the basics" is not a bad idea. It is astounding how these really simple things can still be enhanced (or even revolutionised ;)) in 2020.
At the risk of embarrassing myself: The ":s" verb for easily viewing the size of directories / files, the overview of multiple directories at once, the gitignore handling, at a glance. There might be more, but I would have to spend more time with it.
disclaimer: my definition of "devops" is sitting in a remote terminal for where I run docker and chasing down which files take up all my precious space, or not remembering where I put something, which makes the tree overview very useful. I know I could achieve this via many other means also (and did before Broot), but Broot is also very pretty, so I quite like that, too :)
> This has replaced nnn for me and solves so many devops headaches
Can you please elaborate? Is that specifically because nnn[1] doesn't show a complete overview of the filesystem or some other features are missing?
One of the guiding principles of nnn is to generate minimum disk IOs.
Reading through a complete volume on a stuffed microSD or SD card attached to a RaspberryPi to list the filesystem (even if compacted) and then supporting filesystem changes dynamically is resource-intensive. nnn development is driven by minimum resource availability and usage.
You know, I hadn't considered that. This distinguishes nnn from Broot. I would revise my comment if I could, but in the absence of that ability, consider this my correction.
That was first thing I did - check if I can navigate vim style. However it has different philosophy. It has fuzzy search, so that you just type name of directory which you want to enter, it will be filtered out and hit enter. Now you can explore it.
Same. It seems like it could be useful, but I'm virtually handicapped after decades of vim mode in a sense I cannot efficiently use any software that doesn't support vim keystrokes (well, nobody really can, they just don't know that).
Strongly agree. Keyboard interfaces can be very fast and efficient, but their weakness is having to learn a separate keymap (or set of options) to use a new program.
Vim keys is the closest console programs have to a common language! I seriously think all console programs should use a vim-like keymap. Not Emacs, because Emacs has a completely different philosophy - integrate everything into Emacs. Emacs is the prototype IDE. Emacs doesn't seek to export its keybindings, it seeks to import everything.
I too agree with strength that is strong. Just yesterday I was googling how to get tree to respect my git ignore. The universe heard and responded with broot!
But without first class support for vi navigation, be will end up replacing tree as my directory preview pane in vifm.
+1 I use a combination of Linux tools all day to achieve this: ls, tree, ranger, ncdu. Thanks so much for writing a tool built primarily for directory exploration. This deserves to ship in Ubuntu ASAP :-)
#1 ask: please add a Vim mode for j/k navigation and / search.
I can't agree more. I don't understand why other software developers think (or don't care) that it's okay to have tedious installation instructions and or controls. I'm a developer and I want to get my new tool and start playing with it, not spend hours with configuration and setup.
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)
It's not supposed to do the same thing. alt-enter closes vim:
* on a file it opens the file (in the same terminal if possible, depending on the system file opening)
* on a directory it does a cd to that directory and comes back to the terminal (if broot was launched with the br command)
I'd like Mac users to chime in and answer you now: I can't really test on mac.
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.
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?
How I did it (though not using CentOS, should be identical):
Install rustup from 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.
293 comments
[ 4.9 ms ] story [ 215 ms ] threadThose 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.
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.
This could use some documentation imo. Like the essentials of what 'supported on Win10+' means (is it supported in powershell, or command prompt or bash running on msys or ... ?) and how to laucnh/install it. I only looked briefly, ran broot in cmd but the only thing I get out of broot is that it creates a file <AppData>\Roaming\dystroy\broot\data\launcher\bash\1 and a link (even when entering 'n' instead of 'Y' when it asks to install!!). So I figured it maybe needs to find a 'br' command and added a function 'br' in powershell and launched that, but it still says it's not installed.
Another developer already started to work on a `br` function for windows: https://github.com/Canop/broot/issues/78
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.
"The easiest way to read and edit broot's configuration file is to go the help screen (using ?) then to type :open."
When I do that, I get "verb not found: "open"". Not quite sure what is supposed to happen here. I found the config file and editted it manually, but was some magic supposed to happen with the "open" verb?
I don’t know if it’s faithful enough for you
Windows:
- http://textmode.netne.net/Extreme.html
- http://www.ztree.com/
Unix:
- http://www.unixtree.org/
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.
but does anyone has an idea if there is a way to customise file sorting?
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.
The bit that's not done yet is rendering an overlay in the web player - https://github.com/asciinema/asciinema-player/issues/79
Pictures illustrating exactly what it does, something many people/organizations cough oxide.computer cough don't do properly.
Looking at oxide.computer... man... what DO they do? Do they sell servers?
My other pet peeve for these kind of websites is when the landing page is full of just release notes and links to tangentially related articles news articles and talks about the product, and it takes me 10 minutes to figure out where I can actually read about what the heck product I'm even looking at, and why I would use it over other products in its class.
This XKCD about uni websites gives the general gist of what I'm talking about https://xkcd.com/773/
Some Github repos are also awful. The README should summarize what the product is or link to a website that does.
The Kotlin and Elm websites are pretty good: https://kotlinlang.org/ https://elm-lang.org/
It's hard to find some really terrible ones right now...
Apache products tend to take some effort to decipher what it is they even do or how they'd be used. They have a nice summary description like the start of a man page, but that's about it. https://ant.apache.org/ https://hadoop.apache.org/
The GitHub landing page is surprisingly worse than you'd expect. It's not terrible... but check it out in Incognito / Private Window and imagine you'd never heard of GitHub: https://github.com/
Compare the above, with how cleanly and clearly Travis-CI manages to express what it does, and why you would use them, along with a useful screenshot of what the UI looks like right near the top of the page, so you can get an idea of what it would be like to use in practice: https://travis-ci.org/
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...
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.
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
[1] https://github.com/jarun/nnn
The two-pane file browser (folder tree plus folder contents like Windows 95 Explorer, or two parallel panes like Norton Commander) was a compromise solution that has worked for decades.
But this idea of showing in context a limited view of representative items of each collection could be generalized and exploited in other generic data-heavy interfaces, where there's no business code to show the specific data loads in the best way.
I don't think there is a standard widget other than what's implemented by each solution. Broot is one way of looking at a volume at the expense of lots of disk reads (for every file on the volume). Ranger does that at a single depth and that's a design choice in Miller's view. nnn doesn't prefer to read within directories unless explicitly requested and that's a design choice too. There's nothing good or bad about these other than a choice to the user to pick the one that fits his use case.
A user always has the liberty to concentrate only on the current directory, just know where he is in the filesystem from the file path and do a fuzzy search to find a file deep in the subtree when he needs to do so. As you might have noticed, even with Broot there's no simple way to list the files marked "unlisted" without navigating to the dir and expanding it. It's a nice program and is a solution to people who likes to see a snapshot of the filesystem in a glance. But would everyone be always interested in the contents of /etc, /run, /usr and /var as shown in one of the sample images?
There are ways to avoid traversing the whole volume in each use, namely caching each directory content when it's updated.
As for always showing unwanted information, an interactive solution could allow an option to "fold and hide" specific folders so that their contents are not shown until the user specifically reopens them. A user-friendly interactive solution doesn't require the user to remember and choose among all the available choices for each use, it provides good defaults and reminders on how to access alternative options when those are needed.
I've also used Total Commander for a while. I haven't seen any directory or file manager that is better.
Far Manager is better, of course :)
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.
In answer to your question of which was the first, the answer appears to be PathMinder (1984) and Norton Commander (1986). Both were for DOS so it seems to be an original innovation from the DOS world. Directory Opus first came out in 1990.
I wasn't familiar with PathMinder before looking at the wikipedia article but I was familiar with Norton Commander, as I think nearly everyone who used DOS in the late 80s would be. I personally favoured XTree (1985) more. Xtree didn't originally have the two pane view, but added it in 1989.
[1] https://en.wikipedia.org/wiki/File_manager#Orthodox_file_man...
https://www.tecmint.com/wp-content/uploads/2016/06/Worker-Fi...
Its available on FreeBSD so it must be available on Linux and macOS at least ... not sure about Windows.
It's (also) ActiveX (generic scriptig host, COM objects from/with scripts, etc.) scriptable and fully configurable. Just like in the good ole' days.
[1]: https://gpsoft.com.au/
https://books.google.nl/books?id=ki8EAAAAMBAJ&pg=PA34&redir_...
I love how "FORMAT your disk without leaving your spreadsheet" is a feature
Being able to format a floppy disc and continue to do things on OS/2 without applications becoming seriously jerky was also a feature. (-:
CentralPoint PC Tools seems little remembered nowadays. It was quite an extensive toolkit, as I recall. File viewers for various types of database/spreadsheet/wordprocessor files. Disc and file hex editors. Repair utilities. Extended directory change. A uniform look and feel, and a fairly good manual.
The Graham Utilities was another one.
* http://www.warpspeed.com.au/Products/OS2/GU/graham.htm
There seems to be no trace of things like InspectA (another OFM for OS/2) on the World Wide Web.
Indeed, up to the point that the name was usurped by some unrelated software.
It was very useful even in the later DOS era; it was a standard part of my travelling tech toolkit. It had one of the fastest floppy formatters around, and just about the fastest DOS disk-defragmenter I ever saw, nearly an order of magnitude quicker than Norton's.
The PC Tools backup/restore tool was also superb and extremely fast. It used an extended disk format, squeezing about 1.6 MB onto an HD 3½" floppy, and compressed data on the fly, so many megabytes of software or data could be squeezed onto the minimum number of floppies.
Benchmarks: http://www.oldskool.org/guides/dosbackupshootout
Unlike rival extended formats, if you tried to DIR the disk from DOS, you got a warning message: http://www.os2museum.com/wp/the-central-point-backup-floppy-...
What doomed Central Point software is that it did a licensing deal with Microsoft. Cut-down versions of PC Tools Backup and the separate Central Point Antivirus were bundled with MS-DOS 6. Microsoft promised CP that CP would make money from DOS 6 customers wishing to upgrade to the full versions.
In actual fact, people got by with the freebie versions and CP's sales of standalone products _and_ upgrades both stagnated.
MS tried similar tactics on STAC in the hope of bundling the Stacker disk-compression tool with MS-DOS 6. STAC, wisely, said no.
So Microsoft just stole the code and used it anyway.
STAC sued, won, and got $120M damages.
https://www.latimes.com/archives/la-xpm-1994-02-24-fi-26671-...
It used the money wisely, to diversify the company out of disk compression by acquisition, buying vendors of remote-control software (ReachOut) and enterprise backup (Replica).
Sadly, this was long before ubiquitous Internet connectivity, even by dial-up modem. ReachOut mainly worked by direct-dial modem-to-modem comms -- useful, but expensive, as each machine to be controlled needs a modem, a telephone line and its own phone number.
It wasn't enough and STAC ended up going broke. Central Point Software was bought out by Symantec, like Quarterdeck and Norton and others.
MS-DOS 6 was badly buggy anyway and MS had to release a free update, MS-DOS 6.2. (Note, at this time, product updates, service packs, etc. were extremely rare.)
Then, when it lost the STAC lawsuit, it released another update, MS-DOS 6.21, which simply removed disk compression altogether.
Then MS rewrote the offending code and released MS-DOS 6.22, another free update, replacing the infringing "DoubleSpace" with "DriveSpace" -- basically the same tool but with different compression/decompression routines.
This was the last-ever version of MS-DOS, and thus DOS 6 has the dubious distinction of being the most-patched release in history.
There are details of this on Wikipedia but it's been sanitised by MS PR so it merely mentions patent infringement, rather than the direct code theft involved.
https://tedium.co/2018/09/04/disk-compression-stacker-double...
Just as a data point, I tried that and I never could figure out how to populate the left pane and the right pane in such a way that it was helpful. (I.e. that copy and move did the right thing.) It just felt pointless to me.
I've used vifm a few times, but only after figuring out how to turn off the two-pane split :-)
De gustibus non disputandem, I guess.
[1]: https://en.wikipedia.org/wiki/DOS_Navigator
It was insanely good.
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.
To install - brew install nnn
Forklift made some questionable choices in the version 3. The app became much slower.
Idk what happened exactly, but now I can’t stand commanders at all.
A rope and pulley attached to a vertically-moving platform existed for a really long time, and then someone bolted on a ratchet, and it became an elevator, which (with some iteration, and marketing) gave birth to skyscrapers. Another one is LXC, which existed for 5 years before Docker's confluence of features (and impressive marketing) made it ubiquitous and changed the [backend] tech landscape.
Given your workflow, you might want to give ranger a try?
[1]: https://ranger.github.io/
That’s why he said static, although I’m not sure gcc will produce totally static binaries anymore.
The gnu target seems to be fully static and run everywhere with no dependencies.
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.
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.
Have an excellent day and successful year!
(A really cheeky issue tracker could have this built in as issue 0.)
Thank you issues while clutter would be my favourite off topic issue to close.
Let me pile on btw: great tool!
I don't think you can generalize here; it's like Twitter, where some people use Likes to remember all-time favourites and some people use them as an "I've read this" checkbox.
I might Star e.g. Postgres (yeah, I know, not their official repo) because someone told me that it's an example of good, elegant code, and I would like to study it. But that doesn't mean that I'm a Postgres user, let alone an adoring fan. I'm starring the code.
then run the broot command and it will prompt you to update your .bashrc or .zshrc file
The homebrew version is quite behind though, it was 0.10.x when I checked earlier today, while the latest version is 0.11.x.
This should teach anyone that tackling something that's considered "the basics" is not a bad idea. It is astounding how these really simple things can still be enhanced (or even revolutionised ;)) in 2020.
disclaimer: my definition of "devops" is sitting in a remote terminal for where I run docker and chasing down which files take up all my precious space, or not remembering where I put something, which makes the tree overview very useful. I know I could achieve this via many other means also (and did before Broot), but Broot is also very pretty, so I quite like that, too :)
It's the keybind "S" with nnn (or "A" for apparent usage). You can also use the same option ("-S") to open nnn in du mode.
> the overview of multiple directories at once
I explained the nnn design strategy in my other response
> the gitignore handling
This can be added but it changes the current generic way of handling directory entries
> There might be more, but I would have to spend more time with it
That would actually be a constructive data to improve nnn as well.
Thanks for the notes!
I like how 'on the ball' you are with this though, it's that kind of passion that makes projects like nnn so strong!
Can you please elaborate? Is that specifically because nnn[1] doesn't show a complete overview of the filesystem or some other features are missing?
One of the guiding principles of nnn is to generate minimum disk IOs.
Reading through a complete volume on a stuffed microSD or SD card attached to a RaspberryPi to list the filesystem (even if compacted) and then supporting filesystem changes dynamically is resource-intensive. nnn development is driven by minimum resource availability and usage.
[1] https://github.com/jarun/nnn
It simplifies a lot of workflows and reduces the number of keys.
This is an awesome piece work. Do a "simple" thing extremely well! Well done
I think a vim mode would be great. The first thing I did was to use 'j' to navigate in the tree.
Vim keys is the closest console programs have to a common language! I seriously think all console programs should use a vim-like keymap. Not Emacs, because Emacs has a completely different philosophy - integrate everything into Emacs. Emacs is the prototype IDE. Emacs doesn't seek to export its keybindings, it seeks to import everything.
But without first class support for vi navigation, be will end up replacing tree as my directory preview pane in vifm.
Especially the screenshots help to get motivated to try it and if you try it you will notice it just works as advertised - awesome :-D
#1 ask: please add a Vim mode for j/k navigation and / search.
but seriously, how to install from source is clearly shown
https://ranger.github.io/
* on a file it opens the file (in the same terminal if possible, depending on the system file opening) * on a directory it does a cd to that directory and comes back to the terminal (if broot was launched with the br command)
I'd like Mac users to chime in and answer you now: I can't really test on mac.
Good job btw, Broot looks awesome!
EDIT: Found https://dystroy.org/broot/documentation/configuration/ and on macOS the config file is located at ~/Library/Preferences/org.dystroy.broot/conf.toml
See https://superuser.com/a/496152 for screenshots.
How I did it (though not using CentOS, should be identical):
Install rustup from 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.