From efb130bd981be8a068d1d007dba16216080b29c0 Mon Sep 17 00:00:00 2001 From: randy Date: Sun, 8 Sep 2024 08:15:42 +0800 Subject: [PATCH] feat(patches): add date patch --- dmenu.c | 20 ++++++++++++- patches/dmenu-date-5.2.diff | 57 +++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 patches/dmenu-date-5.2.diff diff --git a/dmenu.c b/dmenu.c index 656bf84..81e99c8 100644 --- a/dmenu.c +++ b/dmenu.c @@ -83,7 +83,7 @@ calcoffsets(void) int i, n; if (lines > 0) - n = lines * bh; + n = (lines * bh) - 1; else n = mw - (promptw + inputw + TEXTW("<") + TEXTW(">")); /* calculate which items will begin the next page and previous page */ @@ -151,6 +151,22 @@ drawitem(struct item *item, int x, int y, int w) return drw_text(drw, x, y, w, bh, lrpad / 2, item->text, 0); } +static int +drawdate(int x, int y, int w) +{ + char date[128]; + time_t t = time(NULL); + struct tm *tm = localtime(&t); + + /* Hour:Minute DayOfTheWeek DayOfTheMonth Month Year */ + strftime(date, sizeof(date), "%H:%M %A %d %B %Y", tm); + + drw_setscheme(drw, scheme[SchemeSel]); + + int r = drw_text(drw, x, y, w, bh, lrpad / 2, date, 0); + return r; +} + static void drawmenu(void) { @@ -180,6 +196,8 @@ drawmenu(void) /* draw vertical list */ for (item = curr; item != next; item = item->right) drawitem(item, x, y += bh, mw - x); + + drawdate(x, lines * bh, w); } else if (matches) { /* draw horizontal list */ x += inputw; diff --git a/patches/dmenu-date-5.2.diff b/patches/dmenu-date-5.2.diff new file mode 100644 index 0000000..a46db90 --- /dev/null +++ b/patches/dmenu-date-5.2.diff @@ -0,0 +1,57 @@ +From 64fb38e3778addc0272eb8793deb909e639e5746 Mon Sep 17 00:00:00 2001 +From: piotr-marendowski +Date: Thu, 6 Jul 2023 10:03:03 +0000 +Subject: [PATCH] Displays date and time at the bottom of the vertical layout. + +--- + dmenu.c | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +diff --git a/dmenu.c b/dmenu.c +index 7cf253b..5428f67 100644 +--- a/dmenu.c ++++ b/dmenu.c +@@ -84,7 +84,7 @@ calcoffsets(void) + int i, n; + + if (lines > 0) +- n = lines * bh; ++ n = (lines * bh) - 1; + else + n = mw - (promptw + inputw + TEXTW("<") + TEXTW(">")); + /* calculate which items will begin the next page and previous page */ +@@ -143,6 +143,22 @@ drawitem(struct item *item, int x, int y, int w) + return drw_text(drw, x, y, w, bh, lrpad / 2, item->text, 0); + } + ++static int ++drawdate(int x, int y, int w) ++{ ++ char date[128]; ++ time_t t = time(NULL); ++ struct tm *tm = localtime(&t); ++ ++ /* Hour:Minute DayOfTheWeek DayOfTheMonth Month Year */ ++ strftime(date, sizeof(date), "%H:%M %A %d %B %Y", tm); ++ ++ drw_setscheme(drw, scheme[SchemeSel]); ++ ++ int r = drw_text(drw, x, y, w, bh, lrpad / 2, date, 0); ++ return r; ++} ++ + static void + drawmenu(void) + { +@@ -172,6 +188,8 @@ drawmenu(void) + /* draw vertical list */ + for (item = curr; item != next; item = item->right) + drawitem(item, x, y += bh, mw - x); ++ ++ drawdate(x, lines * bh, w); + } else if (matches) { + /* draw horizontal list */ + x += inputw; +-- +2.41.0 +