mirror of
https://github.com/bakkeby/dwm-flexipatch
synced 2024-11-15 00:15:07 +00:00
82 lines
1.6 KiB
C
82 lines
1.6 KiB
C
void
|
|
managealtbar(Window win, XWindowAttributes *wa)
|
|
{
|
|
Monitor *m;
|
|
Bar *bar;
|
|
int i;
|
|
if (!(m = recttomon(wa->x, wa->y, wa->width, wa->height)))
|
|
return;
|
|
for (i = 0, bar = m->bar; bar && bar->win && bar->next; bar = bar->next, ++i); // find last bar
|
|
if (!bar) {
|
|
bar = m->bar = ecalloc(1, sizeof(Bar));
|
|
bar->topbar = topbar;
|
|
} else if (bar && bar->win) {
|
|
bar->next = ecalloc(1, sizeof(Bar));
|
|
bar->next->topbar = !bar->topbar;
|
|
bar = bar->next;
|
|
}
|
|
bar->external = 1;
|
|
bar->showbar = 1;
|
|
bar->mon = m;
|
|
bar->idx = i;
|
|
bar->borderpx = 0;
|
|
bar->win = win;
|
|
bar->bh = wa->height;
|
|
updatebarpos(m);
|
|
arrange(m);
|
|
XSelectInput(dpy, win, EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
|
|
XMapWindow(dpy, win);
|
|
XMoveResizeWindow(dpy, bar->win, bar->bx, -bar->by, wa->width, bar->bh);
|
|
arrange(selmon);
|
|
XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend,
|
|
(unsigned char *) &win, 1);
|
|
}
|
|
|
|
void
|
|
spawnbar()
|
|
{
|
|
if (*altbarcmd)
|
|
system(altbarcmd);
|
|
}
|
|
|
|
void
|
|
unmanagealtbar(Window w)
|
|
{
|
|
Monitor *m = wintomon(w);
|
|
Bar *bar;
|
|
|
|
if (!m)
|
|
return;
|
|
|
|
for (bar = m->bar; bar && bar->win; bar = bar->next)
|
|
if (bar->win == w) {
|
|
bar->win = 0;
|
|
bar->by = 0;
|
|
bar->bh = 0;
|
|
break;
|
|
}
|
|
updatebarpos(m);
|
|
arrange(m);
|
|
}
|
|
|
|
int
|
|
wmclasscontains(Window win, const char *class, const char *name)
|
|
{
|
|
XClassHint ch = { NULL, NULL };
|
|
int res = 1;
|
|
|
|
if (XGetClassHint(dpy, win, &ch)) {
|
|
if (ch.res_name && strstr(ch.res_name, name) == NULL)
|
|
res = 0;
|
|
if (ch.res_class && strstr(ch.res_class, class) == NULL)
|
|
res = 0;
|
|
} else
|
|
res = 0;
|
|
|
|
if (ch.res_class)
|
|
XFree(ch.res_class);
|
|
if (ch.res_name)
|
|
XFree(ch.res_name);
|
|
|
|
return res;
|
|
} |