| Crates.io | tmmpr |
| lib.rs | tmmpr |
| version | 0.1.0 |
| created_at | 2026-01-24 09:11:56.402373+00 |
| updated_at | 2026-01-24 09:11:56.402373+00 |
| description | terminal mind mapper |
| homepage | |
| repository | https://github.com/tanciaku/tmmpr |
| max_upload_size | |
| id | 2066420 |
| size | 3,378,830 |
terminal mind mapper
A simple, lightweight mind mapping application that runs in your terminal
⚠️ Work in Progress — This project is functional and usable, but actively being improved. Expect rough edges, incomplete features, and ongoing refactoring. Feedback and contributions are welcome!
Installation • Usage • Features • Keybindings • Status & Roadmap
tmmpr is a Linux terminal application that lets you create, organize, and connect notes on an infinite canvas. Think of it as a digital whiteboard in your terminal where you can freely place notes anywhere and draw connections between them.
The application is entirely keyboard-driven, offering efficient navigation and control through vim-inspired keybindings. Perfect for brainstorming, project planning, or organizing complex ideas.
Current State: The core functionality works well—you can create maps, add notes, draw connections, and save your work. However, this is an active work in progress with planned improvements to code quality, feature completeness, and test coverage. See Project Status & Roadmap below.
This project maintains ~54% test coverage, focusing on business logic, state management, and input handling. The terminal UI layer (/src/ui/) is validated through manual testing and real-world usage rather than automated tests, as UI testing in terminal applications often provides limited value relative to the maintenance cost.
You can find extensive test suites throughout the codebase:
/src/states/*/tests//src/input/map/tests//src/utils/tests/⚠️ Known Testing Issue: Some tests currently modify the actual configuration file (~/.config/tmmpr/settings.json), resetting it to defaults during test execution. This is a known issue that needs to be resolved by properly isolating test environments. Be aware of this if you run the test suite while actively using the application.
cargo install tmmpr
git clone https://github.com/tanciaku/tmmpr.git
cd tmmpr
cargo build --release
# Binary will be at ./target/release/tmmpr
Simply run the application from your terminal:
tmmpr
You'll be greeted with a start screen where you can:
📖 View In-App Help: Press
?orF1from the Map Screen to open the interactive help pages with all keybindings and detailed explanations.
💡 Zooming: Since tmmpr runs in your terminal, zooming is controlled by adjusting your terminal emulator's font size. Most terminals use Ctrl + + / Ctrl + - (or Cmd + + / Cmd + - on macOS). The specific shortcuts vary by terminal emulator (GNOME Terminal, Konsole, iTerm2, Alacritty, etc.), so consult your terminal's documentation if needed.
General Commands:
F1 / ? - Toggle help screenq - Quit to start screen (if saved) or show confirm discard menus - Save map fileo - Open settingsViewport Navigation:
h / Left Arrow - Move viewport left by 1H / Shift+Left Arrow - Move viewport left by 5j / Down Arrow - Move viewport down by 1J / Shift+Down Arrow - Move viewport down by 5k / Up Arrow - Move viewport up by 1K / Shift+Up Arrow - Move viewport up by 5l / Right Arrow - Move viewport right by 1L / Shift+Right Arrow - Move viewport right by 5Note Operations:
a - Add a new note and switch to Edit Modev - Select closest note to center of screen and switch to Visual ModeGeneral Commands:
ESC - Switch back to Normal Modei - Switch to Edit Modem - Switch to Move statec - Switch to Connection state (edit existing connections)C - Add a new connection from the selected noted - Delete the selected note (shows confirmation prompt)e - Cycle through note colorsNote Focus Switching:
h / Left Arrow - Switch focus to note on the leftj / Down Arrow - Switch focus to note belowk / Up Arrow - Switch focus to note abovel / Right Arrow - Switch focus to note on the rightm - Switch back to Visual Mode normal stateESC - Switch back to Normal Modeh / Left Arrow - Move note left by 1H / Shift+Left Arrow - Move note left by 5j / Down Arrow - Move note down by 1J / Shift+Down Arrow - Move note down by 5k / Up Arrow - Move note up by 1K / Shift+Up Arrow - Move note up by 5l / Right Arrow - Move note right by 1L / Shift+Right Arrow - Move note right by 5Connection Management:
c - Confirm connection placement and switch to Visual Moder - Rotate connection start/end siden - Cycle through available connections on this noted - Delete selected connectione - Cycle through connection colorsTarget Note Selection:
h / Left Arrow - Switch focus to note on the leftj / Down Arrow - Switch focus to note belowk / Up Arrow - Switch focus to note abovel / Right Arrow - Switch focus to note on the rightNormal Edit Mode (Default):
Enter, Backspace, Arrow keys for typing/editingESC - Exit Edit Mode (returns to Normal Mode)Modal Edit Mode (when enabled in settings):
Edit Normal Mode:
h/j/k/l (left/down/up/right)g - Go to beginningG - Go to endw - Next wordb - Previous wordi - Enter Insert Modea - Move cursor after current character and enter Insert Modex - Delete characterESC - Exit Edit Mode (returns to main Normal Mode)Edit Insert Mode:
Enter, Backspace, Arrow keys for typing/editingESC - Switch to Edit Normal ModeThe application is fully functional for its core purpose - creating, organizing, and managing mind maps in the terminal. Most features work as intended.
Edit Mode (Vim-style):
Code Quality:
~/.config/tmmpr/settings.json) during executionShort-term (Before Major Feature Work):
Long-term (Future Features):
Your feedback on priorities is welcome! Open an issue or discussion to share suggestions.
Access settings by pressing o from the map screen. Configurable options include:
Issue: Terminal display looks wrong
Issue: Files not saving
Issue: Keybindings not working
Contributions, feedback, and suggestions are highly welcome! This project is actively being improved, and your input can help shape its direction.
Ways to contribute:
Areas needing help:
No contribution is too small—whether it's fixing a typo or tackling a major refactor!
This project is licensed under the MIT License
Concept inspired by: Obsidian Canvas
Built with ❤️ using Rust 🦀 and Ratatui 🐀
Enjoy mapping your thoughts! 🗺️