tanciaku/tmmpr
{ "createdAt": "2025-10-12T05:00:12Z", "defaultBranch": "main", "description": "terminal mind mapper", "fullName": "tanciaku/tmmpr", "homepage": "", "language": "Rust", "name": "tmmpr", "pushedAt": "2026-02-27T00:47:33Z", "stargazersCount": 320, "topics": [ "mind-map", "mind-mapper", "mind-mapping", "mindmap", "mindmapper", "mindmapping", "ratatui", "rust", "terminal", "terminal-user-interface", "tui" ], "updatedAt": "2026-03-19T18:38:18Z", "url": "https://github.com/tanciaku/tmmpr"}terminal mind mapper
A simple, lightweight mind mapping application that runs in your terminal
⚠️ Development Pause — I’ll be taking a break from active development for personal reasons, likely for a couple of months. The project is functional in its current state — expect some rough edges, but it works well for its core purpose. I intend to resume development afterward and will address open issues and PRs at that time. Feedback and contributions are still welcome!
[Installation]!(#-installation) • [Usage]!(#-usage) • [Features]!(#-features) • [Keybindings]!(#-keybindings) • [Status & Roadmap]!(#-project-status—roadmap)
📖 Overview
Section titled “📖 Overview”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 and feature completeness. See [Project Status & Roadmap]!(#-project-status—roadmap) below.
✨ Features
Section titled “✨ Features”- 🗺️ Infinite Canvas - Place notes anywhere on a positive coordinate system (0,0 to infinity)
- 🔗 Visual Connections - Draw and manage connections between notes with customizable colors and sides
- ⌨️ Vim-Inspired Navigation - Efficient keyboard-driven interface with hjkl movement
- 🎯 Multiple Modes:
- Normal Mode - viewport navigation and general commands
- Visual Mode - select and manage notes
- Visual (Move) Mode - reposition notes on the canvas
- Visual (Connection) Mode - manage note connections
- Edit Mode - text editing with optional modal (vim-inspired) editing
- 💾 Auto-Save - Configurable auto-save intervals to prevent data loss
- 🔄 Backup System - Automatic backups with customizable intervals (daily, weekly, etc.)
- 🎨 Customizable - Color-coded notes and connections, adjustable settings
🧪 Testing
Section titled “🧪 Testing”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:
- State management tests:
/src/states/*/tests/ - Input handling tests:
/src/input/map/tests/ - Utility function tests:
/src/utils/tests/
📸 Previews
Section titled “📸 Previews”🚀 Installation
Section titled “🚀 Installation”Pre-built Binary (Quick Start)
Section titled “Pre-built Binary (Quick Start)”Download the latest release from the Releases page:
# Download the latest releasewget https://github.com/tanciaku/tmmpr/releases/latest/download/tmmpr-linux-x86_64.tar.gz
# Extract and runtar -xzf tmmpr-linux-x86_64.tar.gz./tmmpr
# Optional: move to your PATHsudo mv tmmpr /usr/local/bin/From Crates.io (Recommended)
Section titled “From Crates.io (Recommended)”cargo install tmmprFrom the AUR (for Arch Linux)
Section titled “From the AUR (for Arch Linux)”paru -S tmmprWith Nix / NixOS
Section titled “With Nix / NixOS”# Run without installingnix run github:tanciaku/tmmpr
# Install to your profilenix profile install github:tanciaku/tmmprFrom Source
Section titled “From Source”git clone https://github.com/tanciaku/tmmpr.gitcd tmmprcargo build --release# Binary will be at ./target/release/tmmprSystem Requirements
Section titled “System Requirements”- OS: Linux (primary support)
- Rust: 1.85.0 or higher (requires Rust 2024 edition)
- Terminal: Any terminal emulator with Unicode support
💻 Usage
Section titled “💻 Usage”Simply run the application from your terminal:
tmmprYou’ll be greeted with a start screen where you can:
- Create a new mind map
- Open an existing map file
- Access recent files
⌨️ Keybindings
Section titled “⌨️ Keybindings”📖 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.
📋 Click to expand full keybindings reference ⬇️
Normal Mode
Section titled “Normal Mode”General Commands:
F1/?- Toggle help screenq- Quit to start screen (if saved) or show confirm discard menus- Save map fileo- Open settings
Viewport 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 5
Note Operations:
a- Add a new note and switch to Edit Modev- Select closest note to center of screen and switch to Visual Mode
Visual Mode
Section titled “Visual Mode”General 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 colors
Note 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 right
Visual (Move) Mode
Section titled “Visual (Move) Mode”m- 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 5
Visual (Connection) Mode
Section titled “Visual (Connection) Mode”Connection 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 colors
Target 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 right
Edit Mode
Section titled “Edit Mode”Normal Edit Mode (Default):
- Any character,
Enter,Backspace, Arrow keys for typing/editing ESC- Exit Edit Mode (returns to Normal Mode)
Modal Edit Mode (when enabled in settings):
Edit Normal Mode:
- Navigation:
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:
- Any character,
Enter,Backspace, Arrow keys for typing/editing ESC- Switch to Edit Normal Mode
📊 Project Status & Roadmap
Section titled “📊 Project Status & Roadmap”Current State
Section titled “Current State”The application is fully functional for its core purpose - creating, organizing, and managing mind maps in the terminal. Most features work as intended.
🛑 Development Pause — I’ll be taking a break from active development for personal reasons, likely for a couple of months. The project is functional in its current state. I intend to resume development afterward and will address open issues and PRs at that time.
🚧 Known Limitations
Section titled “🚧 Known Limitations”Code Quality:
- Code structure and approaches could use refactoring throughout the application
Edit Mode (Vim-style):
- Normal mode is very limited compared to vim
- No Visual mode within the text editor
- Block cursor placement issues in Normal mode
🗺️ Roadmap
Section titled “🗺️ Roadmap”Upcoming Features:
- Library API for node graph functionality (programmatic usage)
- Enhanced Edit Mode (fixing block cursor issue, expanded vim commands, visual selection, better text operations)
- Export functionality (convert maps to other formats like markdown)
- Import functionality (templates and config files for recurring structures)
- Image support
⚙️ Settings
Section titled “⚙️ Settings”Access settings by pressing o from the map screen. Configurable options include:
- Map Changes Auto Save Interval - Automatic save frequency (or disable)
- Backups Interval - How often to create backups when opening files
- Runtime Backups Interval - Create backups during long editing sessions
- Default Connection Sides - Default start/end sides for connections
- Modal Edit Mode - Enable vim-inspired modal editing (note: currently limited)
🛠️ Troubleshooting
Section titled “🛠️ Troubleshooting”Issue: Terminal display looks wrong
- Ensure your terminal supports Unicode characters
- Try resizing your terminal window
Issue: Files not saving
- Check file permissions in your working directory
- Verify disk space availability
Issue: Keybindings not working
- Check that your terminal is not intercepting key combinations
- Some terminals may not support all key combinations
🤝 Contributing
Section titled “🤝 Contributing”Contributions, feedback, and suggestions are highly welcome! This project is actively being improved, and your input can help shape its direction.
Ways to contribute:
- 🐛 Report bugs - Open an issue with details about what you encountered
- 💡 Suggest features - Share ideas for new functionality or improvements
- 🔧 Submit pull requests - Code improvements, bug fixes, or documentation updates
- 📝 Improve documentation - Help clarify usage, add examples, or improve comments
- 🧪 Testing feedback - Report issues with specific terminals, edge cases, or workflows
Areas needing help:
- Code refactoring and structural improvements
No contribution is too small—whether it’s fixing a typo or tackling a major refactor!
📝 License
Section titled “📝 License”This project is licensed under the [MIT License][MITLicense]
🙏 Acknowledgements
Section titled “🙏 Acknowledgements”Concept inspired by: [Obsidian Canvas][ObsidianCanvas]
Built with ❤️ using Rust 🦀 and Ratatui 🐀
Enjoy mapping your thoughts! 🗺️
[ObsidianCanvas] !: https://obsidian.md/canvas [MITLicense] !: https://github.com/tanciaku/tmmpr/blob/main/LICENSE