Terminal File Manager (TFM) is a modular, extensible file manager for the terminal, written in modern C++. It aims to provide a full-featured, responsive, and user-friendly file management experience entirely within your terminal window.

- Full Terminal UI: Navigate and manage files and directories from a robust terminal interface.
- Modular Design: Core components like file management, command handling, rendering, input, and dialogs are separated for easier maintenance and extensibility.
- Efficient Rendering: Fast, smooth redraws using a custom renderer that efficiently updates only what’s needed.
- Command-Line Integration: Powerful command line for executing file operations and custom commands.
- Cross-Platform: Uses CMake and Curses/Ncurses for compatibility on Linux and other UNIX-like systems.
- Rich Command System: Supports command history, parsing, execution, and mapping.
- Robust Navigation: Scroll, jump, and manipulate rows and files with intuitive keyboard shortcuts.
TFM is organized into several core modules:
- App: Orchestrates all modules and manages the application's lifecycle.
- Renderer: Handles drawing and updating the UI based on current state.
- FileManager: Encapsulates all file-related operations, following a repository pattern.
- Input: Deals with keyboard input and command handling.
- Rows: Manages the visible rows (files, directories, etc.) in the UI.
- Dialogs: Manages user prompts and confirmations.
- C++23 compatible compiler (e.g., GCC 13+, Clang 16+)
- CMake 3.10+
- Ncurses/Curses
- Doxygen (optional, for documentation)
git clone https://github.com/Paran-oid/Terminal-File-Manager.git
cd Terminal-File-Manager
mkdir build && cd build
cmake ..
make
./TFM # Run the Terminal File Manager
- Use arrow keys (or configured shortcuts) to navigate files and directories.
- Enter commands in the command line at the bottom for advanced operations.
- Supports common file operations like copy, move, delete, etc. (see documentation for full list).
- Generate API docs with Doxygen:
Docs will be available in the
doxygen Doxyfile
docs/
directory.
Pull requests and feature suggestions are welcome! Please open an issue first to discuss what you would like to change or add.