10 ms·
Show HN: Xplr – A hackable, minimal, fast TUI file explorer
- smitty1e 6y ago"Cool," said dired. https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html https://www.gnu.org/software/emacs/manual/html_node/emacs/Di...
- kqr 6y agoAnd Sunrise Commander, the dual-pane dired that works even more like an orthodox file manager. https://www.emacswiki.org/emacs/Sunrise_Commander https://www.emacswiki.org/emacs/Sunrise_Commander
- gerikson 6y agoThe name itself a reference to Midnight Commander, inspired by Norton Commander...
- OskarS 6y agoUgh, I find dired incredibly annoying and avoid it at all costs in Emacs. You use it once and suddenly have a gazillion buffers open, it's just the worst! They don't even go away when you deliberately close them with q!
- satish-setty 6y agoOf course, it can be customized. (put 'dired-find-alternate-file 'disabled nil) https://www.emacswiki.org/emacs/DiredReuseDirectoryBuffer https://www.emacswiki.org/emacs/DiredReuseDirectoryBuffer
- OskarS 6y agoThis does not solve the issue, if you enter a folder with RET (a slightly more obvious key than `a`), it still opens a new buffer for every directory. What you would have to do is to remap the key in dired's keymap. Which still doesn't solve the issue that it keeps the buffer open even though you close it with `q`, which requires some other fix. Or: you can use a file manager that isn't made by crazy people, which is what I do. I say this as a loyal Emacs user: there are so many things in Emacs that are amazing (org-mode and magit are the two famous ones obviously, but a personal favorite is Emacs calc, which is just a work of art), but dired is not one of them.
- mouldysammich 6y agoI wouldnt say dired is made by crazy people, It just doesnt fit your expectations I like that it opens multiple windows it makes it easy to quickly jump between directories. I dont worry about having a clean list of buffers though but it never gets in my way
- globular-toast 6y agoWhy do you care about open buffers? When I first started using emacs I cared because other text editors force you to care by displaying "tabs" or the like for each open buffer. But emacs is better than that. The only time I ever see all open buffers is if I do M-x list-buffers, and I never do that. Other than that, open buffers never get in the way. I do use midnight-mode to kill all "old" buffers in the middle of the night to stop the memory usage growing indefinitely, though.
- chalst 6y agoA buffer per directory is just the right thing for dired to do, for the same kind of reason that it is right that git has a staging area. Your problem is that this behaviour causes friction with how you prefer to manage buffers. Some suggestions: - With the regular buffer list, if you keep typing letters, the view will restrict to buffers containing that string - All the usual selection narrowing options, e.g. Helm, work here - You can rebind 'q' to 'kill-buffer-and-its-windows - A lot of people like ibuffer, which allows you to group kinds of buffer in its buffer list, e.g. all dired buffers
- deleted 6y ago[deleted]
- catern 6y agoMy favorite dired feature is that if you C-x C-q (the standard Emacs binding to toggle the read-only status of a file), it makes the directory buffer writable. You can then edit the buffer like a regular file, including changing file names (or symbolic link targets, or other things, I presume), and when you're done, C-c C-c and it applies all the changes as renamed files, symbolic link retargeting, etc etc. Very handy, since you can use all the usual Emacs features like query-replace or kmacros while doing it.
- conradludgate 6y agoThis is really cool! I use a similar tool for fuzzy cd[0]. At the moment I'm trying to use broot[1] as my directory browser but I might consider trying this too [0]: https://github.com/b4b4r07/enhancd https://github.com/b4b4r07/enhancd [1]: https://github.com/Canop/broot https://github.com/Canop/broot
- ducktective 6y agoThere is also nnn and Vifm (C), lf (Go) and ranger (Python)
- sayanarijit 6y agoAlso listed them https://github.com/sayanarijit/xplr/wiki/Alternatives https://github.com/sayanarijit/xplr/wiki/Alternatives
- ducktective 6y agoNice project btw! Were you experienced in C&C++ before learning Rust?
- sayanarijit 6y agoThanks. I only have some competitive programming experience with c++ and Java. I used Python and Elm in my last job.
- tartoran 6y agoI use Ranger but the hackability potential in this is very promising, I’ll definitely give it a spin. Thanks for posting!
- sayanarijit 6y agoGreat. Looking forward to hearing how it goes.
- ruph123 6y agoYou forgot „written in Rust“ for a 10x upvote multiplier. Looks great!
- sayanarijit 6y agoHaha. Missed this the 2nd time.
- sayanarijit 6y agoUpdated :)
- ruph123 6y agoNice!
- nikeee 6y agoFeels like "(as a millionaire)" on YouTube.
- anhanhanh 6y ago> written in rust Most important. Go get those sweet sweet internet points
- the8472 6y agoBut does it support mouse control, and drag&drop or media content preview?
- sayanarijit 6y agoNot yet. It's supposed to be minimal, so I doubt it'll ever support mouse, drap & drop and other GUI features. Although, the preview is in list as a potential plugin. See https://github.com/sayanarijit/xplr/wiki/Plugins https://github.com/sayanarijit/xplr/wiki/Plugins and https://github.com/sayanarijit/xplr/wiki/TODO https://github.com/sayanarijit/xplr/wiki/TODO
- windowsnoobz 6y agoNoob question: How can I use this on Windows?
- sayanarijit 6y agoI haven't tested it on Windows yet, but as per the following comment, it should work fine on Windows-Linux subsystem. https://www.reddit.com/r/commandline/comments/mjot3a/xplr_a_hackable_minimal_fast_tui_file_explorer/gtbtvn7 https://www.reddit.com/r/commandline/comments/mjot3a/xplr_a_...
- sayanarijit 6y agoi.e. use the Linux binary on WSL
- deleted 6y ago[deleted]
- fulafel 6y agoThe file specifying the dependencies is over 1000 lines long (https://github.com/sayanarijit/xplr/blob/main/Cargo.lock https://github.com/sayanarijit/xplr/blob/main/Cargo.lock) - there are different types of minimal of course, and a small amount of code leveraging a lot of deps is valid, but is does make one think. OTOH the highest voted comment as of this writing is comparing it to dired, so it's no worse than the competition I guess :)
- sayanarijit 6y agoThanks for your comment. I realized that I missed clarifying the type of "minimal" I want to pursue. I have updated the wiki accordingly. https://github.com/sayanarijit/xplr/wiki/Features#minimalist https://github.com/sayanarijit/xplr/wiki/Features#minimalist.
- __jem 6y agoThis is a lockfile, not the manifest for dependencies, so it includes all the translative dependencies as well. The list of direct dependencies is significantly smaller: https://github.com/sayanarijit/xplr/blob/main/Cargo.toml#L15-L24 https://github.com/sayanarijit/xplr/blob/main/Cargo.toml#L15....
- fulafel 6y agoYep, it's true that there's a shorter list of the direct dependencies. But surely the transitive dependency set is the better signal about the actual amount of 3rd party code pulled in.
- shakow 6y ago> But surely the transitive dependency set is the better signal Oh man, I do have some bad news for you if you start counting the lines in the libc or the libc++.
- fulafel 6y agoSure, we can extend this so that we consider the functionality provided by the base language as well. But third party code pulled in is qualitatively different.
- sim_card_map 6y ago> minimal > cargo.lock has 1100 lines
- dathinab 6y ago- Cargo lock has a very verbose format. - Cargo lock contains "test" dependencies, in this case the criterion benchmark suite. Without it it's ~750 lines. - It's actually "only" 10 direct dependencies and including transitive ones 60. - Some dependency are the same dependency split into multiple parts e.g. foobar and foobar-core count as two dependencies. - Some dependencies are also build-only dependencies, e.g. derive related dependencies like `syn`.
- PestoDiRucola 6y agoAhh yes, written in Rust, my favorite feature.
- woah 6y agoWhen you see a “Show HN”, the odds are very high that it is written in an ergonomic language such as Python, JS, Go, or Rust, rather than C or C++. Rust is the only one of these that has native performance, so I think this is useful information.
- laurent123456 6y agoMeanwhile, in the comments below: > just having it open and doing nothing with it, it has extremely high cpu usage > it's maxing out 3 cores for me
- sayanarijit 6y agoI'm aware of it and will start working on it shortly. https://github.com/sayanarijit/xplr/issues/10 https://github.com/sayanarijit/xplr/issues/10
- sayanarijit 6y agoFixed here https://github.com/sayanarijit/xplr/releases/tag/v0.3.3 https://github.com/sayanarijit/xplr/releases/tag/v0.3.3
- livre 6y agoFor software that isn't in the package repository of your distro written in Rust (or Go or any other language with something similar to cargo) means I can clone the repository, run a build command and it'll likely compile easily and successfully. As a user this is much better than hunting down dev package names and versions for a C or C++ source.
- pjmlp 6y agoI guess it is time to revive Turbo Vision.
- drran 6y agoRevived with Unicode support[0], but nobody ported it to Rust yet. [0]: https://github.com/magiblot/tvision https://github.com/magiblot/tvision
- GekkePrutser 6y agoInteresting, I will try it! But it will have to be pretty good to replace mc for me. It's not that mc is very good, because it's not. It's just that its keystrokes are deeply ingrained in my muscle memory :) But this looks good and quicker to use (navigating the menu in mc takes a lot of keystrokes)
- sayanarijit 6y agoYou should be able to configure the key bindings like mc https://github.com/sayanarijit/xplr/wiki/Key-Bindings https://github.com/sayanarijit/xplr/wiki/Key-Bindings
- resoluteteeth 6y agoI like it, but just having it open and doing nothing with it, it has extremely high cpu usage.
- hundchenkatze 6y agoSame here, it's maxing out 3 cores for me.
- sayanarijit 6y agoI'll start working on it shortly. https://github.com/sayanarijit/xplr/issues/10 https://github.com/sayanarijit/xplr/issues/10
- deleted 6y ago[deleted]
- sayanarijit 6y agoFixed here https://github.com/sayanarijit/xplr/releases/tag/v0.3.3 https://github.com/sayanarijit/xplr/releases/tag/v0.3.3
- hundchenkatze 6y agoExcellent! Thank You!
- codychan 6y agoSame here, I just play with it around 30s before I notice CPU problem.
- shomyo 6y ago'written in rust' is new 'Tips Fedora'
- smusamashah 6y agoThere is also broot https://dystroy.org/broot/ https://dystroy.org/broot/
- sayanarijit 6y agoListed https://github.com/sayanarijit/xplr/wiki/Alternatives https://github.com/sayanarijit/xplr/wiki/Alternatives