A blazing-fast, emoji-powered, oh-my-zsh inspired terminal file explorer built with Rust and Ratatui.
![]() |
![]() |
![]() |
![]() |
|---|
- Multi-pane layout: File tree (30%) + Preview (70%) + Status bar
- Emoji-based file types: ๐ Folders, ๐ Files, ๐ผ๏ธ Images, โก Executables, ๐๏ธ Archives
- Colorful theme: Modern aesthetic with cyan, green, magenta, yellow highlights
- oh-my-zsh/Powerlevel10k inspired: Git branch + dirty indicators in status bar
- Responsive design: Automatically adjusts to terminal size
- Parallel search: Lightning-fast file search using Rayon
- Virtual scrolling: Only render visible items for smooth navigation
- Instant directory loading: Fast directory traversal
- Blazing-fast fuzzy search: Real-time search as you type
- Relevance scoring: Exact match, starts-with, contains, fuzzy matching
- Live results: Search updates instantly
- Parallel traversal: Multi-threaded directory scanning
- Navigate directories with keyboard (Vim-style keys supported)
- File preview (text files, binary detection, directory listing)
- Human-readable file sizes
- Hidden file toggle (
.key) - Git integration (branch, dirty status)
- Page up/down navigation
- Jump to first/last item
โ/k- Move upโ/j- Move downEnter- Open folderBackspace/h- Go back to parent directory/- Enter search mode.- Toggle hidden filesF5- Refresh directoryPgUp/PgDn- Page up/downHome/End- Jump to first/last item?- Show helpqorCtrl+C- Quit
- Rust 1.70 or higher
- Cargo
# Clone the repository
git clone https://github.com/programmersd21/astrofs.git
cd astrofs
# Build in release mode for best performance
cargo build --release
# Run the application
cargo run --release- Launch the app with
cargo run --release - Use arrow keys or
j/kto navigate - Press
Enterto open a folder - Press
Backspaceto go back - Press
qto quit
- Press
/to enter search mode - Type your search query
- Results appear in real-time with relevance scores
- Press
Enterto navigate to the first result - Press
Escto cancel search
- Text files: First 200 lines displayed
- Code files: Syntax highlighting (planned)
- Binary files: Shows "Binary file" with size
- Directories: Lists contents
src/
โโโ main.rs # Application entry point + event loop
โโโ app.rs # Application state and business logic
โโโ ui.rs # Ratatui UI rendering and layout
โโโ input.rs # Keyboard event handling
โโโ files.rs # File system operations
โโโ preview.rs # File preview generation
โโโ search.rs # Parallel search engine
โโโ theme.rs # Colors, emojis, and styling
โโโ git.rs # Git integrationAstroFS provides comprehensive Python bindings for programmatic access. See PYTHON_BINDINGS.md for complete documentation.
pip install pyastrofs # THIS IS NOT IMPLEMENTED YET, SO YOU'LL NEED TO BUILD FROM SOURCE BY USING ./scripts/build_bindingsfrom pyastrofs import PyAstroFS
fs = PyAstroFS()
fs.navigate("/home/user")
files = fs.list_files()
for file in files:
print(f"{file.name} - {file.size} bytes")Use the build scripts in the scripts/ directory:
chmod +x scripts/build_bindings.sh
./scripts/build_bindings.sh --release
pip install whl/*.whlSet-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
.\scripts\build_bindings.ps1 -Release
pip install whl/*.whlBoth scripts support the same options:
# Linux/macOS
./scripts/build_bindings.sh --help
./scripts/build_bindings.sh --output build --release
./scripts/build_bindings.sh --debug --skip-stubs
# Windows
.\scripts\build_bindings.ps1 -Help
.\scripts\build_bindings.ps1 -OutputDir build -Release
.\scripts\build_bindings.ps1 -Release $false -GenerateStubs $falseAll wheels are built to the whl/ directory with type stubs (pyastrofs.pyi) included.
The color theme and emojis can be customized in src/theme.rs:
pub struct Theme {
pub folder: Style, // Folders: cyan + bold
pub executable: Style, // Executables: green + bold
pub image: Style, // Images: magenta
pub archive: Style, // Archives: yellow
// ... more styles
}- ratatui - Terminal UI framework
- crossterm - Cross-platform terminal manipulation
- rayon - Data parallelism for fast search
- walkdir - Recursive directory traversal
- ignore - Git-aware file walking
- syntect - Syntax highlighting (ready for future use)
- git2 - Git repository access
- infer - File type detection
- humansize - Human-readable file sizes
- serde + serde_json - Configuration (ready for future use)
- anyhow - Error handling
- chrono - Date/time handling
For building Python bindings:
- maturin - Build tool for Python packages (
pip install maturin) - PyO3 - Python bindings framework (automatically managed by Cargo)
astrofs/
โโโ src/ # Rust source code
โโโ scripts/ # Build and utility scripts
โ โโโ build_bindings.ps1 # Windows PowerShell build script
โ โโโ build_bindings.sh # Linux/macOS bash build script
โโโ whl/ # Built Python wheels (generated)
โโโ Cargo.toml # Rust project manifest
โโโ pyproject.toml # Python project configuration
โโโ pyastrofs.pyi # Python type stubs
โโโ examples_python_bindings.py # Python usage examples
- Multi-pane layout with automatic resizing
- File navigation (keyboard-driven)
- File preview (text, binary detection, directories)
- Git integration (branch, dirty status)
- Fast parallel search with fuzzy matching
- Emoji file type indicators
- Colorful oh-my-zsh inspired theme
- Hidden file toggle
- Status bar with Git info and file details
- Page up/down navigation
- Jump to first/last item
- Help screen
- Syntax highlighting in file preview
- File operations (copy, move, delete, rename)
- Create new folders/files
- Archive file preview (ZIP, TAR contents)
- Image metadata display
- Open files with default applications
- Tab support (multi-pane workspaces)
- Configurable themes (load from JSON)
- Bookmarks for quick directory access
- Search history
- Command palette
- Plugin system
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Ratatui - Amazing TUI framework
- oh-my-zsh - Inspiration for the aesthetic
- Powerlevel10k - Status bar inspiration
This project was inspired by modern terminal tools like:
- lf: Terminal file manager
- ranger: Console file manager with VI key bindings
- nnn: Blazing-fast terminal file manager
- broot: Tree view file explorer
Made with โค๏ธ and ๐ฆ Rust



