Browser-agnostic bookmarks by Shell Scripting
The Script
Minimal form
#!/bin/sh link=$(cat "$HOME/.bookmarks" | xmenu) $BROWSER $link
Expanded form(what I use on my system)
#!/bin/sh
link=$(cat "$HOME/.bookmarks" | xmenu)
if [[ "$link" == "firefox" ]]; then
firefox
elif [[ "$link" == "default" ]]; then
$BROWSER
elif [[ "$link" == "" ]]; then
exit;
else
$BROWSER $link
fi
The only difference between the minimal and expanded form is that the expanded form lets me handle default cases or opening a different browser. Not particularly useful for most people I don't think...
.bookmarks file
Default https://risingthumb.xyz Jellyfin GUI http://localhost:8096/web/#/home Syncthing GUI http://127.0.0.1:8384/ Software Sites N-Gate http://n-gate.com/ 2f30 https://2f30.org/home.html Suckless https://suckless.org
Explanation
I have an environment variable called $BROWSER which points to whichever browser I use. Whenever I switch browser to a new browser, i.e. Brave to Firefox, I just change this to be firefox then when I pass a url to the firefox program it opens it up in that browser.
The fetching of links is the most complex part. I use a program called xmenu which spawns a nice Windows XP-style window with categories(as an example in that .bookmarks file, the Software Sites category). Additionally it allows me to define if I want to open a link in another browser for whatever reason. The first 2 conditions of link == default and link == firefox can probably be skipped if you don't care for a default case or for using multiple browsers on the same system(which can be useful when you hit browser limitations).
This approach can be easily customised so you can use a different tool for selecting things. Examples of other tools include fzf(for selecting from a CLI), dmenu, and gnome-pie and probably more menu tools. You will have to prepare your bookmarks file so it is the correct format for your menu software, and you may have to add in additional parts to the script if your menu software doesn't give you just the URL part.