Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
c69f397bb9 | |||
b9fbd59c8a | |||
da2b90ddd1 | |||
dd7ee0dae1 | |||
250aa199bb | |||
5d43e9243c | |||
1026eb8308 | |||
c65fdd6252 | |||
8c20e5dbd3 | |||
26fbf124fa |
2
.hgtags
2
.hgtags
@ -11,3 +11,5 @@ d046c818ea467555cc338751c9bf3024609f1f12 0.9
|
|||||||
e8c1e9733752db12f2dbd1fa93c46f5806242ba9 1.1
|
e8c1e9733752db12f2dbd1fa93c46f5806242ba9 1.1
|
||||||
bee7fe6d1189174d0204ca3195b83cdc1bb4f82e 1.2
|
bee7fe6d1189174d0204ca3195b83cdc1bb4f82e 1.2
|
||||||
2eb9997be51cb1b11a8900728ccc0904f9371157 1.3
|
2eb9997be51cb1b11a8900728ccc0904f9371157 1.3
|
||||||
|
df3fbb050004c544d14e43c36f6a94cca6ed4a69 1.4
|
||||||
|
e071fb045bd9e8574947acff7196360bc0270e68 1.5
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# dmenu version
|
# dmenu version
|
||||||
VERSION = 1.4
|
VERSION = 1.6
|
||||||
|
|
||||||
# Customize below to fit your system
|
# Customize below to fit your system
|
||||||
|
|
||||||
|
3
dmenu.h
3
dmenu.h
@ -3,9 +3,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xlocale.h>
|
|
||||||
|
|
||||||
#define FONT "fixed"
|
#define FONT "-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*"
|
||||||
#define NORMBGCOLOR "#333366"
|
#define NORMBGCOLOR "#333366"
|
||||||
#define NORMFGCOLOR "#cccccc"
|
#define NORMFGCOLOR "#cccccc"
|
||||||
#define SELBGCOLOR "#666699"
|
#define SELBGCOLOR "#666699"
|
||||||
|
15
draw.c
15
draw.c
@ -4,7 +4,6 @@
|
|||||||
#include "dmenu.h"
|
#include "dmenu.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <X11/Xlocale.h>
|
|
||||||
|
|
||||||
/* static */
|
/* static */
|
||||||
|
|
||||||
@ -35,8 +34,8 @@ drawtext(const char *text, unsigned long col[ColLast]) {
|
|||||||
return;
|
return;
|
||||||
w = 0;
|
w = 0;
|
||||||
olen = len = strlen(text);
|
olen = len = strlen(text);
|
||||||
if(len >= sizeof(buf))
|
if(len >= sizeof buf)
|
||||||
len = sizeof(buf) - 1;
|
len = sizeof buf - 1;
|
||||||
memcpy(buf, text, len);
|
memcpy(buf, text, len);
|
||||||
buf[len] = 0;
|
buf[len] = 0;
|
||||||
h = dc.font.ascent + dc.font.descent;
|
h = dc.font.ascent + dc.font.descent;
|
||||||
@ -80,21 +79,15 @@ getcolor(const char *colstr) {
|
|||||||
|
|
||||||
void
|
void
|
||||||
setfont(const char *fontstr) {
|
setfont(const char *fontstr) {
|
||||||
char **missing, *def;
|
char *def, **missing;
|
||||||
int i, n;
|
int i, n;
|
||||||
|
|
||||||
missing = NULL;
|
missing = NULL;
|
||||||
setlocale(LC_ALL, "");
|
|
||||||
if(dc.font.set)
|
if(dc.font.set)
|
||||||
XFreeFontSet(dpy, dc.font.set);
|
XFreeFontSet(dpy, dc.font.set);
|
||||||
dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def);
|
dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def);
|
||||||
if(missing) {
|
if(missing)
|
||||||
XFreeStringList(missing);
|
XFreeStringList(missing);
|
||||||
if(dc.font.set) {
|
|
||||||
XFreeFontSet(dpy, dc.font.set);
|
|
||||||
dc.font.set = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(dc.font.set) {
|
if(dc.font.set) {
|
||||||
XFontSetExtents *font_extents;
|
XFontSetExtents *font_extents;
|
||||||
XFontStruct **xfonts;
|
XFontStruct **xfonts;
|
||||||
|
12
main.c
12
main.c
@ -5,6 +5,7 @@
|
|||||||
#include "dmenu.h"
|
#include "dmenu.h"
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <locale.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -144,7 +145,7 @@ kpress(XKeyEvent * e) {
|
|||||||
|
|
||||||
len = strlen(text);
|
len = strlen(text);
|
||||||
buf[0] = 0;
|
buf[0] = 0;
|
||||||
num = XLookupString(e, buf, sizeof(buf), &ksym, 0);
|
num = XLookupString(e, buf, sizeof buf, &ksym, 0);
|
||||||
if(IsFunctionKey(ksym) || IsKeypadKey(ksym)
|
if(IsFunctionKey(ksym) || IsKeypadKey(ksym)
|
||||||
|| IsMiscFunctionKey(ksym) || IsPFKey(ksym)
|
|| IsMiscFunctionKey(ksym) || IsPFKey(ksym)
|
||||||
|| IsPrivateKeypadKey(ksym))
|
|| IsPrivateKeypadKey(ksym))
|
||||||
@ -181,7 +182,7 @@ kpress(XKeyEvent * e) {
|
|||||||
case XK_Tab:
|
case XK_Tab:
|
||||||
if(!sel)
|
if(!sel)
|
||||||
return;
|
return;
|
||||||
strncpy(text, sel->text, sizeof(text));
|
strncpy(text, sel->text, sizeof text);
|
||||||
match(text);
|
match(text);
|
||||||
break;
|
break;
|
||||||
case XK_Right:
|
case XK_Right:
|
||||||
@ -221,9 +222,9 @@ kpress(XKeyEvent * e) {
|
|||||||
if(num && !iscntrl((int) buf[0])) {
|
if(num && !iscntrl((int) buf[0])) {
|
||||||
buf[num] = 0;
|
buf[num] = 0;
|
||||||
if(len > 0)
|
if(len > 0)
|
||||||
strncat(text, buf, sizeof(text));
|
strncat(text, buf, sizeof text);
|
||||||
else
|
else
|
||||||
strncpy(text, buf, sizeof(text));
|
strncpy(text, buf, sizeof text);
|
||||||
match(text);
|
match(text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -238,7 +239,7 @@ readstdin(void) {
|
|||||||
Item *i, *new;
|
Item *i, *new;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while(fgets(buf, sizeof(buf), stdin)) {
|
while(fgets(buf, sizeof buf, stdin)) {
|
||||||
len = strlen(buf);
|
len = strlen(buf);
|
||||||
if (buf[len - 1] == '\n')
|
if (buf[len - 1] == '\n')
|
||||||
buf[len - 1] = 0;
|
buf[len - 1] = 0;
|
||||||
@ -309,6 +310,7 @@ main(int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
eprint("usage: dmenu [-font <name>] [-{norm,sel}{bg,fg} <color>] [-t <seconds>] [-v]\n", stdout);
|
eprint("usage: dmenu [-font <name>] [-{norm,sel}{bg,fg} <color>] [-t <seconds>] [-v]\n", stdout);
|
||||||
|
setlocale(LC_CTYPE, "");
|
||||||
dpy = XOpenDisplay(0);
|
dpy = XOpenDisplay(0);
|
||||||
if(!dpy)
|
if(!dpy)
|
||||||
eprint("dmenu: cannot open display\n");
|
eprint("dmenu: cannot open display\n");
|
||||||
|
Reference in New Issue
Block a user