qutebrowser: Include sessions into qutedmenu script

If 'yq' is found on the system, the qutedmenu script will now also
traverse any saved sessions for urls (either active or historic) and
display those as well.

Also added a simple check for the sqlite3 and yq tools and spit out a
warning if either isn't found. Program will continue unhindered and just
ignore the history/session urls respectively.
This commit is contained in:
Marty Oehme 2025-01-03 22:32:55 +01:00
parent 4aab62cd80
commit 59677f3b9c
Signed by: Marty
GPG key ID: EDBF2ED917B2EF6A

View file

@ -7,6 +7,11 @@
#:bind o spawn --userscript /path/to/userscripts/qutedmenu open
#:bind O spawn --userscript /path/to/userscripts/qutedmenu tab
warn() {
echo "$1" >&2
}
readonly confdir=${XDG_CONFIG_HOME:-$HOME/.config}
readonly datadir=${XDG_DATA_HOME:-$HOME/.local/share}
readonly optsfile=$confdir/dmenu/bemenucolors
@ -24,8 +29,21 @@ create_menu() {
printf -- '%s\n' "$url"
done <"$QUTE_CONFIG_DIR"/bookmarks/urls
# Saved sessions
if type yq >/dev/null 2>&1; then
while read -r url; do
printf -- '%s\n' "$url"
done < <(yq ".windows.[].tabs.[].history.[].url" "${QUTE_DATA_DIR}"/sessions/*.yml | sed -e 's/^"\(.*\)"$/\1/')
else
warn "Did not find yq executable, not searching saved sessions."
fi
# Finally history
if type sqlite3 >/dev/null 2>&1; then
printf -- '%s\n' "$(sqlite3 -separator ' ' "$QUTE_DATA_DIR/history.sqlite" 'select title, url from CompletionHistory')"
else
warn "Did not find sqlite3 executable, not searching history."
fi
}
get_selection() {
@ -56,5 +74,6 @@ url=${url/*http/http}
case $1 in
open) printf '%s' "open $url" >>"$QUTE_FIFO" || qutebrowser "$url" ;;
print) echo "$url" ;;
tab | *) printf '%s' "open -t $url" >>"$QUTE_FIFO" || qutebrowser "$url" ;;
esac