#!/bin/bash
# Fast GTK-like recent folders using only xmlstarlet + bash + fzf

RECENT="$HOME/.local/share/recently-used.xbel"

mapfile -t entries < <(xmlstarlet sel -t -m '//bookmark[@visited]' \
  -v '@visited' -o '|' -v '@href' -n "$RECENT" 2>/dev/null)

declare -A seen
output=()

for entry in "${entries[@]}"; do
    ts="${entry%%|*}"
    href="${entry#*|}"
    # remove file:// prefix
    path="${href#file://}"
    # remove trailing .desktop, .docx, .pdf, .txt (optional)
    path="${path%%.desktop}"
    path="${path%%.docx}"
    path="${path%%.pdf}"
    path="${path%%.txt}"
    # get parent directory if path is a file name
    dir="${path%/*}"
    [[ -z "$dir" || "$dir" == "/" || "$dir" == "trash:///" ]] && continue
    [[ -n "${seen[$dir]}" ]] && continue
    seen["$dir"]=1
    output+=("$ts|$dir")
done

printf '%s\n' "${output[@]}" | sort -r | cut -d'|' -f2 | head -n 20 | fzf --height 40% --prompt="Recent folders> " | xargs -r nautilus
