Toney
Toney is a fast, lightweight, terminal-based note-taking app for the modern developer. Built with Bubbletea, Toney brings a sleek TUI interface with markdown rendering, file navigation, and native Neovim editing β all in your terminal.
https://github.com/user-attachments/assets/4e413f80-0c26-4a8e-8f4f-4649ee7bb972
β¨ Features
- β‘ Blazingly Fast β Minimal memory usage and snappy performance.
- π Markdown Renderer β Styled previews via
glamour.
- π§ Neovim Integration β Edit your notes using your favorite editor (
nvim).
- π File Management β Easily navigate, open, and manage markdown files.
- π§© Component Architecture β Modular codebase using Bubbleteaβs
Model system.
- π¨ TUI Styling β Clean, responsive interface using
lipgloss.
π Installation
You can install Toney directly using go install:
go install github.com/SourcewareLab/Toney@latest
This will download, build, and install the Toney binary into your $GOBIN (typically $HOME/go/bin).
Run this command to ensure Toney is setup perfectly.
Toney init
π§ͺ Requirements
- Go 1.16 or later
- Git (to fetch the module)
Make sure your GOBIN is in your system's PATH:
export PATH=$PATH:$(go env GOBIN)
β
Verify Installation
Once installed, you can run:
Toney
π Keybinds
| Key Combination |
Action |
| F / Shift + F |
Focus on File Tree |
| V / Shift + V |
Focus on File Viewer |
π File Tree Focus Shortcuts
Once the File Tree is focused (F or Shift + F):
| Key |
Action |
| c |
Create a file/folder |
| d |
Delete selected |
| r |
Rename selected |
| m |
Move selected |
| Enter |
Edit selected file |
πΊ Roadmap
Short Term Goals
- Overlay support
- Viewer style improvements
- Error popups
- Separate package for messages
- Keybind refactor
- Config file support (
~/.config/toney/config.yaml)
- Custom markdown renderer
- Custom components:
- [ ] Task Lists
-
code blocks
- Tables
- File Import/Export
- Configurable external editor support
Long Term Goals
- Cross-platform mobile app
- Server sync with configuration & cloud storage
π οΈ Project Structure
toney/
βββ cmd/ # Entry point (main.go)
βββ internal/
β βββ models/ # All UI models (Home, Viewer, Popups, etc.)
β βββ enums/ # Typed enums (pages, popup types)
β βββ messages/ # Message types for tea.Msg (will be modularized)
β βββ utils/ # Shared utility functions
π€ Contributing
We welcome contributions! Toney follows Go and Bubbletea conventions.
π§Ύ Guidelines
- Follow idiomatic Go formatting (
go fmt, go vet, golint).
- Use
Init, Update, and View separation for all models.
- Keep component responsibilities well-isolated.
- All exported functions/types should be documented with Go-style comments.
- Prefer
tea.Msg messages over direct cross-component function calls.
β
How to contribute
-
Fork the repo and create a feature branch:
git checkout -b feature/my-feature
-
Write your code and make sure it builds:
go build ./...
-
Format your code:
go fmt ./...
-
Commit and push:
git commit -m "feat: add my awesome feature"
git push origin feature/my-feature
-
Submit a Pull Request π
Please open an issue or discussion for large changes before starting them.
π License
MIT License. See LICENSE.
π‘ Inspiration
Toney is inspired by:
Made with π by Nucleo & SourcewareLab