Thanks for your interest in contributing! FTB is a terminal file browser built with C++17 and FTXUI.
| Goal | Where to Go |
|---|---|
| Report a bug | Bug Report Template |
| Request a feature | Feature Request Template |
| Ask a question | Other Template or Discussions |
# Debian / Ubuntu
sudo apt install cmake g++ libftxui-dev nlohmann-json3-dev libgtest-devgit clone https://github.com/anomalyco/FTB.git
cd FTB
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build -j$(nproc)cd build/tests && ctest --output-on-failureEnable with CMake flags:
cmake .. \
-DFTB_ENABLE_SSH=ON \
-DFTB_ENABLE_TREE_SITTER=ON \
-DFTB_ENABLE_LIBCHAFA=ON \
-DFTB_ENABLE_LIBSIXEL=ON \
-DFTB_ENABLE_AI=ON- Language: C++17
- Headers:
#pragma once - Naming:
- Classes / structs:
PascalCase(e.g.ImageOutputManager) - Functions / variables:
snake_case(e.g.GetCached,s_overlay_active) - Member variables:
m_prefix (e.g.m_mutex) - Static variables:
s_prefix (e.g.s_protocol) - Constants / macros:
UPPER_SNAKE_CASE
- Classes / structs:
- Formatting: 4-space indentation, no tabs
- Includes: Group in order — standard library, third-party, project headers
- Comments: Not required — prefer self-documenting code
src/ include/
├── ai/ ├── ai/
├── browser/ ├── browser/
├── config/ ├── config/
├── core/ ├── core/
├── dialog/ ├── dialog/
├── editor/ ├── editor/
├── ops/ ├── ops/
├── preview/ ├── preview/
├── protocols/ ├── protocols/
├── remote/ ├── remote/
├── renderer/ ├── renderer/
└── utils/ └── utils/
Each module's source lives in src/<module>/ and its public header in include/<module>/.
Use conventional commits:
<type>(<scope>): <description>
[optional body]
Types: feat, fix, docs, refactor, test, chore, perf, style
Scope: module name (e.g. ai, preview, docker)
Examples:
feat(preview): add PDF text extraction via hygg
fix(editor): resolve crash on empty file open
docs(readme): add Docker section
- Fork the repo and create a feature branch from
master - Make your changes following the code style above
- Ensure tests pass:
cd build && cmake .. -DCMAKE_BUILD_TYPE=Debug && cmake --build . && cd tests && ctest - Keep commits focused and use the conventional commit format
- Open a PR against
masterwith a clear description of the changes - Link related issues if applicable
By contributing, you agree that your contributions will be licensed under the MIT License.