Normally dmenu can only run scripts or binaries, not aliases. How do you get it to run aliases as well?

The reason that dmenu doesn't normally handle aliases is that every shell does it differently:

Bash

In the script that "eval"s the output of dmenu, add this:

If your ~/.bash_profile is setup to not load aliases when running non-interactively (most likely the case), you need to explicitely load the aliases in your dmenu_run script: source ~/.bash_aliases

The above is sufficient to run aliases, but only if you type in the full name by hand — at this point, aliases aren't included in the list of known commands. To fix that, replace dmenu_path with compgen -c.