bkmr

Ultrafast Bookmark Manager and Launcher

sysid blog: bkmr

Features: - full-text search with semantic ranking (FTS5) - fuzzy search --fzf (CTRL-O: open, CTRL-E: edit) - tags for classification - knows how to open HTTP URLs, directories, files (e.g. Office, Images, ....) - can execute URI strings as shell commands via protocol prefix: 'shell::' URI-Example: shell::vim +/"## SqlAlchemy" $HOME/document.md - automatically enriches URLs with title and description from Web

To fully use bkmr's full-text query power see: https://www.sqlite.org/fts5.html (chapter 3).

Usage

```bash bkmr --help

A bookmark manager for the terminal

Usage: bkmr [OPTIONS] [NAME] [COMMAND]

Commands: search Searches Bookmarks open Open/launch bookmarks add add a bookmark delete Delete bookmarks update Update bookmarks edit Edit bookmarks show Show Bookmarks (list of ids, separated by comma, no blanks) tags tag for which related tags should be shown. No input: all tags are printed create-db Initialize bookmark database help Print this message or the help of the given subcommand(s)

Arguments: [NAME] Optional name to operate on

Options: -c, --config Sets a custom config file -d, --debug... Turn debugging information on -h, --help Print help information -V, --version Print version information ```

Examples

```bash

FTS examples (https://www.sqlite.org/fts5.htm)

bkmr search 'security "single-page"' bkmr search '"https://securit" *' bkmr search '^security' bkmr search 'postgres OR sqlite' bkmr search 'security NOT keycloak'

FTS combined with tag filtering

bkmr search -t tag1,tag2 -n notag1

Match exact taglist

bkmr search -e tag1,tag2

Search by any tag and sort by bookmark age ascending

bkmr search -T tag1,tag2 -O

Adding URI to local files

bkmr add /home/user/presentation.pptx tag1,tag2 --title 'My super Presentation'

Adding shell commands as URI

bkmr add "shell::vim +/'# SqlAlchemy' sql.md" shell,sql,doc --title 'sqlalchemy snippets' ``` Tags must be separated by comma without blanks.

Installation

  1. WIP, for now: cargo build --release and then put ./target/release/bkmr somewhere on your PATH
  2. initialize the database: bkmr create-db db_path
  3. add URLs

Configuration

Location of created sqlite database must be known: bash export "BKMR_DB_URL=db-path"

Benchmarking

Found: 1 345

real 0m0.259s user 0m0.220s sys 0m0.037s

time bmkr search 'zzz*' --np -bash: bmkr: command not found

real 0m0.014s user 0m0.005s sys 0m0.009s ```