Compare commits

...

18 Commits
1.8 ... 2.1

Author SHA1 Message Date
6175a39e8e hotfix changes 2007-01-17 11:10:26 +01:00
2c7ff85f24 Added tag 2.1 for changeset d91c79020430 2007-01-17 11:10:09 +01:00
447046f7ae Added tag 2.0 for changeset 1fce5c464fcd 2007-01-16 11:42:09 +01:00
b76632b9e3 small fix 2007-01-16 11:39:26 +01:00
f8f5b27036 removed useless mx, my 2007-01-16 11:38:31 +01:00
d6bf35caad applied new default colors 2007-01-16 11:24:51 +01:00
507c030b5b small fix of Control-j in dmenu.1 2007-01-16 11:07:30 +01:00
0245394e4d Added tag 1.9 for changeset c7f5f4d54317 2007-01-12 12:43:44 +01:00
b6cd6ed266 added evil key support to dmenu 2007-01-11 15:52:37 +01:00
09813fcf2c s/Mod1-Shift-g/Mod1-G/ in fact Sander is right 2007-01-11 13:51:15 +01:00
64d68b7de9 documenting undocumented vi-alike shortcuts of dmenu 2007-01-11 11:41:16 +01:00
eaf8909378 commented recent Control-shortcut additions 2007-01-11 10:17:01 +01:00
c0fcfb7827 applied Sanders dmenu_ctrlchars.patch (thanks!) 2007-01-10 23:07:03 +01:00
a45d6983ab applied Alexis Hildebrandts patches 2007-01-10 18:06:16 +01:00
08420a935b corrections 2007-01-02 15:44:32 +01:00
deea1fb5ab corrected 2007-01-02 15:41:13 +01:00
771c0cb607 next version will contain updated copyright notice 2007-01-02 15:38:44 +01:00
43a19425af Added tag 1.8 for changeset d3e6fa22ae45b38b1bdb0d813390365e5930360b 2006-12-19 11:49:38 +01:00
9 changed files with 52 additions and 29 deletions

View File

@ -16,3 +16,6 @@ e071fb045bd9e8574947acff7196360bc0270e68 1.5
dcc5427f99f51a978386a0dd770467cd911ac84b 1.6 dcc5427f99f51a978386a0dd770467cd911ac84b 1.6
58dbef4aef3d45c7a3da6945e53c9667c0f02d5b 1.7 58dbef4aef3d45c7a3da6945e53c9667c0f02d5b 1.7
3696d77aaf02f5d15728dde3b9e35abcaf291496 1.7.1 3696d77aaf02f5d15728dde3b9e35abcaf291496 1.7.1
d3e6fa22ae45b38b1bdb0d813390365e5930360b 1.8
c7f5f4d543170f03d70468e98a3a0ec8d2c4161b 1.9
1fce5c464fcd870b9f024aa1853d5cf3a3eb371b 2.0

View File

