aboutsummaryrefslogtreecommitdiff
path: root/dwm.c
diff options
context:
space:
mode:
authorPhilip Wittamore <philip@wittamore.com>2025-06-01 19:04:49 +0200
committerPhilip Wittamore <philip@wittamore.com>2025-06-01 19:04:49 +0200
commitbf9c684624cb8446b8b09b1cfc3538dd603738e9 (patch)
tree7b64605848aa54bf8e6767c90dc30e6b4d216dac /dwm.c
parent37abb009c11fabe7a85e04588542636d6dc5a96e (diff)
downloaddwm-bf9c684624cb8446b8b09b1cfc3538dd603738e9.tar.gz
dwm-bf9c684624cb8446b8b09b1cfc3538dd603738e9.tar.bz2
dwm-bf9c684624cb8446b8b09b1cfc3538dd603738e9.zip
update
Diffstat (limited to 'dwm.c')
-rw-r--r--dwm.c104
1 files changed, 5 insertions, 99 deletions
diff --git a/dwm.c b/dwm.c
index cecd7bd..d7c5872 100644
--- a/dwm.c
+++ b/dwm.c
@@ -202,7 +202,6 @@ static void focusstack(const Arg *arg);
static Atom getatomprop(Client *c, Atom prop);
static int getrootptr(int *x, int *y);
static long getstate(Window w);
-static pid_t getstatusbarpid();
static int gettextprop(Window w, Atom atom, char *text, unsigned int size);
static void grabbuttons(Client *c, int focused);
static void grabkeys(void);
@@ -240,7 +239,6 @@ static void setmfact(const Arg *arg);
static void setup(void);
static void seturgent(Client *c, int urg);
static void showhide(Client *c);
-static void sigstatusbar(const Arg *arg);
static void spawn(const Arg *arg);
static void tag(const Arg *arg);
static void tagmon(const Arg *arg);
@@ -286,9 +284,6 @@ static pid_t winpid(Window w);
/* variables */
static const char broken[] = "broken";
static char stext[256];
-static int statusw;
-static int statussig;
-static pid_t statuspid = -1;
static int screen;
static int sw, sh; /* X display screen geometry width, height */
static int bh; /* bar height */
@@ -537,7 +532,6 @@ buttonpress(XEvent *e)
Client *c;
Monitor *m;
XButtonPressedEvent *ev = &e->xbutton;
- char *text, *s, ch;
click = ClkRootWin;
/* focus monitor if necessary */
@@ -562,27 +556,9 @@ buttonpress(XEvent *e)
arg.ui = 1 << i;
} else if (ev->x < x + TEXTW(selmon->ltsymbol))
click = ClkLtSymbol;
- else if (ev->x > selmon->ww - statusw) {
- x = selmon->ww - statusw;
+ else if (ev->x > selmon->ww - (int)TEXTW(stext))
click = ClkStatusText;
- statussig = 0;
- for (text = s = stext; *s && x <= ev->x; s++) {
- if ((unsigned char)(*s) < ' ') {
- ch = *s;
- *s = '\0';
- x += TEXTW(text) - lrpad;
- *s = ch;
- text = s + 1;
- if (x >= ev->x)
- break;
- /* reset on matching signal raw byte */
- if (ch == statussig)
- statussig = 0;
- else
- statussig = ch;
- }
- }
- } else
+ else
click = ClkWinTitle;
} else if ((c = wintoclient(ev->window))) {
focus(c);
@@ -876,24 +852,9 @@ drawbar(Monitor *m)
/* draw status first so it can be overdrawn by tags later */
if (m == selmon) { /* status is only drawn on selected monitor */
- char *text, *s, ch;
drw_setscheme(drw, scheme[SchemeNorm]);
-
- x = 0;
- for (text = s = stext; *s; s++) {
- if ((unsigned char)(*s) < ' ') {
- ch = *s;
- *s = '\0';
- tw = TEXTW(text) - lrpad;
- drw_text(drw, m->ww - statusw + x, 0, tw, bh, 0, text, 0);
- x += tw;
- *s = ch;
- text = s + 1;
- }
- }
- tw = TEXTW(text) - lrpad + 2;
- drw_text(drw, m->ww - statusw + x, 0, tw, bh, 0, text, 0);
- tw = statusw;
+ tw = TEXTW(stext) - lrpad + 2; /* 2px right padding */
+ drw_text(drw, m->ww - tw, 0, tw, bh, 0, stext, 0);
}
for (c = m->clients; c; c = c->next) {
@@ -1080,30 +1041,6 @@ getatomprop(Client *c, Atom prop)
return atom;
}
-pid_t
-getstatusbarpid()
-{
- char buf[32], *str = buf, *c;
- FILE *fp;
-
- if (statuspid > 0) {
- snprintf(buf, sizeof(buf), "/proc/%u/cmdline", statuspid);
- if ((fp = fopen(buf, "r"))) {
- fgets(buf, sizeof(buf), fp);
- while ((c = strchr(str, '/')))
- str = c + 1;
- fclose(fp);
- if (!strcmp(str, STATUSBAR))
- return statuspid;
- }
- }
- if (!(fp = popen("pidof -s "STATUSBAR, "r")))
- return -1;
- fgets(buf, sizeof(buf), fp);
- pclose(fp);
- return strtol(buf, NULL, 10);
-}
-
int
getrootptr(int *x, int *y)
{
@@ -2000,20 +1937,6 @@ showhide(Client *c)
}
void
-sigstatusbar(const Arg *arg)
-{
- union sigval sv;
-
- if (!statussig)
- return;
- sv.sival_int = arg->i;
- if ((statuspid = getstatusbarpid()) <= 0)
- return;
-
- sigqueue(statuspid, SIGRTMIN+statussig, sv);
-}
-
-void
spawn(const Arg *arg)
{
struct sigaction sa;
@@ -2429,25 +2352,8 @@ updatesizehints(Client *c)
void
updatestatus(void)
{
- if (!gettextprop(root, XA_WM_NAME, stext, sizeof(stext))) {
+ if (!gettextprop(root, XA_WM_NAME, stext, sizeof(stext)))
strcpy(stext, "dwm-"VERSION);
- statusw = TEXTW(stext) - lrpad + 2;
- } else {
- char *text, *s, ch;
-
- statusw = 0;
- for (text = s = stext; *s; s++) {
- if ((unsigned char)(*s) < ' ') {
- ch = *s;
- *s = '\0';
- statusw += TEXTW(text) - lrpad;
- *s = ch;
- text = s + 1;
- }
- }
- statusw += TEXTW(text) - lrpad + 2;
-
- }
drawbar(selmon);
}