tapplied a change made by Uriel to dmenu (though I didn't applied everything) - dmenu - Dmenu fork with xft fonts.
 (HTM) git clone git://r-36.net/dmenu
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit c9465859a6eac7763d0b9049dca6bd34c163d8f6
 (DIR) parent 1716159e05e712962c3a4c60091f6cd6b573461f
 (HTM) Author: arg@wmii.de <unknown>
       Date:   Tue, 26 Sep 2006 08:43:41 +0200
       
       applied a change made by Uriel to dmenu (though I didn't applied everything)
       
       Diffstat:
         main.c                              |      21 ++++-----------------
       
       1 file changed, 4 insertions(+), 17 deletions(-)
       ---
 (DIR) diff --git a/main.c b/main.c
       t@@ -120,19 +120,8 @@ match(char *pattern) {
                nitem = 0;
        
                for(i = allitems; i; i=i->next)
       -                if(!plen || !strncmp(pattern, i->text, plen)) {
       -                        if(!j)
       -                                item = i;
       -                        else
       -                                j->right = i;
       -                        i->left = j;
       -                        i->right = NULL;
       -                        j = i;
       -                        nitem++;
       -                }
       -        for(i = allitems; i; i=i->next)
       -                if(plen && strncmp(pattern, i->text, plen)
       -                                && strstr(i->text, pattern)) {
       +                if(plen ? !strncmp(pattern, i->text, plen) :
       +                                strncmp(pattern, i->text, plen) && strstr(i->text, pattern)) {
                                if(!j)
                                        item = i;
                                else
       t@@ -208,10 +197,8 @@ kpress(XKeyEvent * e) {
                        }
                        break;
                case XK_Return:
       -                if(e->state & ShiftMask) {
       -                        if(text)
       -                                fprintf(stdout, "%s", text);
       -                }
       +                if((e->state & ShiftMask) && text)
       +                        fprintf(stdout, "%s", text);
                        else if(sel)
                                fprintf(stdout, "%s", sel->text);
                        else if(text)