View disk space usage and delete unwanted data, fast.
tui-react
and ratatui
(8ab4ee7).gitignore
(30f28a7)add dua i --no-entry-check
flag.
With it, in interactive mode, entries will not be checked for presence.
This can avoid laggy behaviour when switching between directories
as lstat
calls will not run, which can be slow on some filesystems.
dua i --no-entry-check
flag. (78b9a8e)allow /
(glob-mode) while scanning.
This will possibly lead to incomplete results, but I find being
able to use ones muscle-memory more important than preventing
dealing with incomplete results.
What happens to me is usually to type /
followed by target/
which tends to select all current entries for deletion.
don't check entry metadata while a scan is in progress Previously each time the UI refreshes, every 250ms, it display entries but also check their metadata to assure they exist.
This could lead to performance loss when the displayed folder has a lot of entries.
/
(glob-mode) while scanning. (67c5bdb)dua i root-a root-b
for instance.Press r
or R
for refresh
Lower-case r
will refresh the currently selected entry, while upper-case R
will refresh the entire displayed directory, and all entries in it.
Further, what was called item
is now called entry
across the
user-interface.
show and hide mtime and item count columns with 'M' and 'C' respectively
r
or R
for refresh (bed351e)Shift+r
do more than 'r' (f1fc13e)R
to trigger a full refresh (PoC) (30d8dd5)responsive and buttery-smooth UI while scanning in interactive mode.
Using dua i
the GUI would populate and is fully usable even while the scan
is in progress, which is fantastic when scanning big disks which can take several minutes.
However, previously is was quite janky as the refresh loop was bound to receiving entries to process, which sometimes stalled for many seconds.
Now the GUI refresh is uncoupled from receiving traversal entries, and it will update when the user presses a key or 250ms pass without any input, causing it to respond immediately.
Thanks so much for contributing, @unixzii!
tui-shared
featureadd --log-file
flag to keep track of some debug info, which includes panics.
Previously, when dua i
was used, panics would be hard to observe, if at all,
as they would print to the alternate screen. Now, when the --log-file dua.log
is specified, the panic will be emitted into the log file instead and thus won't
be lost anymore.
This may help with debugging in future.
--ignore-dirs
now work as expected.
Previously they would need to be specified as relative to the traversal root, which
was unintuitive and would lead to ignores not working for many.
Even though this was done for performance to avoid canonicalization, we do now perform a more performance version of canonicalization so the overall performance should be acceptable nonetheless.
Also note that ignored directories are now logged when using a --log-file
.
consistent language across the application and improved style of the Help pane.
Generally, what was called entry
is now called item
, consistently.
clarify that (and why) termion
isn't supported anymore in README.md
This was triggered by crossterm
essentially breaking event handling
on Windows, which is when I decided to just use the seemingly more
powerful crossterm events natively.
Overall, this made event handling more complex, but also allows users of
crosstermion
(the crate that actually dropped termion
support) to
write even more interactive applications without worrying about
the always out-of-date intermediate layer.
Interestingly, the crosstermion
crate adds some useful features around event handling,
but also optimizes build times thanks to termion
, which is something that
on my current machine I don't notice anymore, so the value of it diminished greatly.
--ignore-dirs
now work as expected. (49f98f5)tui-shared
feature (e992659)termion
isn't supported anymore in README.md (729e7e9)gix-path
for more control and performance. (93f0f61)--log-file
flag to keep track of some debug info, which includes panics. (6fbe17f)keep checking for existance of entries outside of the glob top-level. The glob top-level is used to display all search results which means that there can be a lot of them, which would unnecessarily slow down the search operation.
Previously it would never check for the existence of an entry in glob mode, but now it will do so outside of the top-level.
This release adds long-awaited globbing support, just hit the /
key to get started.
You want to find the biggest .git
directories? Just type /.git/<enter>
and you are done.
What about all target directories? Just write target/
to the glob search prompt and it's done.
What about all directories ending in *.rs/
?
Oh, by accident you typed *.rs
and now there is a list of a quarter million of entries? No problem,
it's near instant even with millions of files to search or hundreds of thousands to display.
Note that glob-mode can be exited only by pressing
ESC
when the glob prompt has focus.
Special thanks go to the contributor who made this feature happen,
along with many other improvements. Now dua
feels refreshed for 2024, and is much more versatile.
Happy holidays!
Clippy helped 1 time to make code idiomatic.
gix-glob
for matching; support for matching dirs only. (2e1858c)