Skip to content

koompi/file-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

File Manager

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.

File Manager

Features

  • 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

Building and Running

Prerequisites

  • Rust toolchain (rustc, cargo) - install via rustup
  • GStreamer libraries for media support

Install GStreamer (required for media functionality)

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

Build and Run

  1. Clone the repository:

    git clone <repository-url>
    cd file-manager
  2. Build the project:

    cargo build
  3. Run the application:

    cargo run

    For better performance, use the release build:

    cargo build --release
    ./target/release/file-manager

Project Architecture

The project is structured using a modular approach:

  • Core Application Logic

    • app.rs: Main application state, message handling, and lifecycle management
    • fs_utils.rs: File system operations and utilities
    • constants.rs: Application constants and resource paths
  • User Interface

    • ui/view.rs: Main layout orchestration
    • ui/top_bar.rs: Navigation controls, breadcrumb path, and sort options
    • ui/sidebar.rs: Quick access locations and bookmarks
    • ui/file_grid.rs: Main file display with grid layout and grouping
    • ui/details_panel.rs: Selected file information and preview
    • ui/styles.rs: Custom styling and theming

Dependencies

  • 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

Icons and Resources

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.

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin feature/my-new-feature
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages