diff options
| author | Mattias Andrée <maandree@operamail.com> | 2014-02-28 20:50:53 +0100 | 
|---|---|---|
| committer | Mattias Andrée <maandree@operamail.com> | 2014-02-28 20:50:53 +0100 | 
| commit | db7cf58ac21627b5ad851c1e738725d824fceac7 (patch) | |
| tree | 303fe45674985d96d6c251b04fbfe3a3b8f5fec3 /src/plugins | |
| parent | add support for simple arrows (diff) | |
| download | xpybar-db7cf58ac21627b5ad851c1e738725d824fceac7.tar.gz xpybar-db7cf58ac21627b5ad851c1e738725d824fceac7.tar.bz2 xpybar-db7cf58ac21627b5ad851c1e738725d824fceac7.tar.xz  | |
add uptime
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/uptime.py | 75 | 
1 files changed, 75 insertions, 0 deletions
diff --git a/src/plugins/uptime.py b/src/plugins/uptime.py new file mode 100644 index 0000000..0979b7b --- /dev/null +++ b/src/plugins/uptime.py @@ -0,0 +1,75 @@ +# -*- python -*- +''' +xpybar – xmobar replacement written in python +Copyright © 2014  Mattias Andrée (maandree@member.fsf.org) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +''' + +from util import * + + +class Uptime: +    ''' +    The current uptime of the machine and how long it has been idle +     +    @variable  uptime:(days:int, hours:int, minutes:int, seconds:float)        Total uptime +    @variable  total_idle:(days:int, hours:int, minutes:int, seconds:float)    Total processor idle time +    @variable  average_idle:(days:int, hours:int, minutes:int, seconds:float)  Average processor idle time +    ''' +     +    cpu_count = None +    ''' +    :int?  The number of processors on the machine +    ''' +     +     +    def __init__(self): +        ''' +        Constructor +        ''' +        uptime = None +        with open('/proc/uptime', 'rb') as file: +            uptime = file.read() +        uptime = uptime.decode('utf-8', 'replace') +        uptime = uptime.replace('\n', ' ').split(' ') +        uptime, idle = float(uptime[0]), float(uptime[1]) +         +        if Uptime.cpu_count is None: +            with open('/proc/cpuinfo', 'rb') as file: +                Uptime.cpu_count = file.read() +            Uptime.cpu_count = Uptime.cpu_count.decode('utf-8', 'replace').split('\n') +            Uptime.cpu_count = filter(lambda line : 'processor' in line, Uptime.cpu_count) +            Uptime.cpu_count = len(list(Uptime.cpu_count)) +         +        self.uptime = Uptime.split_time(uptime) +        self.total_idle = Uptime.split_time(idle) +        self.average_idle = Uptime.split_time(idle / Uptime.cpu_count) +     +     +    @staticmethod +    def split_time(t): +        ''' +        Split a large number of seconds to days, hours, minutes and seconds +         +        @param   t:float  The number of seconds +        @return  :(days:int, hours:int, minutes:int, seconds:float) +                     The time split into days, hours [0, 23], minutes [0, 59] and seconds [0, 60[ +        ''' +        seconds, t = t % 60, t // 60 +        minutes, t = int(t % 60), t // 60 +        hours, t = int(t % 24), t // 24 +        days = int(t) +        return (days, hours, minutes, seconds) +  | 
