summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2023-03-23 17:56:45 +0100
committerNathan Reiner <nathan@nathanreiner.xyz>2023-03-23 17:56:45 +0100
commit1588062e0df5f280ad5d2411a9dca4ff337001de (patch)
tree497bf747ccf927e81e800b44c9ab33077709732f
parent72458b53a52566689d7094c69ffa2f9d6cfd4519 (diff)
add prompt
-rw-r--r--dmenu-wl.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/dmenu-wl.c b/dmenu-wl.c
index 0280c84..f8ade0a 100644
--- a/dmenu-wl.c
+++ b/dmenu-wl.c
@@ -145,6 +145,7 @@ Monitor *active_monitor = 0;
uint32_t height = 50;
uint32_t numitems = 0;
char input_field[MAX_LINE_LENGTH] = "";
+char *prompt = 0;
int running = 1;
#include "config.h"
@@ -251,8 +252,16 @@ draw_dmenu(Monitor *monitor)
monitor->width - 2 * borderwidth, height - 2 * borderwidth, background);
draw_rect(monitor->canvas, 0, fontsize + borderwidth + 2 * padding,
monitor->width, borderwidth, highlight);
+
+ if (prompt) {
+ x = font_width(monitor->font, prompt) + padding + borderwidth;
+ draw_rect(monitor->canvas, 0, 0, x + padding, fontsize + 2 * padding + borderwidth, highlight);
+ draw_font(monitor->canvas, monitor->font, prompt, padding + borderwidth,
+ borderwidth + fontsize + padding, foreground);
+ }
+
x = draw_font(monitor->canvas, monitor->font, input_field,
- padding + borderwidth, borderwidth + fontsize + padding, foreground);
+ x + padding + borderwidth, borderwidth + fontsize + padding, foreground);
draw_rect(monitor->canvas, x + cursor_horizontal_offset,
borderwidth + padding - cursor_vertical_offset, cursor_width,
fontsize + 2 * cursor_vertical_offset, foreground);
@@ -588,6 +597,15 @@ main(int argc, char *argv[])
{
struct itimerspec spec = { 0 };
struct pollfd fds[2];
+ char **arg;
+
+ for (arg = argv; *arg; ++arg) {
+ if (strcmp(*arg, "-p") == 0) {
+ prompt = *(++arg);
+ } else if (strcmp(*arg, "-h") == 0) {
+ fprintf(stderr, "dmenu-wl [-p PROMPT]\n");
+ }
+ }
readstdin();
setup();