@ -1,7 +1,7 @@
MIT/X Consortium License MIT/X Consortium License
(C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
(C)opyright MMVI Sander van Dijk <a dot h dot vandijk at gmail dot com> (C)opyright MMVI-MMVII Sander van Dijk <a dot h dot vandijk at gmail dot com>
Permission is hereby granted, free of charge, to any person obtaining a Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"), copy of this software and associated documentation files (the "Software"),

View File

@ -1,5 +1,5 @@
# dmenu - dynamic menu # dmenu - dynamic menu
# (C)opyright MMVI Anselm R. Garbe # (C)opyright MMVII Anselm R. Garbe
include config.mk include config.mk

View File

@ -1,5 +1,5 @@
# dmenu version # dmenu version
VERSION = 1.8 VERSION = 2.1
# Customize below to fit your system # Customize below to fit your system

14
dmenu.1
View File

@ -57,30 +57,30 @@ dmenu is completely controlled by the keyboard. The following keys are recognize
Appends the character to the text in the input field. This works as a filter: Appends the character to the text in the input field. This works as a filter:
only items containing this text will be displayed. only items containing this text will be displayed.
.TP .TP
.B Left/Right .B Left/Right (Mod1-h/Mod1-l)
Select the previous/next item. Select the previous/next item.
.TP .TP
.B PageUp/PageDown .B PageUp/PageDown (Mod1-k/Mod1-j)
Select the first item of the previous/next 'page' of items. Select the first item of the previous/next 'page' of items.
.TP .TP
.B Home/End .B Home/End (Mod1-g/Mod1-G)
Select the first/last item. Select the first/last item.
.TP .TP
.B Tab .B Tab (Control-i)
Copy the selected item to the input field. Copy the selected item to the input field.
.TP .TP
.B Return .B Return (Control-j)
Confirm selection and quit (print the selected item to standard output). Returns Confirm selection and quit (print the selected item to standard output). Returns
.B 0 .B 0
on termination. on termination.
.TP .TP
.B Shift-Return .B Shift-Return (Control-Shift-j)
Confirm selection and quit (print the text in the input field to standard output). Confirm selection and quit (print the text in the input field to standard output).
Returns Returns
.B 0 .B 0
on termination. on termination.
.TP .TP
.B Escape .B Escape (Control-bracketleft)
Quit without selecting an item. Returns Quit without selecting an item. Returns
.B 1 .B 1
on termination. on termination.

10
dmenu.h
View File

@ -1,14 +1,14 @@
/* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> /* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
* See LICENSE file for license details. * See LICENSE file for license details.
*/ */
#include <X11/Xlib.h> #include <X11/Xlib.h>
#define FONT "-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*" #define FONT "-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*"
#define NORMBGCOLOR "#333366" #define NORMBGCOLOR "#eeeeee"
#define NORMFGCOLOR "#cccccc" #define NORMFGCOLOR "#222222"
#define SELBGCOLOR "#666699" #define SELBGCOLOR "#006699"
#define SELFGCOLOR "#eeeeee" #define SELFGCOLOR "#ffffff"
#define SPACE 30 /* px */ #define SPACE 30 /* px */
/* color */ /* color */

2
draw.c
View File

@ -1,4 +1,4 @@
/* (C)opyright MMIV-MMVI Anselm R. Garbe <garbeam at gmail dot com> /* (C)opyright MMIV-MMVII Anselm R. Garbe <garbeam at gmail dot com>
* See LICENSE file for license details. * See LICENSE file for license details.
*/ */
#include "dmenu.h" #include "dmenu.h"

42
main.c
View File

@ -1,5 +1,5 @@
/* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> /* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
* (C)opyright MMVI Sander van Dijk <a dot h dot vandijk at gmail dot com> * (C)opyright MMVI-MMVII Sander van Dijk <a dot h dot vandijk at gmail dot com>
* See LICENSE file for license details. * See LICENSE file for license details.
*/ */
#include "dmenu.h" #include "dmenu.h"
@ -15,6 +15,8 @@
#include <X11/Xutil.h> #include <X11/Xutil.h>
#include <X11/keysym.h> #include <X11/keysym.h>
#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask))
typedef struct Item Item; typedef struct Item Item;
struct Item { struct Item {
Item *next; /* traverses all items */ Item *next; /* traverses all items */
@ -26,11 +28,12 @@ struct Item {
static char text[4096]; static char text[4096];
static char *prompt = NULL; static char *prompt = NULL;
static int mx, my, mw, mh; static int mw, mh;
static int ret = 0; static int ret = 0;
static int nitem = 0; static int nitem = 0;
static unsigned int cmdw = 0; static unsigned int cmdw = 0;
static unsigned int promptw = 0; static unsigned int promptw = 0;
static unsigned int numlockmask = 0;
static Bool running = True; static Bool running = True;
static Item *allitems = NULL; /* first of all items */ static Item *allitems = NULL; /* first of all items */
static Item *item = NULL; /* first of pattern matching items */ static Item *item = NULL; /* first of pattern matching items */
@ -164,21 +167,30 @@ kpress(XKeyEvent * e) {
switch (ksym) { switch (ksym) {
default: /* ignore other control sequences */ default: /* ignore other control sequences */
return; return;
case XK_bracketleft:
ksym = XK_Escape;
break; break;
case XK_h: case XK_h:
case XK_H: case XK_H:
ksym = XK_BackSpace; ksym = XK_BackSpace;
break; break;
case XK_i:
case XK_I:
ksym = XK_Tab;
break;
case XK_j:
case XK_J:
ksym = XK_Return;
break;
case XK_u: case XK_u:
case XK_U: case XK_U:
text[0] = 0; text[0] = 0;
match(text); match(text);
drawmenu(); drawmenu();
return; return;
break;
} }
} }
if(e->state & Mod1Mask) { if(CLEANMASK(e->state) & Mod1Mask) {
switch(ksym) { switch(ksym) {
default: return; default: return;
case XK_h: case XK_h:
@ -338,10 +350,11 @@ main(int argc, char *argv[]) {
char *selbg = SELBGCOLOR; char *selbg = SELBGCOLOR;
char *selfg = SELFGCOLOR; char *selfg = SELFGCOLOR;
fd_set rd; fd_set rd;
int i; int i, j;
struct timeval timeout; struct timeval timeout;
Item *itm; Item *itm;
XEvent ev; XEvent ev;
XModifierKeymap *modmap;
XSetWindowAttributes wa; XSetWindowAttributes wa;
timeout.tv_usec = 0; timeout.tv_usec = 0;
@ -373,7 +386,7 @@ main(int argc, char *argv[]) {
if(++i < argc) timeout.tv_sec = atoi(argv[i]); if(++i < argc) timeout.tv_sec = atoi(argv[i]);
} }
else if(!strncmp(argv[i], "-v", 3)) { else if(!strncmp(argv[i], "-v", 3)) {
fputs("dmenu-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout); fputs("dmenu-"VERSION", (C)opyright MMVI-MMVII Anselm R. Garbe\n", stdout);
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }
else else
@ -399,6 +412,15 @@ main(int argc, char *argv[]) {
if(select(ConnectionNumber(dpy) + 1, &rd, NULL, NULL, &timeout) < 1) if(select(ConnectionNumber(dpy) + 1, &rd, NULL, NULL, &timeout) < 1)
goto UninitializedEnd; goto UninitializedEnd;
maxname = readstdin(); maxname = readstdin();
/* init modifier map */
modmap = XGetModifierMapping(dpy);
for (i = 0; i < 8; i++) {
for (j = 0; j < modmap->max_keypermod; j++) {
if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock))
numlockmask = (1 << i);
}
}
XFreeModifiermap(modmap);
/* style */ /* style */
dc.norm[ColBG] = getcolor(normbg); dc.norm[ColBG] = getcolor(normbg);
dc.norm[ColFG] = getcolor(normfg); dc.norm[ColFG] = getcolor(normfg);
@ -409,12 +431,10 @@ main(int argc, char *argv[]) {
wa.override_redirect = 1; wa.override_redirect = 1;
wa.background_pixmap = ParentRelative; wa.background_pixmap = ParentRelative;
wa.event_mask = ExposureMask | ButtonPressMask | KeyPressMask; wa.event_mask = ExposureMask | ButtonPressMask | KeyPressMask;
mx = my = 0;
mw = DisplayWidth(dpy, screen); mw = DisplayWidth(dpy, screen);
mh = dc.font.height + 2; mh = dc.font.height + 2;
if(bottom) win = XCreateWindow(dpy, root, 0,
my += DisplayHeight(dpy, screen) - mh; bottom ? DisplayHeight(dpy, screen) - mh : 0, mw, mh, 0,
win = XCreateWindow(dpy, root, mx, my, mw, mh, 0,
DefaultDepth(dpy, screen), CopyFromParent, DefaultDepth(dpy, screen), CopyFromParent,
DefaultVisual(dpy, screen), DefaultVisual(dpy, screen),
CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);

2
util.c
View File

@ -1,4 +1,4 @@
/* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> /* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
* See LICENSE file for license details. * See LICENSE file for license details.
*/ */
#include "dmenu.h" #include "dmenu.h"