gravityfile-0.1.1 is not a library.
gravityfile
"Where mass accumulates, attention should follow."
A state-of-the-art file system analyzer with an interactive TUI, built in Rust.
Features
- Interactive TUI - Beautiful terminal interface with vim-style navigation
- Parallel Scanning - Fast directory traversal using
jwalk - Duplicate Detection - Find duplicate files using BLAKE3 hashing with partial-hash optimization
- Age Analysis - Identify stale directories and analyze file age distribution
- Drill-Down Navigation - Explore directories without rescanning
- Command Palette - Vim-style
:commands for power users - Multiple Themes - Dark and light theme support
- Library-First Design - Use as a library or standalone tool
- Export Support - Export scan results to JSON
Installation
From crates.io
From source
Usage
Interactive TUI (Default)
Launch the interactive terminal interface to explore disk usage.
Quick Scan
Quick summary of disk usage with tree output.
Find Duplicates
Find duplicate files. Uses a three-phase algorithm:
- Group files by size
- Compute partial hash (first + last 4KB)
- Full BLAKE3 hash for candidates
Age Analysis
Analyze file ages and find stale directories.
Export
Export scan results to JSON.
TUI Keybindings
Navigation
| Key | Action |
|---|---|
j / k |
Move down / up |
h / l |
Collapse / expand directory |
g / G |
Jump to top / bottom |
Enter |
Drill into directory |
Backspace / - |
Navigate back |
Tab |
Switch view |
Actions
| Key | Action |
|---|---|
d |
Mark for deletion |
x |
Clear all marks |
y |
Confirm deletion |
i |
Toggle details panel |
t |
Toggle theme |
r |
Refresh / rescan |
? |
Show help |
: |
Command palette |
q |
Quit |
Command Palette
| Command | Action |
|---|---|
:q |
Quit |
:cd <path> |
Change directory |
:cd .. |
Go to parent |
:root |
Go to scan root |
:theme |
Toggle theme |
:dark / :light |
Set theme |
:help |
Show help |
Library Usage
gravityfile is designed as a composable library:
use ;
use ;
// Scan a directory
let config = new;
let scanner = new;
let tree = scanner.scan?;
// Find duplicates
let dup_config = builder
.min_size
.build?;
let finder = with_config;
let report = finder.find_duplicates;
println!;
println!;
Crate Structure
gravityfile- Main binary and CLIgravityfile-core- Core types (FileNode, FileTree, etc.)gravityfile-scan- File system scanning enginegravityfile-analyze- Analysis algorithms (duplicates, age)gravityfile-tui- Terminal user interface
Performance
- Parallel directory traversal via
jwalk - Memory-mapped I/O for large file hashing
- Partial hash optimization reduces disk reads for duplicate detection
- Event-driven TUI rendering minimizes CPU usage
Acknowledgements
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contributing
Contributions welcome! Please feel free to submit a Pull Request.