Introduction
Introduction Statistics Contact Development Disclaimer Help
profil-dwmstatus-1.0.c - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
profil-dwmstatus-1.0.c (2489B)
---
1 /* made by profil 2011-12-29.
2 **
3 ** Compile with:
4 ** gcc -Wall -pedantic -std=c99 -lX11 status.c
5 */
6 #include <stdio.h>
7 #include <stdlib.h>
8 #include <unistd.h>
9 #include <time.h>
10 #include <X11/Xlib.h>
11
12 static Display *dpy;
13
14 void setstatus(char *str) {
15 XStoreName(dpy, DefaultRootWindow(dpy), str);
16 XSync(dpy, False);
17 }
18
19 float getfreq(char *file) {
20 FILE *fd;
21 char *freq;
22 float ret;
23
24 freq = malloc(10);
25 fd = fopen(file, "r");
26 if(fd == NULL) {
27 fprintf(stderr, "Cannot open '%s' for reading.\n", file);
28 exit(1);
29 }
30
31 fgets(freq, 10, fd);
32 fclose(fd);
33
34 ret = atof(freq)/1000000;
35 free(freq);
36 return ret;
37 }
38
39 char *getdatetime() {
40 char *buf;
41 time_t result;
42 struct tm *resulttm;
43
44 if((buf = malloc(sizeof(char)*65)) == NULL) {
45 fprintf(stderr, "Cannot allocate memory for buf.\n");
46 exit(1);
47 }
48 result = time(NULL);
49 resulttm = localtime(&result);
50 if(resulttm == NULL) {
51 fprintf(stderr, "Error getting localtime.\n");
52 exit(1);
53 }
54 if(!strftime(buf, sizeof(char)*65-1, "%a %b %d %H:%M:%S", result…
55 fprintf(stderr, "strftime is 0.\n");
56 exit(1);
57 }
58
59 return buf;
60 }
61
62 float getbattery() {
63 FILE *fd;
64 int energy_now, energy_full, voltage_now;
65
66 fd = fopen("/sys/class/power_supply/BAT0/energy_now", "r");
67 if(fd == NULL) {
68 fprintf(stderr, "Error opening energy_now.\n");
69 return -1;
70 }
71 fscanf(fd, "%d", &energy_now);
72 fclose(fd);
73
74
75 fd = fopen("/sys/class/power_supply/BAT0/energy_full", "r");
76 if(fd == NULL) {
77 fprintf(stderr, "Error opening energy_full.\n");
78 return -1;
79 }
80 fscanf(fd, "%d", &energy_full);
81 fclose(fd);
82
83
84 fd = fopen("/sys/class/power_supply/BAT0/voltage_now", "r");
85 if(fd == NULL) {
86 fprintf(stderr, "Error opening voltage_now.\n");
87 return -1;
88 }
89 fscanf(fd, "%d", &voltage_now);
90 fclose(fd);
91
92
93 return ((float)energy_now * 1000 / (float)voltage_now) * 100 / (…
94 }
95
96 int main(void) {
97 char *status;
98 float cpu0, cpu1;
99 char *datetime;
100 int bat0;
101
102
103 if (!(dpy = XOpenDisplay(NULL))) {
104 fprintf(stderr, "Cannot open display.\n");
105 return 1;
106 }
107
108 if((status = malloc(200)) == NULL)
109 exit(1);
110
111
112 for (;;sleep(1)) {
113 cpu0 = getfreq("/sys/devices/system/cpu/cpu0/cpufreq/sca…
114 cpu1 = getfreq("/sys/devices/system/cpu/cpu1/cpufreq/sca…
115 datetime = getdatetime();
116 bat0 = getbattery();
117 snprintf(status, 200, "%0.2f, %0.2f | %.2lf%% | %s", cpu…
118
119 free(datetime);
120 setstatus(status);
121 }
122
123 free(status);
124 XCloseDisplay(dpy);
125
126 return 0;
127 }
128
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.