Source code for i3pystatus.uptime
from i3pystatus import IntervalModule, formatp
[docs]class Uptime(IntervalModule):
"""
Outputs Uptime
.. rubric:: Available formatters
* `{days}` - uptime in days
* `{hours}` - rest of uptime in hours
* `{mins}` - rest of uptime in minutes
* `{secs}` - rest of uptime in seconds
* `{uptime}` - deprecated: equals '`{hours}:{mins}`'
"""
settings = (
("format", "Format string"),
("color", "String color"),
("alert", "If you want the string to change color"),
("seconds_alert", "How many seconds necessary to start the alert"),
("color_alert", "Alert color"),
)
file = "/proc/uptime"
format = "up {hours}:{mins}"
color = "#ffffff"
alert = False
seconds_alert = 60 * 60 * 24 * 30 # 30 days
color_alert = "#ff0000"
def run(self):
with open(self.file, "r") as f:
seconds = int(float(f.read().split()[0]))
raw_seconds = seconds
days = seconds // (60 * 60 * 24)
hours = seconds // (60 * 60)
minutes = seconds // 60
if "{days}" in self.format:
hours = (seconds % (60 * 60 * 24)) // (60 * 60)
minutes = (seconds % (60 * 60 * 24)) // 60
seconds = (seconds % (60 * 60 * 24))
if "{hours}" in self.format:
minutes = (seconds % (60 * 60)) // 60
seconds = (seconds % (60 * 60))
if "{mins}" in self.format:
seconds = seconds % 60
fdict = {
"days": days,
"hours": hours,
"mins": minutes,
"secs": seconds,
"uptime": "{}:{}".format(hours, minutes),
}
self.data = fdict
if self.alert:
if raw_seconds > self.seconds_alert:
self.color = self.color_alert
self.output = {
"full_text": formatp(self.format, **fdict),
"color": self.color
}