The fastest and lightest bookmark manager CLI written in Rust.
[Heavily inspired by pass]
Bookmark management should be simple and follow Unix philosophy.
With Tempesta all bookmarks live in ~/.bookmark-store, and tempesta provides
some intuitive commands for adding, updating, editing and open URLs.
It can also track all the changes using git.
How to use it:
- Init
- Add a bookmark
- Edit a bookmark
- Get a bookmark
- Show configuration
- List bookmarks
- Move a bookmark
- Open the URL in the browser
- Remove a bookmark
- Update a bookmark
- Shortcut
Install
- NixOS/Nix (NUR)
- Arch Linux (AUR)
- MacOS (Homebrew)
- Download binaries
- Build from source
- Shell completion
Alias
Combine
Before start using it, run:
tempesta initThis will prompt with questions about the set up.
Tempesta's configuration file (tempesta.toml) is typically located at ~/.config/tempesta/tempesta.toml.
You can specify a custom configuration file path using the --config or -c global flag. This flag can be placed anywhere in the command line:
tempesta --config /path/to/your/custom/tempesta.toml init
tempesta -c /path/to/another/config.toml listIf the --config flag is not provided, Tempesta will check for the TEMPESTA_CONFIG environment variable. If set, its value will be used as the configuration file path.
The --config flag takes precedence over the TEMPESTA_CONFIG environment variable. If neither is provided, Tempesta defaults to ~/.config/tempesta/tempesta.toml.
Available configuration options are documented in the table below:
| Option | Type | Explanation |
|---|---|---|
| git | bool | Set to true to enable git backend for storing bookmarks |
| pull_before_push | bool | Requires the git backend enabled, used to pull remote before any push to update |
| rebase_on_pull | bool | Requires git & rebase_on_pull enabled, use rebase instead of fast-forward strategy for git pull |
| remote | string | Git https/git url for repository to store bookmarks. |
| dir | string | Directory path in local filesystem for bookmark-store |
tempesta add <local-path> <url>
tempesta add search-engines/google "http://google.com/"tempesta edit <local-path>
tempesta edit search-engines/googleIt prints the URL of the bookmark
tempesta get <local-path>
tempesta get search-engines/googleIt prints the current configuration
tempesta configtempesta list <local-path>
tempesta list search-engines/Without arguments it lists all the bookmarks
tempesta listList has a parameter that can be passed with the flag --divisor that divides
the path name to the actual url:
tempesta list search-engines/ --divisor=" --- "This prints:
search-engines/google --- https://google.com/
search-engines/duck --- https://duckduckgo.com/tempesta move <local-path>
tempesta move search-engines/google query-engines/googletempesta open <local-path>
tempesta open search-engines/googletempesta remove <local-path>
tempesta remove search-engines/googletempesta update <local-path> <url>
tempesta update search-engines/google "https://google.com"You can use the initial of the methods instead of their full identifier:
[a]dd -- Add a new bookmark
[c]onfig -- Show the current configuration
[e]dit -- Edit an existing bookmark
[g]et -- Get an existing bookmark
[i]nit -- Init the bookmark store
[l]ist -- List bookmarks
[m]ove -- Move a bookmark
[o]pen -- Open a bookmark
[r]emove -- Remove a bookmark
[u]pdate -- Update an existing bookmarkFor example
tempesta o search-engines/google
tempesta r search-engines/google# Direct install
nix-env -iA nur.repos.x71c9.tempesta -f '<nixpkgs>'
# NixOS configuration
environment.systemPackages = [ nur.repos.x71c9.tempesta ];
# Home Manager
home.packages = [ pkgs.nur.repos.x71c9.tempesta ];The NUR, AUR and Homebrew packages install shell completions for bash, zsh and
fish, plus the t and tmps commands as aliases of tempesta. Completion
works for all three names.
yay -S tempestabrew install x71c9/x71c9/tempestaDownload the latest compatible binaries for your system and architecture: https://github.com/x71c9/tempesta/releases/latest
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shAfter installation, ensure your environment is updated (or restart your terminal) so that the cargo and rustc commands are in your PATH.
git clone https://github.com/x71c9/tempesta
cd tempesta
cargo build --release
./target/release/tempestaIf you want to install the CLI tool so that it’s available in your PATH, you can use in the repo directory:
cargo install --path .source <(tempesta completion bash)
# set up autocomplete in bash into the current shell,
# bash-completion package should be installed first.
echo "source <(tempesta completion bash)" >> ~/.bashrc
# add autocomplete permanently to your bash shell.source <(tempesta completion zsh)
# set up autocomplete in zsh into the current shell
echo '[[ $commands[tempesta] ]] && source <(tempesta completion zsh)' >> ~/.zshrc
# add autocomplete permanently to your zsh shellecho 'tempesta completion fish | source' > ~/.config/fish/completions/tempesta.fish && source ~/.config/fish/completions/tempesta.fishPackages installed from NUR, AUR or Homebrew already provide t and tmps
as symlinks to tempesta, with completion for each name. Nothing else is
needed there.
When building from source, the same names can be added as shell aliases. The
completion scripts printed by tempesta completion <shell> register
tempesta, t and tmps, so once the script is sourced (see
Shell completion) the aliases complete as well:
alias t='tempesta'
alias tmps='tempesta'For a different alias name, register it after sourcing the completion script:
# bash
alias bm='tempesta'
complete -F _tempesta bm
# zsh
alias bm='tempesta'
compdef _tempesta bm
# fish
alias bm='tempesta'
complete -c bm --wraps tempestaIf you are using fzf you can pipe the result of tempesta list to it:
tempesta list | fzfAnd you can use it in combination with tempesta open in order to fuzzy find a
bookmark and open it in the browser
# with AWK
tempesta list | fzf | awk -F ' *:: *' '{print $1}' | xargs tempesta open
# with SED
tempesta list | fzf | sed 's/ *::.*//' | xargs tempesta openAn alias like this might be useful to open bookmarks:
alias tempo="tempesta list | fzf | sed 's/ *::.*//' | xargs tempesta open"If you are using wofi you can pipe the result of tempesta list to it:
tempesta list | wofi --dmenu --insensitive | xargs tempesta openIf you are using rofi you can pipe the result of tempesta list to it:
tempesta list | rofi -dmenu -i -p "tempesta" | xargs tempesta open