gravityfile-0.1.2 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
This installs two binaries: gravityfile and grav (short alias).
Usage
Interactive TUI (Default)
# or use the short alias:
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.