mirror of
https://codeberg.org/dwl/dwl-patches.git
synced 2026-06-11 10:23:19 +00:00
bar: 2024-06-26
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
From 1589ba9e16216e13dcc77e08b638f86ba41d47eb Mon Sep 17 00:00:00 2001
|
||||
From 7fbc305cacfba68568caed79b73603dae5389328 Mon Sep 17 00:00:00 2001
|
||||
From: sewn <sewn@disroot.org>
|
||||
Date: Mon, 10 Jun 2024 14:59:12 +0300
|
||||
Subject: [PATCH] add border to bar
|
||||
|
||||
---
|
||||
config.def.h | 3 ++-
|
||||
dwl.c | 27 ++++++++++++++++-----------
|
||||
2 files changed, 18 insertions(+), 12 deletions(-)
|
||||
dwl.c | 31 +++++++++++++++++++------------
|
||||
2 files changed, 21 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/config.def.h b/config.def.h
|
||||
index d0bb5bc..9387dea 100644
|
||||
index 6024b7e..86c07d6 100644
|
||||
--- a/config.def.h
|
||||
+++ b/config.def.h
|
||||
@@ -6,7 +6,7 @@
|
||||
@@ -18,111 +18,115 @@ index d0bb5bc..9387dea 100644
|
||||
static const int bypass_surface_visibility = 0; /* 1 means idle inhibitors will disable idle tracking even if it's surface isn't visible */
|
||||
-static const unsigned int borderpx = 1; /* border pixel of windows */
|
||||
+static const unsigned int borderpx = 1; /* border pixel of windows & bar */
|
||||
static const float rootcolor[] = COLOR(0x000000ff);
|
||||
static const float bordercolor[] = COLOR(0x444444ff);
|
||||
static const float focuscolor[] = COLOR(0x005577ff);
|
||||
@@ -18,6 +18,7 @@ static const float fullscreen_bg[] = {0.1f, 0.1f, 0.1f, 1.0f}; /* You ca
|
||||
static const int showbar = 1; /* 0 means no bar */
|
||||
static const int topbar = 1; /* 0 means bottom bar */
|
||||
static const char *fonts[] = {"monospace:size=10"};
|
||||
+static pixman_color_t borderbar = { 0x5555, 0x7777, 0x0000, 0xffff };
|
||||
static pixman_color_t normbarfg = { 0xbbbb, 0xbbbb, 0xbbbb, 0xffff };
|
||||
static pixman_color_t normbarbg = { 0x2222, 0x2222, 0x2222, 0xffff };
|
||||
static pixman_color_t selbarfg = { 0xeeee, 0xeeee, 0xeeee, 0xffff };
|
||||
static const int showbar = 1; /* 0 means no bar */
|
||||
static const int topbar = 1; /* 0 means bottom bar */
|
||||
static const char *fonts[] = {"monospace:size=10"};
|
||||
@@ -18,6 +18,7 @@ static uint32_t colors[][3] = {
|
||||
[SchemeNorm] = { 0xbbbbbbff, 0x222222ff, 0x444444ff },
|
||||
[SchemeSel] = { 0xeeeeeeff, 0x005577ff, 0x005577ff },
|
||||
[SchemeUrg] = { 0, 0, 0x770000ff },
|
||||
+ [SchemeBar] = { 0, 0, 0x557700ff },
|
||||
};
|
||||
|
||||
/* tagging - TAGCOUNT must be no greater than 31 */
|
||||
diff --git a/dwl.c b/dwl.c
|
||||
index cd484bd..679409f 100644
|
||||
index 72b4abb..1f40d5e 100644
|
||||
--- a/dwl.c
|
||||
+++ b/dwl.c
|
||||
@@ -1349,7 +1349,8 @@ dirtomon(enum wlr_direction dir)
|
||||
@@ -85,7 +85,7 @@
|
||||
#define TEXTW(mon, text) (drwl_font_getwidth(mon->drw, text) + mon->lrpad)
|
||||
|
||||
/* enums */
|
||||
-enum { SchemeNorm, SchemeSel, SchemeUrg }; /* color schemes */
|
||||
+enum { SchemeNorm, SchemeSel, SchemeUrg, SchemeBar }; /* color schemes */
|
||||
enum { CurNormal, CurPressed, CurMove, CurResize }; /* cursor */
|
||||
enum { XDGShell, LayerShell, X11 }; /* client types */
|
||||
enum { LyrBg, LyrBottom, LyrTile, LyrFloat, LyrTop, LyrFS, LyrOverlay, LyrBlock, NUM_LAYERS }; /* scene layers */
|
||||
@@ -1426,7 +1426,8 @@ dirtomon(enum wlr_direction dir)
|
||||
void
|
||||
drawbar(Monitor *m)
|
||||
{
|
||||
- int x, w, tw = 0;
|
||||
+ int x, y = borderpx, w, tw = 0;
|
||||
+ int mh, mw;
|
||||
int sel;
|
||||
int boxs = m->font->height / 9;
|
||||
int boxw = m->font->height / 6 + 2;
|
||||
@@ -1362,6 +1363,8 @@ drawbar(Monitor *m)
|
||||
int boxs = m->drw->font->height / 9;
|
||||
int boxw = m->drw->font->height / 6 + 2;
|
||||
uint32_t i, occ = 0, urg = 0;
|
||||
@@ -1437,6 +1438,8 @@ drawbar(Monitor *m)
|
||||
if (!m->showbar)
|
||||
return;
|
||||
|
||||
+ mh = m->b.height - borderpx * 2;
|
||||
+ mw = m->b.width - borderpx * 2;
|
||||
stride = m->b.width * 4;
|
||||
stride = drwl_stride(m->b.width);
|
||||
size = stride * m->b.height;
|
||||
|
||||
@@ -1372,12 +1375,14 @@ drawbar(Monitor *m)
|
||||
pix = pixman_image_create_bits(
|
||||
PIXMAN_a8r8g8b8, m->b.width, m->b.height, buf->data, stride);
|
||||
@@ -1446,11 +1449,15 @@ drawbar(Monitor *m)
|
||||
|
||||
+ drwl_rect(pix, 0, 0, m->b.width, m->b.height, 1, &borderbar);
|
||||
drwl_prepare_drawing(m->drw, m->b.width, m->b.height, buf->data, stride);
|
||||
|
||||
+ drwl_setscheme(m->drw, colors[SchemeBar]);
|
||||
+ drwl_rect(m->drw, 0, 0, m->b.width, m->b.height, 1, 1);
|
||||
+ drwl_setscheme(m->drw, colors[SchemeNorm]);
|
||||
+
|
||||
/* draw status first so it can be overdrawn by tags later */
|
||||
if (m == selmon) {
|
||||
if (stext[0] == '\0')
|
||||
strncpy(stext, "dwl-"VERSION, sizeof(stext));
|
||||
tw = TEXTW(m, stext) - m->lrpad;
|
||||
- drwl_text(pix, m->font, m->b.width - tw, 0, tw, m->b.height, 0,
|
||||
+ drwl_text(pix, m->font, borderpx + mw - tw, y, tw, mh, 0,
|
||||
stext, &normbarfg, &normbarbg);
|
||||
if (m == selmon) { /* status is only drawn on selected monitor */
|
||||
drwl_setscheme(m->drw, colors[SchemeNorm]);
|
||||
tw = TEXTW(m, stext) - m->lrpad + 2; /* 2px right padding */
|
||||
- drwl_text(m->drw, m->b.width - tw, 0, tw, m->b.height, 0, stext, 0);
|
||||
+ drwl_text(m->drw, borderpx + mw - tw, y, tw, mh, 0, stext, 0);
|
||||
}
|
||||
|
||||
@@ -1388,37 +1393,37 @@ drawbar(Monitor *m)
|
||||
wl_list_for_each(c, &clients, link) {
|
||||
@@ -1460,31 +1467,31 @@ drawbar(Monitor *m)
|
||||
if (c->isurgent)
|
||||
urg |= c->tags;
|
||||
}
|
||||
- x = 0;
|
||||
+ x = borderpx;
|
||||
c = focustop(m);
|
||||
for (i = 0; i < LENGTH(tags); i++) {
|
||||
w = TEXTW(m, tags[i]);
|
||||
sel = m->tagset[m->seltags] & 1 << i;
|
||||
|
||||
- drwl_text(pix, m->font, x, 0, w, m->b.height, m->lrpad / 2, tags[i],
|
||||
+ drwl_text(pix, m->font, x, y, w, mh, m->lrpad / 2, tags[i],
|
||||
urg & 1 << i ? &selbarbg : (sel ? &selbarfg : &normbarfg),
|
||||
urg & 1 << i ? &selbarfg : (sel ? &selbarbg : &normbarbg));
|
||||
|
||||
drwl_setscheme(m->drw, colors[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]);
|
||||
- drwl_text(m->drw, x, 0, w, m->b.height, m->lrpad / 2, tags[i], urg & 1 << i);
|
||||
+ drwl_text(m->drw, x, y, w, mh, m->lrpad / 2, tags[i], urg & 1 << i);
|
||||
if (occ & 1 << i)
|
||||
- drwl_rect(pix, x + boxs, boxs, boxw, boxw, sel,
|
||||
+ drwl_rect(pix, x + boxs, y + boxs, boxw, boxw, sel,
|
||||
urg & 1 << i ? &selbarbg : (sel ? &selbarfg : &normbarfg));
|
||||
|
||||
- drwl_rect(m->drw, x + boxs, boxs, boxw, boxw,
|
||||
+ drwl_rect(m->drw, x + boxs, y + boxs, boxw, boxw,
|
||||
m == selmon && c && c->tags & 1 << i,
|
||||
urg & 1 << i);
|
||||
x += w;
|
||||
}
|
||||
|
||||
w = TEXTW(m, m->ltsymbol);
|
||||
- x = drwl_text(pix, m->font, x, 0, w, m->b.height, m->lrpad / 2,
|
||||
+ x = drwl_text(pix, m->font, x, y, w, mh, m->lrpad / 2,
|
||||
m->ltsymbol, &normbarfg, &normbarbg);
|
||||
drwl_setscheme(m->drw, colors[SchemeNorm]);
|
||||
- x = drwl_text(m->drw, x, 0, w, m->b.height, m->lrpad / 2, m->ltsymbol, 0);
|
||||
+ x = drwl_text(m->drw, x, y, w, mh, m->lrpad / 2, m->ltsymbol, 0);
|
||||
|
||||
- if ((w = m->b.width - tw - x) > m->b.height) {
|
||||
+ if ((w = mw - tw - x + borderpx) > mh) {
|
||||
if ((c = focustop(m)) != NULL) {
|
||||
- drwl_text(pix, m->font, x, 0, w, m->b.height, m->lrpad / 2,
|
||||
+ drwl_text(pix, m->font, x, y, w, mh, m->lrpad / 2,
|
||||
client_get_title(c),
|
||||
m == selmon ? &selbarfg : &normbarfg,
|
||||
(m == selmon && c) ? &selbarbg : &normbarbg);
|
||||
if (c) {
|
||||
drwl_setscheme(m->drw, colors[m == selmon ? SchemeSel : SchemeNorm]);
|
||||
- drwl_text(m->drw, x, 0, w, m->b.height, m->lrpad / 2, client_get_title(c), 0);
|
||||
+ drwl_text(m->drw, x, y, w, mh, m->lrpad / 2, client_get_title(c), 0);
|
||||
if (c && c->isfloating)
|
||||
- drwl_rect(pix, x + boxs, boxs, boxw, boxw, 0,
|
||||
+ drwl_rect(pix, x + boxs, y + boxs, boxw, boxw, 0,
|
||||
m == selmon ? &selbarfg : &normbarfg);
|
||||
} else
|
||||
- drwl_rect(pix, x, 0, w, m->b.height, 1, &normbarbg);
|
||||
+ drwl_rect(pix, x, y, w, mh, 1, &normbarbg);
|
||||
- drwl_rect(m->drw, x + boxs, boxs, boxw, boxw, 0, 0);
|
||||
+ drwl_rect(m->drw, x + boxs, y + boxs, boxw, boxw, 0, 0);
|
||||
} else {
|
||||
drwl_setscheme(m->drw, colors[SchemeNorm]);
|
||||
- drwl_rect(m->drw, x, 0, w, m->b.height, 1, 1);
|
||||
+ drwl_rect(m->drw, x, y, w, mh, 1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
pixman_image_unref(pix);
|
||||
@@ -3020,7 +3025,7 @@ updatebar(Monitor *m)
|
||||
@@ -3080,7 +3087,7 @@ updatebar(Monitor *m)
|
||||
|
||||
m->b.scale = m->wlr_output->scale;
|
||||
m->lrpad = m->font->height;
|
||||
- m->b.height = m->font->height + 2;
|
||||
+ m->b.height = m->font->height + 2 + borderpx * 2;
|
||||
m->lrpad = m->drw->font->height;
|
||||
- m->b.height = m->drw->font->height + 2;
|
||||
+ m->b.height = m->drw->font->height + 2 + borderpx * 2;
|
||||
m->b.real_height = (int)((float)m->b.height / m->wlr_output->scale);
|
||||
}
|
||||
|
||||
--
|
||||
2.45.0
|
||||
2.45.2
|
||||
|
||||
|
||||
Reference in New Issue
Block a user