#!/bin/zsh IFS=$'\n' declare -A bookmarks NAMES=() for i in ${1}/**/*.*; do for x in $(< $i); do local NAME="${x#* } | ${i##$1/}" NAMES+=$NAME bookmarks[$NAME]=${x%% *} done done exec xdg-open "${bookmarks[$((for i in ${NAMES}; do print ${i}; done) | dmenu -i -l 20 -p "Bookmarks")]}"