I've recently found yeganesh, a wrapper for dmenu that learns with use:
I am having trouble getting it to work. I've cached a number of entries, so I can correctly select one, but it just gets returned to stdout, what should I do to run the command? Also, it seems like it doesn't work unless you do something like pipe an empty echo to it. I cannot figure out why this is the case. It makes sense that it gets it's initial list from stdin, and it makes sense to every so often pipe dmenu_path to yeganesh, or always, but shouldn't it still work even if I don't echo anything to it?
This is the script I am currently running it with (everything after yeganesh is just formatting for display):
dmenu_path | ~/.cabal/bin/yeganesh -- -nb '#FFFFFF' -nf '#4D4D4D' -sb '#96B4CD' -sf #FFFFFF' -p "Run:"
EDIT: Found this: https://bbs.archlinux.org/viewtopic.php?id=68286
but not really sure what they did to fix it there.
EDIT: Found python based clone (yeganesh uses haskell), testing now https://chanux.wordpress.com/tag/yeganesh/
EDIT: exec. exec was what I was looking for.