Bookmarks that are easy to socialize!

boyska 433ef46440 initial commit 3 years ago
marxbook 433ef46440 initial commit 3 years ago
misc 433ef46440 initial commit 3 years ago
.gitignore 433ef46440 initial commit 3 years ago
README.md 433ef46440 initial commit 3 years ago
setup.py 433ef46440 initial commit 3 years ago

README.md

What

  • keeps track of bookmarks
  • has the concept of folder well integrated
  • supports tags and descriptions, too
  • one file per bookmark
  • CLI-first
  • python3

Storage

One file per bookmark

If you want to store a tree, let's just rely on filesystem!

Let's learn pass lesson: when you keep things simple, people can do crazy shit.

One quick example: if you want to share some folder with a friend of yours, having a REAL folder is the best way to make that simple. Easy share, few conflicts, easy review.

You can have some folder under git control, or rsync-ed, or shared through nextcloud.

Filename

What about the filename? Some approaches:

  • GUID
  • shasum of URL ⇒ you can't modify it!

File content

First line is the URL.

now we need to store description and tags. We want to be grep-friendly, so let's use a format borrowed from email (or from debian/control, if you want!):

URI: https://riseup.net/ Description: They are nice folks Tag: privacy Tag: change the world Tag: email

Just avoid newlines in fields and you can do good queries just using grep

Performance

Won't this be very slow? maybe! If that happens, we'll work it around adding an index, not changing the storage format.

Interface

Searching/opening

Though non optimal, fzf, peco or similar tools can be a very good start: nice interface and support for opening multiple URLs at a single time.

Dreaming a bit more, it would be nice to:

  • be able to both navigate the tree and filter results
  • include frecency!

Moving stuff

If we have filtering, it's nice to be able to use it to move things around, or delete, or whatever.

Mass tagging

Having tools that can be used to automatically apply/remove tags to returned bookmarks is very nice

Examples

mxb list
mxb list coding/python
firefox "$(mxb list | peco | awk '{ print $ NF }')"
mxb list | peco | cut -f 1 | mxb tag +urgent
mxb list | peco | cut -f 1 | mxb mv work/todo
mxb mv coding/python/exercises/dfkljedua work/todo/
xsel -b | mxb add

TODO

  • Core:
    • move()
    • tag()
  • CLI: write a cli!
  • helper:
    • write a marxbook-search helper based on peco