Features:
- full-text search with semantic ranking (FTS5)
- fuzzy search
--fzf(CTRL-O: copy to clipboard, CTRL-E: edit, CTRL-D: delete, Enter: open) - 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
- manages statistics about bookmark usage
bkmr search --fzfis a great way to quickly find and open bookmarks.
To fully use bkmr's full-text query power see: https://www.sqlite.org/fts5.html (chapter 3).
bkmr --help
A Bookmark Manager and Launcher 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)
surprise Opens n random URLs
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 <FILE> Sets a custom config file
-d, --debug... Turn debugging information on
-h, --help Print help
-V, --version Print version# 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 <searchquery>
# Match exact taglist
bkmr search -e tag1,tag2
# Search by any tag and sort by bookmark age ascending
bkmr search -T tag1,tag2 -O
# Give me the 10 oldest bookmarks
bkmr search -O --limit 10
# 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'
# Bulk updating bookmarks: all bms with tag 'sa' also get tag 'py'
bkmr update -t py $(bkmr search -t sa --np)
# Bulk updating bookmarks: all bms with tag 'gh' should have 'git' removed
bkmr update -n git $(bkmr search -t gh --np)
# JSON dump of entire database
bkmr search --jsonTags must be separated by comma without blanks.
cargo install bkmr- initialize the database:
bkmr create-db db_path - add URLs
Location of created sqlite database must be known:
export "BKMR_DB_URL=db-path"You can set (not required) this variable to change --fzf mode default options:
export "BKMR_FZF_OPTS=--reverse --height 20% --show-tags"Currently available flags:
--reverse(defaults to false): show input line on top and reverse alphabetical order--height(defaults to 50%): screen usage of current terminal--show-tags(defaults to false): show tags
- ca. 20x faster than the Python original twbm after warming up Python.
time twbm search 'zzz*' --np
0. zzzeek : Asynchronous Python and Databases [343]
https://techspot.zzzeek.org/2015/02/15/asynchronous-python-and-databases/
async, knowhow, py
Found: 1
343
real 0m0.501s
user 0m0.268s
sys 0m0.070s
time bkmr search 'zzz*' --np
1. zzzeek : Asynchronous Python and Databases [343]
https://techspot.zzzeek.org/2015/02/15/asynchronous-python-and-databases/
async knowhow py
real 0m0.027s
user 0m0.008s
sys 0m0.016s