#!/bin/sh cache=""$HOME"/.cache/mew_drun" dirs="$HOME/.local/share/applications/ /usr/share/applications/" build_cache() { find $dirs -type f -name "*.desktop" | \ xargs -n1 basename | \ sed 's/\.desktop$//' | \ sort -u > $cache } check_cache() { [ -f "$cache" ] || build_cache for d in $dirs; do [ "$d" -nt "$cache" ] && return 0 done find $dirs -type f -name '*.desktop' -newer "$cache" -print -quit | \ grep -q . && return 0 return 1 } check_cache && build_cache choice="$(mew < "$cache")" gtk-launch $choice