mirror of
https://git.suckless.org/dmenu
synced 2026-06-06 10:45:45 +02:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7175c4880b | ||
|
|
8b48986f4c | ||
|
|
77f96d704b |
10
dmenu.1
10
dmenu.1
@@ -20,6 +20,10 @@ dmenu \- dynamic menu
|
||||
.IR color ]
|
||||
.RB [ \-sf
|
||||
.IR color ]
|
||||
.RB [ \-ob
|
||||
.IR color ]
|
||||
.RB [ \-of
|
||||
.IR color ]
|
||||
.RB [ \-w
|
||||
.IR windowid ]
|
||||
.P
|
||||
@@ -75,6 +79,12 @@ defines the selected background color.
|
||||
.BI \-sf " color"
|
||||
defines the selected foreground color.
|
||||
.TP
|
||||
.BI \-ob " color"
|
||||
defines the outline background color (for multiple selection).
|
||||
.TP
|
||||
.BI \-of " color"
|
||||
defines the outline foreground color (for multiple selection).
|
||||
.TP
|
||||
.B \-v
|
||||
prints version information to stdout, then exits.
|
||||
.TP
|
||||
|
||||
6
dmenu.c
6
dmenu.c
@@ -102,7 +102,7 @@ cleanup(void)
|
||||
|
||||
XUngrabKeyboard(dpy, CurrentTime);
|
||||
for (i = 0; i < SchemeLast; i++)
|
||||
free(scheme[i]);
|
||||
drw_scm_free(drw, scheme[i], 2);
|
||||
for (i = 0; items && items[i].text; ++i)
|
||||
free(items[i].text);
|
||||
free(items);
|
||||
@@ -755,6 +755,10 @@ main(int argc, char *argv[])
|
||||
colors[SchemeSel][ColBg] = argv[++i];
|
||||
else if (!strcmp(argv[i], "-sf")) /* selected foreground color */
|
||||
colors[SchemeSel][ColFg] = argv[++i];
|
||||
else if (!strcmp(argv[i], "-ob")) /* outline background color */
|
||||
colors[SchemeOut][ColBg] = argv[++i];
|
||||
else if (!strcmp(argv[i], "-of")) /* outline foreground color */
|
||||
colors[SchemeOut][ColFg] = argv[++i];
|
||||
else if (!strcmp(argv[i], "-w")) /* embedding window id */
|
||||
embed = argv[++i];
|
||||
else
|
||||
|
||||
29
drw.c
29
drw.c
@@ -178,8 +178,7 @@ drw_clr_create(Drw *drw, Clr *dest, const char *clrname)
|
||||
die("error, cannot allocate color '%s'", clrname);
|
||||
}
|
||||
|
||||
/* Wrapper to create color schemes. The caller has to call free(3) on the
|
||||
* returned color scheme when done using it. */
|
||||
/* Create color schemes. */
|
||||
Clr *
|
||||
drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount)
|
||||
{
|
||||
@@ -187,7 +186,7 @@ drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount)
|
||||
Clr *ret;
|
||||
|
||||
/* need at least two colors for a scheme */
|
||||
if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor))))
|
||||
if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(Clr))))
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < clrcount; i++)
|
||||
@@ -195,6 +194,30 @@ drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void
|
||||
drw_clr_free(Drw *drw, Clr *c)
|
||||
{
|
||||
if (!drw || !c)
|
||||
return;
|
||||
|
||||
/* c is typedef XftColor Clr */
|
||||
XftColorFree(drw->dpy, DefaultVisual(drw->dpy, drw->screen),
|
||||
DefaultColormap(drw->dpy, drw->screen), c);
|
||||
}
|
||||
|
||||
void
|
||||
drw_scm_free(Drw *drw, Clr *scm, size_t clrcount)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
if (!drw || !scm)
|
||||
return;
|
||||
|
||||
for (i = 0; i < clrcount; i++)
|
||||
drw_clr_free(drw, &scm[i]);
|
||||
free(scm);
|
||||
}
|
||||
|
||||
void
|
||||
drw_setfontset(Drw *drw, Fnt *set)
|
||||
{
|
||||
|
||||
2
drw.h
2
drw.h
@@ -40,7 +40,9 @@ void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned in
|
||||
|
||||
/* Colorscheme abstraction */
|
||||
void drw_clr_create(Drw *drw, Clr *dest, const char *clrname);
|
||||
void drw_clr_free(Drw *drw, Clr *c);
|
||||
Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount);
|
||||
void drw_scm_free(Drw *drw, Clr *scm, size_t clrcount);
|
||||
|
||||
/* Cursor abstraction */
|
||||
Cur *drw_cur_create(Drw *drw, int shape);
|
||||
|
||||
Reference in New Issue
Block a user