Esempio n. 1
0
int main(void) {
    char *status;
    float mem;
    int bat0;
    char *datetime;
    char *address;
    char battext[6];
    char *volume;

    if (!(dpy = XOpenDisplay(NULL))) {
        fprintf(stderr, "Cannot open display.\n");
        return 1;
    }

    status = xmalloc(200);

    for (;;sleep(1)) {
        datetime = getdatetime();
        mem = getmeminfo();
        bat0 = getbattery();
        address = getaddress();
        volume = getvolume();

        if (ischarging())
            strcpy(battext, "ac:");
        else {
            if (bat0 > 50)
                strcpy(battext, "bat:");
            else if (bat0 < 20)
                strcpy(battext, "bat:");
            else
                strcpy(battext, "bat:");
        }

        snprintf(status, 200,
                "|%s|mem:%0.0f%%|%s%d%%|vol:%s|%s|",
                address, mem, battext, bat0, volume, datetime);

        free(datetime);
        free(address);
        free(volume);
        setstatus(status);
    }

    free(status);
    XCloseDisplay(dpy);

    return 0;
}
Esempio n. 2
0
char* getbattery() {
    char *co;
    int descap, remcap;

	//int energy_now, energy_full, voltage_now;
	//return ((float)energy_now * 1000 / (float)voltage_now) * 100 / ((float)energy_full * 1000 / (float)voltage_now);

    descap = -1;
    remcap = -1;

    co = readfile(present);
    if (co == NULL || co[0] != '1') {
        if (co != NULL) free(co);
        return smprintf("");
    }
    free(co);

    co = readfile(energy_full);
    if (co == NULL)
        return smprintf("");

    sscanf(co, "%d", &descap);
    free(co);

    co = readfile(energy_now);
    if (co == NULL)
        return smprintf("");

    sscanf(co, "%d", &remcap);
    free(co);

    if (remcap < 0 || descap < 0)
        return smprintf("invalid");

    float charge = ((float)remcap / (float)descap) * 100;
    return smprintf("Batt %.0f%%%s \x19 ", charge, (ischarging()? "<<" : ">>"));
}