A modern, cross-platform GUI file manager built with Python and Qt, inspired by XYplorer, FMan, and Sublime Text.
- Dual Pane Layout: Work with two directories simultaneously (configurable to single pane)
- Clean UI: Intuitive interface with toolbar buttons for common actions
- Command Palette: Quick access to commands with Ctrl+Shift+P (Sublime Text style)
- Sortable Columns: Click column headers to sort by name, size, type, or modified date
- Keyboard Navigation: Navigate efficiently with keyboard shortcuts
- Cross-Platform: Works on Windows, macOS, and Linux
- Clone the repository:
git clone https://github.com/keith-hall/filer.git
cd filer- Install uv (if not already installed):
# On macOS and Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# Or via pip
pip install uv- The dependencies will be automatically installed when you run the application.
Run the application:
uv run python main.pyAlternatively, you can activate the virtual environment and run directly:
# Activate the virtual environment
source .venv/bin/activate # On macOS/Linux
# or
.venv\Scripts\activate # On Windows
# Run the application
python main.py- Ctrl+Shift+P: Open command palette
- F5: Refresh current pane
- Ctrl+D: Toggle between single and dual pane layout
- Backspace: Navigate to parent directory
- Enter: Open selected directory or file
- Double-click: Navigate into directory
- Use the path bar at the top of each pane to manually enter a directory path
- Click the ↑ button to go to the parent directory
- Double-click on folders in the list to navigate into them
- Click column headers to sort the list
The project follows a clean separation between frontend and backend:
-
Backend (
filer/backend/):filesystem.py: File system operations and abstractionsmodels.py: Qt models for data representation
-
Frontend (
filer/frontend/):main_window.py: Main application windowfile_pane.py: Individual file browser pane widgetcommand_palette.py: Command palette for quick actions
This architecture ensures:
- Clear boundaries between UI and business logic
- Easy testing of backend components
- Flexibility to swap UI frameworks if needed
- Maintainable and extensible codebase
See LICENSE file for details.