π¦ Installation
From Binary
Download the appropriate binary for your platform below:
- Linux x86_64:
dtree-linux-x86_64.tar.gz(glibc) - Linux x86_64 (musl):
dtree-linux-x86_64-musl.tar.gz(static, no dependencies) - Linux ARM64:
dtree-linux-aarch64.tar.gz - macOS x86_64 (Intel):
dtree-macos-x86_64.tar.gz - macOS ARM64 (Apple Silicon):
dtree-macos-aarch64.tar.gz - Windows x86_64:
dtree-windows-x86_64.exe.zip
After Download
# Linux/macOS
tar xzf dtree-*.tar.gz
chmod +x dtree
sudo mv dtree /usr/local/bin/
# Windows
# Extract the zip and add to PATHπ What's Changed
Added
- Search in compact mode:
/search now works inline within the 8-row compact viewport β
no fullscreen switch. Results replace the tree body with a header showing count and
navigation hints.Enterjumps to the selected result and returns focus to the tree;
Esccloses results. The olds(file viewer) toggle still transitions to fullscreen. - Disk/Drive Selection Panel: Press
din tree mode to open a scrollable panel listing all
available drives and mount points- Shows mount point path (e.g.,
C:\,/,/home) - Filesystem type (NTFS, ext4, btrfs, ...)
- Free space and total space in human-readable format
- Volume label (if different from mount/drive path)
- Pre-selects the disk matching the current root path
- Press
Enterto navigate to the selected disk/mount root - Press
Escto close without navigating - Uses
sysinfocrate for cross-platform disk enumeration
- Shows mount point path (e.g.,
Fixed
zbadge: ESC now cancels size calculation immediately on large directories.
Previouslycancel()calledjoin()on the worker thread, blocking the UI until the
recursive traversal finished (could take several seconds on large trees). Fixed:- Added
Arc<AtomicBool>cancel flag checked at the entry of every recursive call and
every 100 entries within a directory β the worker exits within milliseconds of ESC. cancel()now drops the workerJoinHandlewithout joining; the thread terminates
on its own once it notices the flag or finds the task channel closed.- Permissions and mtime are cached immediately (fast stat) when
calculate_asyncis
called, so the badge shows[ calc., rw, 01.01.2025 12:00 ]while the size is
computing and[ rw, 01.01.2025 12:00 ]after cancellation β metadata is never lost.
- Added
- Search hang on broad queries: Single-character or very common queries (e.g.,
r,e)
matched thousands of entries, causing the UI to freeze. Root cause: O(nΒ²) deduplication
(Vec::iter().any()called for every incoming result from the background thread). Fixed:- O(1) deduplication via
HashSet<PathBuf>β constant-time duplicate check regardless of result count - 500-result cap β background thread cancelled once 500 results accumulate, preventing unbounded growth
- 200-message batch limit per
poll_resultscall β keeps the main thread responsive during active scanning - SkimMatcherV2 created once per search thread (not once per file) in fuzzy mode
- O(1) deduplication via
π Documentation
π Thank You!
Thank you for using dtree-tui! If you encounter any issues, please open an issue.