dotfiles/qutebrowser/scripts/qutedmenu

61 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Open any of: quickmarks, bookmarks and browser history via dmenu (or rofi)
# Handle open -s && open -t with bemenu
#
# Requires sqlite3 binary installed to traverse the history.
#:bind o spawn --userscript /path/to/userscripts/qutedmenu open
#:bind O spawn --userscript /path/to/userscripts/qutedmenu tab
readonly confdir=${XDG_CONFIG_HOME:-$HOME/.config}
readonly datadir=${XDG_DATA_HOME:-$HOME/.local/share}
readonly optsfile=$confdir/dmenu/bemenucolors
readonly QUTE_CONFIG_DIR="${QUTE_CONFIG_DIR:-$confdir/qutebrowser}"
readonly QUTE_DATA_DIR="${QUTE_DATA_DIR:-$datadir/qutebrowser}"
create_menu() {
# Check quickmarks
while read -r url; do
printf -- '%s\n' "$url"
done <"$QUTE_CONFIG_DIR"/quickmarks
# Next bookmarks
while read -r url _; do
printf -- '%s\n' "$url"
done <"$QUTE_CONFIG_DIR"/bookmarks/urls
# Finally history
printf -- '%s\n' "$(sqlite3 -separator ' ' "$QUTE_DATA_DIR/history.sqlite" 'select title, url from CompletionHistory')"
}
get_selection() {
opts+=(-p qutebrowser)
local launcher
if exist bemenu; then
launcher=bemenu
elif exist dmenu; then
launcher=dmenu
fi
create_menu | "$launcher" -l 10 "${opts[@]}"
}
# Main
# https://github.com/halfwit/dotfiles/blob/master/.config/dmenu/font
[[ -s $confdir/dmenu/font ]] && read -r font <"$confdir"/dmenu/font
[[ -n $font ]] && opts+=(-fn "$font")
# shellcheck source=/dev/null
[[ -s $optsfile ]] && source "$optsfile"
url=$(get_selection)
url=${url/*http/http}
# If no selection is made, exit (escape pressed, e.g.)
[[ -z $url ]] && exit 0
case $1 in
open) printf '%s' "open $url" >>"$QUTE_FIFO" || qutebrowser "$url" ;;
tab | *) printf '%s' "open -t $url" >>"$QUTE_FIFO" || qutebrowser "$url" ;;
esac