status-bat/bat.c
author Stiletto <blasux@blasux.ru>
Fri, 24 Oct 2014 17:07:07 +0400
changeset 11 ad3d40f11f6d
parent 9 96b47c0505b5
child 16 e08bdbec1843
permissions -rw-r--r--
status-bat: flashing bullshit support
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
     1
#include <stdio.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
     2
#include <stdlib.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
     3
#include <math.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
     4
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
     5
#include <sys/types.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
     6
#include <sys/stat.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
     7
#include <fcntl.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
     8
#include <assert.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
     9
#include <string.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    10
#include <limits.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    11
#include <unistd.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    12
#include <errno.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    13
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    14
#include "config.h"
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    15
#ifdef USE_UDEV
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    16
#include <poll.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    17
#include <libudev.h>
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    18
#endif
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    19
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    20
char *eights[] = { "ø", "▁", "▂", "▃", "▄", "▅", "▆","▇", "█" };
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    21
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    22
char *catfile(char *name) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    23
    struct stat buffer;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    24
    int         status;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    25
    int         f;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    26
    char*       resbuf;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    27
    f = open(name, O_RDONLY);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    28
    if (f == -1) return NULL;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    29
    status = fstat(f, &buffer);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    30
    if (status != 0) return NULL;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    31
    resbuf = malloc(buffer.st_size+1);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    32
    if (resbuf == NULL) return NULL;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    33
    status = read(f,resbuf,buffer.st_size);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    34
    if (status == -1) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    35
        free(resbuf);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    36
        return NULL;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    37
    }
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    38
    if ((status>0)&&(resbuf[status-1]=='\n'))
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    39
        resbuf[status-1]='\0';
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    40
    resbuf[status]='\0';
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    41
    return resbuf;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    42
}
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    43
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    44
int catint(char *name) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    45
    char *cont = catfile(name);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    46
    assert (cont != NULL);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    47
    int res = atoi(cont);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    48
    free(cont);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    49
    return res;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    50
}
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    51
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    52
char *color_stop;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    53
char *color_red;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    54
char *color_orange;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    55
char *color_green;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    56
char *color_none;
11
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
    57
static char *down_arrow = "↓";
6
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    58
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    59
char *color(int low,int mid,int rev,int value) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    60
    if (value>mid) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    61
        return rev ? color_red : color_green;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    62
    } else if (value>low) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    63
        return color_orange;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    64
    }
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    65
    return rev ? color_green : color_red;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    66
}
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    67
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    68
int main(int argc, char *argv[]) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    69
    if (argc<=1) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    70
        fprintf(stderr, "Usage: %s <BAT1> [term|pango]\n", argv[0]);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    71
        fflush(stderr);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    72
        return 1;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    73
    }
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    74
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    75
    char *arrow_color;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    76
    char *eights_color;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    77
    char *percent_color;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    78
    char *remtimes_color;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    79
    if (argc>2 && !strcmp(argv[2],"term")) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    80
        color_stop = "\x1b[0m";
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    81
        color_red = "\x1b[1;31m";
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    82
        color_green = "\x1b[1;32m";
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    83
        color_orange = "\x1b[1;33m";
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    84
        color_none = color_stop;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    85
    } else if (argc>2 && !strcmp(argv[2],"pango")) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    86
        color_stop = "</span>";
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    87
        color_red = "<span color='#f33'>";
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    88
        color_green = "<span color='#0f0'>";
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    89
        color_orange = "<span color='#fa0'>";
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    90
        color_none = "<span>";
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    91
    } else {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    92
        color_stop = color_red = color_green = color_orange = color_none = "";
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    93
    }
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    94
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    95
#ifdef USE_UDEV
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    96
    struct udev *udev;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    97
    struct udev_device *dev;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    98
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
    99
    struct udev_monitor *mon;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   100
    int mon_fd;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   101
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   102
    udev = udev_new();
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   103
    if (!udev) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   104
        printf("Can't create udev\n");
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   105
        exit(1);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   106
    }
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   107
    mon = udev_monitor_new_from_netlink(udev, "udev");
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   108
    udev_monitor_filter_add_match_subsystem_devtype(mon, "power_supply", NULL);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   109
    udev_monitor_enable_receiving(mon);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   110
    mon_fd = udev_monitor_get_fd(mon);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   111
    static struct pollfd fds[1];
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   112
    fds[0].fd = mon_fd;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   113
    fds[0].events = POLLIN;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   114
#endif
9
96b47c0505b5 Support energy in addition to charge
Stiletto <blasux@blasux.ru>
parents: 6
diff changeset
   115
    char filename[PATH_MAX+1];
96b47c0505b5 Support energy in addition to charge
Stiletto <blasux@blasux.ru>
parents: 6
diff changeset
   116
    snprintf(filename,PATH_MAX,"/sys/class/power_supply/%s/energy_now",argv[1]);
96b47c0505b5 Support energy in addition to charge
Stiletto <blasux@blasux.ru>
parents: 6
diff changeset
   117
    struct stat st;
