A modern, feature-rich file manager application built with Rust and the Iced GUI toolkit. This application provides a clean, intuitive interface for navigating your filesystem with support for file operations, previews, and customizable views.
-
Modern UI: Clean, responsive interface with customizable three-panel layout
- Main file browser with customizable views (grid layout)
- Collapsible details panel
- Sidebar with quick access locations
-
File Operations:
- Copy, cut, paste functionality for files and folders
- Delete files and directories
- Rename files and folders with inline editing
-
Navigation:
- Breadcrumb path navigation for intuitive directory traversal
- Forward/back history navigation
- Quick access sidebar with common locations (Home, Documents, Downloads, etc.)
- Double-click to enter directories
-
File Preview:
- Preview images with automatically generated thumbnails
- Text file content preview
- File metadata display (size, modification date, type)
-
Advanced Sorting & Grouping:
- Sort files by name, size, modified date, or type
- Toggle between ascending/descending order with custom sorting icons
- Group by file type or MIME type (Images, Documents, Archives, etc.)
- Expandable/collapsible groups with item count
-
View Customization:
- Show/hide hidden files toggle
- Toggle details panel visibility
- Multiple view options for file display
-
Visual Enhancements:
- Custom icon set for files, folders and special locations
- Visual indicators for selected files and sorting state
- Custom styling with the InterKhmerLooped font
- Rust toolchain (rustc, cargo) - install via rustup
- GStreamer libraries for media support
Ubuntu/Debian:
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good
Fedora:
sudo dnf install gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-plugins-good
Arch Linux:
sudo pacman -S gstreamer gst-plugins-base gst-plugins-good
-
Clone the repository:
git clone <repository-url> cd file-manager
-
Build the project:
cargo build
-
Run the application:
cargo run
For better performance, use the release build:
cargo build --release ./target/release/file-manager
The project is structured using a modular approach:
-
Core Application Logic
app.rs
: Main application state, message handling, and lifecycle managementfs_utils.rs
: File system operations and utilitiesconstants.rs
: Application constants and resource paths
-
User Interface
ui/view.rs
: Main layout orchestrationui/top_bar.rs
: Navigation controls, breadcrumb path, and sort optionsui/sidebar.rs
: Quick access locations and bookmarksui/file_grid.rs
: Main file display with grid layout and groupingui/details_panel.rs
: Selected file information and previewui/styles.rs
: Custom styling and theming
- Iced (0.12): GUI framework with a focus on simplicity and type-safety
- Iced_aw (0.9.3): Additional widgets for Iced
- Tokio (1.x): Asynchronous runtime for non-blocking operations
- Chrono (0.4): Date and time library
- mime_guess (2.0): MIME type detection from file extensions
- xdg (2.5): XDG Base Directory specification support
- dirs (5.0): Cross-platform directories for user and application data
- once_cell (1.19): Single assignment cells for better static initialization
- fs_extra (1.3.0): Extended filesystem operations
The application includes a set of custom icons for:
- File and folder representation
- Navigation controls
- Sorting indicators
- Special locations (home, documents, downloads, etc.)
These resources help provide a cohesive visual experience throughout the application.
Contributions are welcome! Please feel free to submit issues or pull requests.
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin feature/my-new-feature
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.