dwm

Kris's build of dwm
git clone git clone https://git.krisyotam.com/krisyotam/dwm.git
Log | Files | Refs | README | LICENSE

xkb.c (1135B)


      1 static XkbInfo xkbGlobal;
      2 static XkbInfo *xkbSaved = NULL;
      3 
      4 static XkbInfo *
      5 createxkb(Window w)
      6 {
      7 	XkbInfo *xkb;
      8 
      9 	xkb = malloc(sizeof *xkb);
     10 	if (xkb == NULL)
     11 		die("fatal: could not malloc() %u bytes\n", sizeof *xkb);
     12 	xkb->group = xkbGlobal.group;
     13 	xkb->w = w;
     14 	xkb->next = xkbSaved;
     15 	if (xkbSaved != NULL)
     16 		xkbSaved->prev = xkb;
     17 	xkb->prev = NULL;
     18 	xkbSaved = xkb;
     19 
     20 	return xkb;
     21 }
     22 
     23 XkbInfo *
     24 findxkb(Window w)
     25 {
     26 	XkbInfo *xkb;
     27 	for (xkb = xkbSaved; xkb != NULL; xkb = xkb->next)
     28 		if (xkb->w == w)
     29 			return xkb;
     30 	return NULL;
     31 }
     32 
     33 void
     34 xkbeventnotify(XEvent *e)
     35 {
     36 	XkbEvent *ev;
     37 
     38 	ev = (XkbEvent *) e;
     39 	switch (ev->any.xkb_type) {
     40 	case XkbStateNotify:
     41 		xkbGlobal.group = ev->state.locked_group;
     42 		if (selmon != NULL && selmon->sel != NULL)
     43 			selmon->sel->xkb->group = xkbGlobal.group;
     44 		drawbars();
     45 		break;
     46 	}
     47 }
     48 
     49 /* xkb bar module */
     50 int
     51 width_xkb(Bar *bar, BarArg *a)
     52 {
     53 	return TEXTW(xkb_layouts[xkbGlobal.group]);
     54 }
     55 
     56 int
     57 draw_xkb(Bar *bar, BarArg *a)
     58 {
     59 	drw_text(drw, a->x, a->y, a->w, a->h, lrpad / 2, xkb_layouts[xkbGlobal.group], 0, False);
     60 	return 1;
     61 }
     62 
     63 int
     64 click_xkb(Bar *bar, Arg *arg, BarArg *a)
     65 {
     66 	return ClkXKB;
     67 }
     68