Bookmark
A bookmark manager for your favorite shell
Features
Section titled “Features”- A bookmark manager that works WITH your shell
- Integrates with your favorite shell!
- Integrates with TMUX and your favorite editor!
Install
Section titled “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
Section titled “Bookmark your favorite folder”~/Projects/favorite-projectbookmark"bookmark fp created!"
# Pass a namebookmark foo"bookmark foo created!"
# Rename tmux window on navigationbookmark -t
# Rename tmux custom windowbookmark -T fooHow bookmark works
Section titled “How bookmark works”A bookmark in this case is an alias that is sourced into the shell on load time.
Aliases live in ~/.bookmarks/bookmarks.sh by default. The location can be changed via config options.
Bookmark is essentially a light weight wrapper around that file.
Escaping and Quoting
Section titled “Escaping and Quoting”When bookmarks are saved, the tool automatically escapes and quotes all fields (such as directory paths, descriptions, tmux window names, and associated files or scripts) to ensure they are written and parsed correctly regardless of special characters like single/double quotes, pipes (|), or newlines. The escaping behavior is adapted automatically to your configured shell (POSIX, Fish, or Nushell).
Using different shell?
Section titled “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
Section titled “Commands”bookmark # Bookmark a filebm # Interactive bookmark listbookmark add # Interactive form to add a new bookmarkbookmark config # View or edit configurationbookmark config init # Generate default config filebookmark completion # Generate shell completion scriptsConfiguration
Section titled “Configuration”Bookmark is designed to be highly customizable.
bookmark config # open config file locationConfiguration file location: ~/.config/bookmark/config.toml ($XDG_CONFIG_HOME/bookmark/config.toml)
See configuration for installation options.
Installation
Section titled “Installation”See install for installation options.
Customization
Section titled “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
Section titled “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!
Section titled “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!