#bookmarks #bash #fish #zsh #fzf #browser #tempesta #bookmarks-manager

app tempesta

The lightest and fastest CLI for managing bookmarks, written in Rust

54 releases

0.0.79 Apr 25, 2025
0.0.78 Apr 23, 2025
0.0.53 Mar 3, 2025
0.0.47 Feb 28, 2025

#65 in Web programming

Download history 97/week @ 2025-02-19 1541/week @ 2025-02-26 88/week @ 2025-03-05 944/week @ 2025-04-02 2059/week @ 2025-04-09 96/week @ 2025-04-16 278/week @ 2025-04-23

3,377 downloads per month

MIT license

37KB
839 lines

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

How to use it

Init

Before start using it, run:

tempesta init

This will prompt with questions about the set up.

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

List bookmarks

tempesta list <local-path>

tempesta list search-engines/

Without arguments it lists all the bookmarks

tempesta list

List as an parameter that can be passed with the flag --divisor that divides the path name to the actual url:

tempesta list search-engines/ --divisor=" --- "

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
[e]dit    -- Edit an existing bookmark
[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

MacOS (Homebrew)

brew install x71c9/x71c9/tempesta

Arch Linux (AUR)

yay -S 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 --width 60% | xargs tempesta open

Dependencies

~4–15MB
~189K SLoC