bookmark
A bookmark manager for your favorite shell
Features
- A bookmark manager that works WITH your shell
- Integrates with your favorite shell!
- Integrates with TMUX and your favorite editor!
Install
# With homebrewhomebrew install imdevan/bookmark/bookmark
# With AURyay -S bookmark-plus
# Manualgit clone https://github.com/imdevan/bookmark.gitcd bookmarkjust build && sudo just installSee install docs for more information.
Bookmark your favorite folder
~/Projects/favorite-projectbookmark"bookmark fb created!"
# Pass a namebookmark foo"bookmark foo created!"
# Rename tmux window on navigationbookmark -t
# Rename tmux custom windowbookmark -T fooBookmarks are created by default at ~/.bookmarks/bookmarks.sh
Using different shell?
Bookmark is set up for zsh first but works with any shell. Run bookmark config init to create a custom config file.
See configuration options for more info.
Commands
bookmark # Bookmark a filebm # Interactive bookmark listbookmark config # View or edit configurationbookmark config init # Generate default config filebookmark completion # Generate shell completion scriptsDevelopment
just sync # Sync project from package.tomljust build # Build the binaryjust build-run # Build and run the binaryjust dev-build # Build with debug symbolsjust test # Run testsjust test-verbose # Run tests with verbose outputjust watch # Watch for changes and rebuildjust cross-platform # Build for multiple platformsjust install # Install to /usr/local/binjust clean # Remove build artifactsConfiguration
Configuration file location: $XDG_CONFIG_HOME/go-cli-template/config.toml
See example-config.toml for available configuration options.
Installation
See INSTALL.md for installation options.
Customization
This template is designed to be customized for your specific CLI tool needs:
- Edit
package.tomlwith your project details (name, module, description, etc.) - Run
just syncto sync changes across all files - Review changes with
git diff - Build and test:
just build && just test
The package.toml file is the single source of truth for project metadata. The sync script will update:
- Go module name in
go.modand all import paths - Binary name in justfile and build scripts
- Config paths in
internal/utils/paths.go - Completion examples
- README description
- Version in root.go
Architecture
cmd/- CLI entrypoint and commandsinternal/config- Configuration managementinternal/domain- Domain modelsinternal/ui- Bubble Tea UI componentsinternal/utils- Utility functionsinternal/adapters- External service adapters (editor, clipboard)
Thank you!
This project was made by deconstructing a another cli project of mine Prompter. Check it out if you like fiddling with coding agents and want a more vim centric way of managing your prompting!