add feature which allows prompt width to be removed from items, with or
without arguments
This commit is contained in:
parent
705cb460bf
commit
b24cf560a1
|
@ -40,10 +40,10 @@ See a list below for a list.
|
||||||
- spmenu -P - Hide characters
|
- spmenu -P - Hide characters
|
||||||
- spmenu -Ps symbol - Set the password symbol to symbol
|
- spmenu -Ps symbol - Set the password symbol to symbol
|
||||||
- spmenu -p text - Set spmenu prompt text to text
|
- spmenu -p text - Set spmenu prompt text to text
|
||||||
|
- spmenu -ip - Indent items to prompt width
|
||||||
|
- spmenu -nip - Don't indent items to prompt width
|
||||||
- spmenu -a - Enable alpha
|
- spmenu -a - Enable alpha
|
||||||
- spmenu -na - Disable alpha
|
- spmenu -na - Disable alpha
|
||||||
- spmenu -cp - Color prompt
|
|
||||||
- spmenu -ncp - Don't color prompt
|
|
||||||
- spmenu -tp - Allow the user to type
|
- spmenu -tp - Allow the user to type
|
||||||
- spmenu -nt - Don't allow typing, the user must select an option
|
- spmenu -nt - Don't allow typing, the user must select an option
|
||||||
- spmenu -x x offset - Offset spmenu x position by x offset
|
- spmenu -x x offset - Offset spmenu x position by x offset
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
! spmenu default configuration in .Xresources format
|
! spmenu default configuration in .Xresources format
|
||||||
|
|
||||||
spmenu.font: Noto Sans Mono 8
|
spmenu.font: Noto Sans Mono 8
|
||||||
spmenu.col_itemnormfg: #bbbbbb
|
spmenu.col_itemnormfg: #bbbbbb
|
||||||
spmenu.col_itemnormbg: #222222
|
spmenu.col_itemnormbg: #222222
|
||||||
|
@ -56,7 +57,6 @@ spmenu.casesensitive: 0
|
||||||
spmenu.menuposition: 1
|
spmenu.menuposition: 1
|
||||||
spmenu.menupaddingv: 0
|
spmenu.menupaddingv: 0
|
||||||
spmenu.menupaddingh: 0
|
spmenu.menupaddingh: 0
|
||||||
spmenu.colorprompt: 1
|
|
||||||
spmenu.preselected: 0
|
spmenu.preselected: 0
|
||||||
spmenu.type: 1
|
spmenu.type: 1
|
||||||
spmenu.class: spmenu
|
spmenu.class: spmenu
|
||||||
|
@ -71,6 +71,7 @@ spmenu.imageposition: 0
|
||||||
spmenu.generatecache: 1
|
spmenu.generatecache: 1
|
||||||
spmenu.mode: 0
|
spmenu.mode: 0
|
||||||
spmenu.fast: 0
|
spmenu.fast: 0
|
||||||
|
spmenu.indentitems: 0
|
||||||
spmenu.hidematchcount: 0
|
spmenu.hidematchcount: 0
|
||||||
spmenu.hidemode: 0
|
spmenu.hidemode: 0
|
||||||
spmenu.hidelarrow: 0
|
spmenu.hidelarrow: 0
|
||||||
|
|
26
libs/argv.c
26
libs/argv.c
|
@ -81,10 +81,6 @@ readargs(int argc, char *argv[])
|
||||||
alpha = 0;
|
alpha = 0;
|
||||||
} else if (!strcmp(argv[i], "-a")) { /* alpha */
|
} else if (!strcmp(argv[i], "-a")) { /* alpha */
|
||||||
alpha = 1;
|
alpha = 1;
|
||||||
} else if (!strcmp(argv[i], "-cp")) { /* color prompt */
|
|
||||||
colorprompt = 1;
|
|
||||||
} else if (!strcmp(argv[i], "-ncp")) { /* no color prompt */
|
|
||||||
colorprompt = 0;
|
|
||||||
} else if (!strcmp(argv[i], "-tp")) { /* allow the user to type */
|
} else if (!strcmp(argv[i], "-tp")) { /* allow the user to type */
|
||||||
type = 1;
|
type = 1;
|
||||||
} else if (!strcmp(argv[i], "-nt")) { /* don't allow the user to type */
|
} else if (!strcmp(argv[i], "-nt")) { /* don't allow the user to type */
|
||||||
|
@ -123,6 +119,10 @@ readargs(int argc, char *argv[])
|
||||||
hideimage = 1;
|
hideimage = 1;
|
||||||
} else if (!strcmp(argv[i], "-si")) { /* don't hide image */
|
} else if (!strcmp(argv[i], "-si")) { /* don't hide image */
|
||||||
hideimage = 0;
|
hideimage = 0;
|
||||||
|
} else if (!strcmp(argv[i], "-ip")) { /* indent to prompt width */
|
||||||
|
indentitems = 1;
|
||||||
|
} else if (!strcmp(argv[i], "-nip")) { /* don't indent to prompt width */
|
||||||
|
indentitems = 0;
|
||||||
} else if (i + 1 == argc)
|
} else if (i + 1 == argc)
|
||||||
fprintf(stderr, "spmenu: Invalid argument: '%s'\n", argv[i]);
|
fprintf(stderr, "spmenu: Invalid argument: '%s'\n", argv[i]);
|
||||||
|
|
||||||
|
@ -201,6 +201,11 @@ readargs(int argc, char *argv[])
|
||||||
if(sscanf(buf, "%dx%d", &imagewidth, &imageheight) == 1)
|
if(sscanf(buf, "%dx%d", &imagewidth, &imageheight) == 1)
|
||||||
imageheight = imagewidth;
|
imageheight = imagewidth;
|
||||||
|
|
||||||
|
} else if (!strcmp(argv[i], "-w")) { /* embedding window id */
|
||||||
|
embed = argv[++i];
|
||||||
|
} else if (!strcmp(argv[i], "-n")) { /* preselected item */
|
||||||
|
preselected = atoi(argv[++i]);
|
||||||
|
|
||||||
/* spmenu colors */
|
/* spmenu colors */
|
||||||
} else if (!strcmp(argv[i], "-nif")) { /* normal item foreground color */
|
} else if (!strcmp(argv[i], "-nif")) { /* normal item foreground color */
|
||||||
colors[SchemeItemNorm][ColFg] = argv[++i];
|
colors[SchemeItemNorm][ColFg] = argv[++i];
|
||||||
|
@ -256,7 +261,8 @@ readargs(int argc, char *argv[])
|
||||||
colors[SchemeRArrow][ColFg] = argv[++i];
|
colors[SchemeRArrow][ColFg] = argv[++i];
|
||||||
} else if (!strcmp(argv[i], "-bc")) { /* border */
|
} else if (!strcmp(argv[i], "-bc")) { /* border */
|
||||||
colors[SchemeBorder][ColBg] = argv[++i];
|
colors[SchemeBorder][ColBg] = argv[++i];
|
||||||
}
|
} else if (!strcmp(argv[i], "-cc")) /* caret color */
|
||||||
|
colors[SchemeCaret][ColFg] = argv[++i];
|
||||||
|
|
||||||
/* sgr colors */
|
/* sgr colors */
|
||||||
else if (!strcmp(argv[i], "-sgr0")) textcolors[0] = argv[++i]; /* sgr color 0 */
|
else if (!strcmp(argv[i], "-sgr0")) textcolors[0] = argv[++i]; /* sgr color 0 */
|
||||||
|
@ -275,12 +281,6 @@ readargs(int argc, char *argv[])
|
||||||
else if (!strcmp(argv[i], "-sgr13")) textcolors[13] = argv[++i]; /* sgr color 13 */
|
else if (!strcmp(argv[i], "-sgr13")) textcolors[13] = argv[++i]; /* sgr color 13 */
|
||||||
else if (!strcmp(argv[i], "-sgr14")) textcolors[14] = argv[++i]; /* sgr color 14 */
|
else if (!strcmp(argv[i], "-sgr14")) textcolors[14] = argv[++i]; /* sgr color 14 */
|
||||||
else if (!strcmp(argv[i], "-sgr15")) textcolors[15] = argv[++i]; /* sgr color 15 */
|
else if (!strcmp(argv[i], "-sgr15")) textcolors[15] = argv[++i]; /* sgr color 15 */
|
||||||
else if (!strcmp(argv[i], "-cc")) /* caret color */
|
|
||||||
colors[SchemeCaret][ColFg] = argv[++i];
|
|
||||||
else if (!strcmp(argv[i], "-w")) /* embedding window id */
|
|
||||||
embed = argv[++i];
|
|
||||||
else if (!strcmp(argv[i], "-n")) /* preselected item */
|
|
||||||
preselected = atoi(argv[++i]);
|
|
||||||
else
|
else
|
||||||
fprintf(stderr, "spmenu: Invalid argument: '%s'\n", argv[i]);
|
fprintf(stderr, "spmenu: Invalid argument: '%s'\n", argv[i]);
|
||||||
}
|
}
|
||||||
|
@ -302,10 +302,10 @@ usage(void)
|
||||||
"spmenu -P Hide characters\n"
|
"spmenu -P Hide characters\n"
|
||||||
"spmenu -Ps <symbol> Set the password symbol to <symbol>\n"
|
"spmenu -Ps <symbol> Set the password symbol to <symbol>\n"
|
||||||
"spmenu -p <text> Set spmenu prompt text to <text>\n"
|
"spmenu -p <text> Set spmenu prompt text to <text>\n"
|
||||||
|
"spmenu -ip Indent items to prompt width\n"
|
||||||
|
"spmenu -nip Don't indent items to prompt width\n"
|
||||||
"spmenu -a Enable alpha\n"
|
"spmenu -a Enable alpha\n"
|
||||||
"spmenu -na Disable alpha\n"
|
"spmenu -na Disable alpha\n"
|
||||||
"spmenu -cp Color prompt\n"
|
|
||||||
"spmenu -ncp Don't color prompt\n"
|
|
||||||
"spmenu -tp Allow the user to type\n"
|
"spmenu -tp Allow the user to type\n"
|
||||||
"spmenu -nt Don't allow typing, the user must select an option\n"
|
"spmenu -nt Don't allow typing, the user must select an option\n"
|
||||||
"spmenu -x <x offset> Offset spmenu x position by <x offset>\n"
|
"spmenu -x <x offset> Offset spmenu x position by <x offset>\n"
|
||||||
|
|
23
libs/draw.c
23
libs/draw.c
|
@ -168,9 +168,7 @@ drawmenu(void)
|
||||||
if (!hiderarrow) rarrowWidth = pango_rightarrow ? TEXTWM(rightarrow) : TEXTW(rightarrow);
|
if (!hiderarrow) rarrowWidth = pango_rightarrow ? TEXTWM(rightarrow) : TEXTW(rightarrow);
|
||||||
|
|
||||||
if (prompt && *prompt) {
|
if (prompt && *prompt) {
|
||||||
if (colorprompt) {
|
drw_setscheme(drw, scheme[SchemePrompt]);
|
||||||
drw_setscheme(drw, scheme[SchemePrompt]);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if USEIMAGE
|
#if USEIMAGE
|
||||||
ox = x;
|
ox = x;
|
||||||
|
@ -208,24 +206,31 @@ drawmenu(void)
|
||||||
numberWidth = TEXTW(numbers);
|
numberWidth = TEXTW(numbers);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* draw stuff */
|
// draw items and image
|
||||||
if (lines > 0) {
|
if (lines > 0) {
|
||||||
|
int i = 0;
|
||||||
|
int xpad = 0;
|
||||||
|
|
||||||
/* draw image first */
|
// indent items to prompt width?
|
||||||
|
if (indentitems) {
|
||||||
|
xpad = 0; // x -= 0
|
||||||
|
} else {
|
||||||
|
xpad = promptw; // x -= prompt width so no indentation to prompt width
|
||||||
|
}
|
||||||
|
|
||||||
|
// draw image first
|
||||||
#if USEIMAGE
|
#if USEIMAGE
|
||||||
if (!hideimage && longestedge != 0) {
|
if (!hideimage && longestedge != 0) {
|
||||||
x = ox;
|
x = ox;
|
||||||
x += (imagegaps * 2) + imagewidth;
|
x += (imagegaps * 2) + imagewidth;
|
||||||
|
x += xpad;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* draw grid */
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
for (item = curr; item != next; item = item->right, i++)
|
for (item = curr; item != next; item = item->right, i++)
|
||||||
drawitem(
|
drawitem(
|
||||||
item,
|
item,
|
||||||
x + ((i / lines) * ((mw - x) / columns)),
|
x + ((i / lines) * ((mw - x) / columns)) - xpad,
|
||||||
y + (((i % lines) + 1) * bh),
|
y + (((i % lines) + 1) * bh),
|
||||||
(mw - x) / columns
|
(mw - x) / columns
|
||||||
);
|
);
|
||||||
|
|
|
@ -100,12 +100,11 @@ ResourcePref resources[] = {
|
||||||
{ "menuposition", INTEGER, &menuposition },
|
{ "menuposition", INTEGER, &menuposition },
|
||||||
{ "menupaddingv", INTEGER, &menupaddingv },
|
{ "menupaddingv", INTEGER, &menupaddingv },
|
||||||
{ "menupaddingh", INTEGER, &menupaddingh },
|
{ "menupaddingh", INTEGER, &menupaddingh },
|
||||||
|
{ "indentitems", INTEGER, &indentitems },
|
||||||
{ "accuratewidth", INTEGER, &accuratewidth },
|
{ "accuratewidth", INTEGER, &accuratewidth },
|
||||||
{ "alpha", INTEGER, &alpha },
|
{ "alpha", INTEGER, &alpha },
|
||||||
{ "type", INTEGER, &type },
|
{ "type", INTEGER, &type },
|
||||||
{ "preselected", INTEGER, &preselected },
|
{ "preselected", INTEGER, &preselected },
|
||||||
{ "colorprompt", INTEGER, &colorprompt },
|
|
||||||
{ "password", STRING, &password },
|
{ "password", STRING, &password },
|
||||||
{ "prompt", STRING, &prompt },
|
{ "prompt", STRING, &prompt },
|
||||||
{ "class", STRING, &class },
|
{ "class", STRING, &class },
|
||||||
|
|
|
@ -61,7 +61,7 @@ static unsigned int maxhist = 64; /* Max number of history entries */
|
||||||
static int histnodup = 1; /* If 0, record repeated histories */
|
static int histnodup = 1; /* If 0, record repeated histories */
|
||||||
|
|
||||||
/* Prompt options */
|
/* Prompt options */
|
||||||
static int colorprompt = 1; /* Color prompt (0/1) */
|
static int indentitems = 0; /* Indent items to prompt width? (0/1) */
|
||||||
static char *prompt = NULL; /* Default prompt, set to NULL (nothing) */
|
static char *prompt = NULL; /* Default prompt, set to NULL (nothing) */
|
||||||
|
|
||||||
/* Hide options */
|
/* Hide options */
|
||||||
|
|
8
spmenu.1
8
spmenu.1
|
@ -72,14 +72,14 @@ spmenu -Ps symbol - Set the password symbol to symbol
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
spmenu -p text - Set spmenu prompt text to text
|
spmenu -p text - Set spmenu prompt text to text
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
|
spmenu -ip - Indent items to prompt width
|
||||||
|
.IP \[bu] 2
|
||||||
|
spmenu -nip - Don\[cq]t indent items to prompt width
|
||||||
|
.IP \[bu] 2
|
||||||
spmenu -a - Enable alpha
|
spmenu -a - Enable alpha
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
spmenu -na - Disable alpha
|
spmenu -na - Disable alpha
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
spmenu -cp - Color prompt
|
|
||||||
.IP \[bu] 2
|
|
||||||
spmenu -ncp - Don\[cq]t color prompt
|
|
||||||
.IP \[bu] 2
|
|
||||||
spmenu -tp - Allow the user to type
|
spmenu -tp - Allow the user to type
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
spmenu -nt - Don\[cq]t allow typing, the user must select an option
|
spmenu -nt - Don\[cq]t allow typing, the user must select an option
|
||||||
|
|
Loading…
Reference in a new issue