#!/usr/bin/env bash # # Script name: dmqute # Description: Search your qutebrowswer bookmarks and quickmarks. # Dependencies: dmenu, qutebrowser # GitLab: https://www.gitlab.com/dwt1/dmscripts # License: https://www.gitlab.com/dwt1/dmscripts/LICENSE # Contributors: Derek Taylor # Defining location of bookmarks file BMFILE="$HOME/.config/qutebrowser/bookmarks/urls" # Defining location of quickmarks file QMFILE="$HOME/.config/qutebrowser/quickmarks" # Defining location of history database HISTDB="$HOME/.local/share/qutebrowser/history.sqlite" # A separator that will appear in between quickmarks, bookmarks and history urls. SEPARATOR="----------" # Read array of options to choose. readarray -t bmarks < "$BMFILE" readarray -t qmarks < "$QMFILE" # Sort the bookmark, quickmark and history lists so that the url is the last field. # We will awk print the last field later. # History list is formed by grep'ing "http" from the history table. bmlist=$(printf '%s\n' "${bmarks[@]}" | awk '{print $2" - "$1}') qmlist=$(printf '%s\n' "${qmarks[@]}" | awk '{print "["$1"] - "$NF}' | sort) SQL="SELECT h.title, h.url FROM history as h where url like 'http%';" histlist=$(printf '%s\n' "$(sqlite3 "$HISTDB" "${SQL}")" | awk -F "|" '{print $1" - "$NF}') # Piping the above lists into dmenu. # We use "printf '%s\n'" to format the array one item to a line. # The urls are listed quickmarks first, then the SEPARATOR, and then bookmarks. choice=$(printf '%s\n' "$qmlist" "$SEPARATOR" "$bmlist" "$SEPARATOR" "$histlist" | wofi --columns=2 -p 'Qutebrowser open:' -dmenu) "$@" || exit # What to do if the separator is chosen from the list. # We simply launch qutebrowser without any url arguments. # shellcheck disable=SC2154 if [ "$choice" == "$SEPARATOR" ]; then qutebrowser # What to do when/if we choose a url to view. elif [ "$choice" ]; then url=$(echo "${choice}" | awk '{print $NF}') || exit qutebrowser "$url" # What to do if we just escape without choosing anything. else echo "Program terminated." && exit 0 fi