tempesta

Crates.iotempesta
lib.rstempesta
version0.1.34
created_at2025-02-24 18:21:10.871966+00
updated_at2025-12-29 16:10:40.60091+00
descriptionThe lightest and fastest CLI for managing bookmarks, written in Rust
homepage
repositoryhttps://github.com/x71c9/tempesta
max_upload_size
id1567805
size104,921
x71c9 (x71c9)

documentation

README

Tempesta

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.

Table of content

How to use it:

Install

Alias

Combine

How to use it

Init

Before start using it, run:

tempesta init

This will prompt with questions about the set up.

Configuration

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 list

If 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

Add a bookmark

tempesta add <local-path> <url>

tempesta add search-engines/google "http://google.com/"

Edit a bookmark in your editor (it check $EDITOR variable)

tempesta edit <local-path>

tempesta edit search-engines/google

Get a bookmark

It prints the URL of the bookmark

tempesta get <local-path>

tempesta get search-engines/google

Show configuration

It prints the current configuration

tempesta config

List bookmarks

tempesta list <local-path>

tempesta list search-engines/

Without arguments it lists all the bookmarks

tempesta list

List 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/

Move a bookmark

tempesta move <local-path>

tempesta move search-engines/google query-engines/google

Open the URL in the browser

tempesta open <local-path>

tempesta open search-engines/google

Remove a bookmark

tempesta remove <local-path>

tempesta remove search-engines/google

Update a bookmark

tempesta update <local-path> <url>

tempesta update search-engines/google "https://google.com"

Shortcut

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 bookmark

For example

tempesta o search-engines/google

tempesta r search-engines/google

Install

NixOS/Nix (NUR)

# 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 package includes configurable shell completion support. See NUR documentation for completion configuration options.

Arch Linux (AUR)

yay -S tempesta

MacOS (Homebrew)

brew install x71c9/x71c9/tempesta

Download binaries

Download the latest compatible binaries for your system and architecture: https://github.com/x71c9/tempesta/releases/latest


Build from source

Install Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

After 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/tempesta

If 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 .

Shell completion

BASH

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.

ZSH

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 shell

FISH

echo 'tempesta completion fish | source' > ~/.config/fish/completions/tempesta.fish && source ~/.config/fish/completions/tempesta.fish

Alias

ZSH Alias

Most likely you will alias the command with

alias t='tempesta'

In order to make completion in bash to work with alias you can add the following:

complete -o default -o nospace -F _tempesta t

where the final t is the name of the alias.

Bash Alias

Autocompletion do not work for bash alias but works when using functions, therefore is recommended to use a function instead, for example:

t() {
  tempesta "$@"
}
complete -o default -o nospace -F _tempesta t

fzf

If you are using fzf you can pipe the result of tempesta list to it:

tempesta list | fzf

And 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 open

An alias like this might be useful to open bookmarks:

alias tempo="tempesta list | fzf | sed 's/ *::.*//' | xargs tempesta open"

wofi

If you are using wofi you can pipe the result of tempesta list to it:

tempesta list | wofi --dmenu --insensitive | xargs tempesta open

rofi

If you are using rofi you can pipe the result of tempesta list to it:

tempesta list | rofi -dmenu -i -p "tempesta" | xargs tempesta open
Commit count: 208

cargo fmt