TITLE: Converting Qutebrowser bookmarks to w3m bookmarks
DATE: 2018-12-01
AUTHOR: John L. Godlee
====================================================================


I use [Qutebrowser] as my primary web browser, but I also really
like using [w3m] for super fast text-based browsing when I’m
working mostly in the terminal. As a bit of practice in writing bash
scripts, I figured I would try to write a script which constructed a
w3m style bookmark.html from my Qutebrowser formatted bookmarks/urls
and quickmarks, because confusingly, Qutebrowser uses two files for
bookmarks, with different formatting. This is what I came up with:

  [Qutebrowser]: https://qutebrowser.org/
  [w3m]: http://w3m.sourceforge.net/

    #!/bin/bash

    touch ~/.w3m/bookmark.html

    echo "<html><head><title>Bookmarks</title></head>
    <body>
    <h1>Quickmarks</h1>
    <ul>" > ~/.w3m/bookmark.html

    while read line; do
        if [[ $line != *"qute"* ]]; then
            url=$(echo $line | sed 's@.* @@')
            desc=$(echo $line | sed 's/\(.*\) .*/\1/') 
            echo "<li><a href=\"$url\">$desc</a>" >> ~/.w3m/bookmark.html
        fi
    done < ~/.qutebrowser/quickmarks 

    echo "</ul>" >> ~/.w3m/bookmark.html

    echo "<h1>Other bookmarks</h1>
    <ul>" >> ~/.w3m/bookmark.html

    while read line; do
        if [[ $line != *"qute"* ]]; then
            url=$(echo $line | cut -d " " -f 1) 
            desc=$(echo ${line#* }) 
            echo "<li><a href=\"$url\">$desc</a>" >> ~/.w3m/bookmark.html
        fi
    done < ~/.qutebrowser/bookmarks/urls 

    echo "</ul>
    </body>
    </html>" >> ~/.w3m/bookmark.html

Firstly it creates a new bookmark.html, then echos some preamble
HTML, then loops through each line of quickmarks then urls, cutting
the line into the URL and the description of that URL, and forwards
it to bookmark.html, then it puts in the footer HTML material.
Importantly, it doesn’t include any bookmarks with the string qute
in them, which all refer to Qutebrowser only special URIs, it does
this with an if statement if [[ $line != *"qute"* ]]; then.

In w3m, I can then open bookmark.html with Esc-b.

For the record, .qutebrowser/bookmarks/urls looks like this:

    http://www.tablesgenerator.com/ Create LaTeX tables online 
    http://rbasicsworkshop.weebly.com/ R Basics Workshop - Home  
    http://app.uio.no/ifi/texcount/online.php TexCount 
    https://snazzymaps.com/ Snazzy Maps - Free Styles for Google Maps 
    http://www.protectedplanet.net/ Protected Planet 

while .qutebrowser/quickmarks looks like this:

    Gmail https://mail.google.com/mail/u/0/h/
    Google Keep https://keep.google.com/
    Google Photos https://photos.google.com/
    YouTube http://www.youtube.com/