dwm

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

bar_vtcolors.c (1512B)


      1 void
      2 get_vt_colors(void)
      3 {
      4 	char *cfs[3] = {
      5 		"/sys/module/vt/parameters/default_red",
      6 		"/sys/module/vt/parameters/default_grn",
      7 		"/sys/module/vt/parameters/default_blu",
      8 	};
      9 	char vtcs[16][8];
     10 	char tk[] = ",";
     11 	char cl[64];
     12 	char *tp = NULL;
     13 	FILE *fp;
     14 	size_t r;
     15 	int i, c, n, len;
     16 	for (i = 0; i < 16; i++)
     17 		strcpy(vtcs[i], "#000000");
     18 
     19 	for (i = 0, r = 0; i < 3; i++) {
     20 		if ((fp = fopen(cfs[i], "r")) == NULL)
     21 			continue;
     22 		while ((cl[r] = fgetc(fp)) != EOF && cl[r] != '\n')
     23 			r++;
     24 		cl[r] = '\0';
     25 		for (c = 0, tp = cl, n = 0; c < 16; c++, tp++) {
     26 			if ((r = strcspn(tp, tk)) == -1)
     27 				break;
     28 			for (n = 0; r && *tp >= 48 && *tp < 58; r--, tp++)
     29 				n = n * 10 - 48 + *tp;
     30 			vtcs[c][i * 2 + 1] = n / 16 < 10 ? n / 16 + 48 : n / 16 + 87;
     31 			vtcs[c][i * 2 + 2] = n % 16 < 10 ? n % 16 + 48 : n % 16 + 87;
     32 		}
     33 		fclose(fp);
     34 	}
     35 
     36 	len = LENGTH(colors);
     37 	if (len > LENGTH(color_ptrs))
     38 		len = LENGTH(color_ptrs);
     39 	for (i = 0; i < len; i++) {
     40 		for (c = 0; c < ColCount; c++) {
     41 			n = color_ptrs[i][c];
     42 			if (n > -1 && strlen(colors[i][c]) >= strlen(vtcs[n]))
     43 				memcpy(colors[i][c], vtcs[n], 7);
     44 		}
     45 	}
     46 }
     47 
     48 int get_luminance(char *r)
     49 {
     50 	char *c = r;
     51 	int n[3] = {0};
     52 	int i = 0;
     53 
     54 	while (*c) {
     55 		if (*c >= 48 && *c < 58)
     56 			n[i / 2] = n[i / 2] * 16 - 48 + *c;
     57 		else if (*c >= 65 && *c < 71)
     58 			n[i / 2] = n[i / 2] * 16 - 55 + *c;
     59 		else if (*c >= 97 && *c < 103)
     60 			n[i / 2] = n[i / 2] * 16 - 87 + *c;
     61 		else
     62 			i--;
     63 		i++;
     64 		c++;
     65 	}
     66 
     67 	return (0.299 * n[0] + 0.587 * n[1] + 0.114 * n[2]) / 2.55;
     68 }
     69