96b47c0505b5 Support energy in addition to charge
Stiletto <blasux@blasux.ru>
parents: 6
diff changeset
   118
    int energy = 0==stat(filename, &st);
11
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   119
    int sleeptime = UPDATE_PERIOD;
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   120
#ifdef DRAIN_THE_FUCK
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   121
    int alertflash = 1;
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   122
#endif
6
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   123
    while (1) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   124
9
96b47c0505b5 Support energy in addition to charge
Stiletto <blasux@blasux.ru>
parents: 6
diff changeset
   125
        snprintf(filename,PATH_MAX,"/sys/class/power_supply/%s/%s_now",argv[1], energy ? "energy" : "charge");
6
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   126
        int charge_now = catint(filename);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   127
9
96b47c0505b5 Support energy in addition to charge
Stiletto <blasux@blasux.ru>
parents: 6
diff changeset
   128
        snprintf(filename,PATH_MAX,"/sys/class/power_supply/%s/%s_now",argv[1], energy ? "power" : "current");
6
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   129
        int current_now = catint(filename);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   130
9
96b47c0505b5 Support energy in addition to charge
Stiletto <blasux@blasux.ru>
parents: 6
diff changeset
   131
        snprintf(filename,PATH_MAX,"/sys/class/power_supply/%s/%s_full",argv[1], energy ? "energy" : "charge");
6
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   132
        int charge_full = catint(filename);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   133
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   134
        snprintf(filename,PATH_MAX,"/sys/class/power_supply/%s/status",argv[1]);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   135
        char *status = catfile(filename);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   136
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   137
        int remtime = 0;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   138
        char *arrow;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   139
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   140
        remtimes_color = color_none;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   141
        if (!strcmp(status,"Charging")) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   142
            if (current_now != 0)
9
96b47c0505b5 Support energy in addition to charge
Stiletto <blasux@blasux.ru>
parents: 6
diff changeset
   143
                remtime = (charge_full-charge_now) / (current_now/60);
6
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   144
            arrow = "↑";
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   145
            arrow_color = color_orange;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   146
        }
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   147
        else if (!strcmp(status,"Discharging")) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   148
            if (current_now != 0)
9
96b47c0505b5 Support energy in addition to charge
Stiletto <blasux@blasux.ru>
parents: 6
diff changeset
   149
                remtime = charge_now / (current_now/60);
11
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   150
            arrow = down_arrow;
6
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   151
            arrow_color = color_none;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   152
            remtimes_color = color(20,120,0,remtime);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   153
        } else {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   154
            arrow = "—";
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   155
            arrow_color = color_green;
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   156
        }
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   157
        free(status);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   158
9
96b47c0505b5 Support energy in addition to charge
Stiletto <blasux@blasux.ru>
parents: 6
diff changeset
   159
        int percent = charge_now/(charge_full/100);
6
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   160
        eights_color = percent_color = color(15,40,0,percent);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   161
        printf("%s%s%s ",eights_color,eights[charge_now*8/charge_full],color_stop);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   162
        printf("%s%d%%%s ",percent_color,percent,color_stop);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   163
        printf("%s%s%s ",arrow_color,arrow,color_stop);
11
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   164
#ifdef DRAIN_THE_FUCK
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   165
        if ((remtime < 20)&&(arrow == down_arrow)) {
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   166
            sleeptime = 1;
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   167
            alertflash = !alertflash;
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   168
        } else {
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   169
            sleeptime = UPDATE_PERIOD;
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   170
            alertflash = 1;
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   171
        }
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   172
        if (alertflash) {
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   173
#endif
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   174
            printf("%s%d:%02d%s\n",remtimes_color, remtime/60, remtime%60, color_stop);
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   175
#ifdef DRAIN_THE_FUCK
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   176
        } else {
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   177
            printf("%s·:··%s\n",remtimes_color, color_stop);
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   178
        }
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   179
#endif
6
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   180
        fflush(stdout);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   181
#ifdef USE_UDEV
11
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   182
        int poll_status = poll(fds,1, sleeptime*1000);
6
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   183
        if (poll_status < 0) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   184
            if (poll_status != EINTR) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   185
                perror("poll");
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   186
                exit(12);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   187
            }
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   188
        }
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   189
        if (fds[0].revents & POLLIN) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   190
            dev = udev_monitor_receive_device(mon);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   191
            if (dev) {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   192
                udev_device_unref(dev);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   193
            } else {
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   194
                printf("UDEV DC\n");
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   195
                exit(13);
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   196
            }
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   197
        }
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   198
#else
11
ad3d40f11f6d status-bat: flashing bullshit support
Stiletto <blasux@blasux.ru>
parents: 9
diff changeset
   199
        sleep(sleeptime);
6
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   200
#endif
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   201
    }
de6b88d1fa3c status-bat (with optional udev support!)
Stiletto <blasux@blasux.ru>
parents:
diff changeset
   202
}