*FR → LISEZMOI.md* # Demo ![a browsable bookmark manager](demo.png) **Something more understendable to be released soon** # Presentation ## signet.sh Signet.sh is a shell script parsing a bookmark database to a webpage. It uses awk inside a here-doc declaration redirected to an html file. I have created this script because I found the bookmarks manager from firefox not great to use, to the point where I did not have the habit to bookmark my browsing. Firefox stores bookmarks in a sqlite format and I wanted something text based ## Bookmarks database format Only a Url is required, the rest of the fields are optional : * URL : ... * Name : grabs from the bookmarked page * Description : ... * Tags : comma separated keywords * Date : posix time of the bookmarked link * Color : css color (name, hex, rgb etc...) For example, in a file called BOOKMARKS by default: ``` URL: https://rosettacode.org/wiki/Rosetta_Code Name: Rosetta Code Description: Tags: literacy, read Date: 1704675057 Color: Purple URL: https://www.emigre.com/TypeSpecimens Name: Emigre: Type Specimens Description: Tags: emigre, type Date: 1704680644 URL: https://web.archive.org/web/20211025182257/http://len.falken.ink/ Name: Wayback Machine Description: Tags: read Date: 1704712747 ``` # Other bookmark managers: - nb https://xwmx.github.io/nb/ (AGPL-3.0) - ?? # Dependency : To add a link via the proposed interface, we will need to install dmenu ~~and htmlq~~. * dmenu https://tools.suckless.org/dmenu/ (MIT/X) * ~~htmlq https://github.com/mgdm/htmlq (MIT)~~ replaced by one awk command ## dmenu Dmenu is an interactive menu that allows us to select and write values in a menu. These values can come from a program provided as input from a pipe "|", for example: ``` ls | dmenu ``` displays a drop-down menu with the files in my directory. In our script, to store the given tags in a variable, we can do: ``` tags=$(echo "" | dmenu -p "Enter comma-separated tags:") ``` ## ~~htmlq~~ Htmlq is an HTML parser written in Go. It doesn't matter which parser we uses, it seems that each language has its own. We give to the program an html string and it filters through it using css selectors returning the found html elements Using javascript, retrieving all the \