yadm-config/.config/polybar/scripts/storage/SingleDisplay.py
2024-11-02 15:57:09 +01:00

47 lines
1.4 KiB
Python

import string
from array import array
from datetime import timedelta
from Display import Display
from Utils import find_storage_usage
class SingleDisplay(Display):
SWITCH_INTERVAL: timedelta = timedelta(seconds=10)
drives: array
maxLabelWidth: int
currentTime: float
currentIndex: int
def __init__(self, drives):
self.drives = drives
self.maxLabelWidth = self.getMaxLabelWidth()
self.currentIndex = 0
self.currentTime = 0
def render(self, displayInterval: timedelta) -> string:
self.currentTime = self.currentTime + displayInterval.total_seconds()
if self.currentTime < self.SWITCH_INTERVAL.total_seconds():
return self.renderCurrentDrive()
self.currentTime = 0
self.currentIndex = (self.currentIndex + 1) % len(self.drives)
return self.renderCurrentDrive()
def renderCurrentDrive(self):
currentDrive = self.drives[self.currentIndex]
label = currentDrive['label']
path = currentDrive['path']
usage = find_storage_usage(path)
formatString = "{:>"+ self.maxLabelWidth.__str__() +"} {}"
return formatString.format(label, usage)
def getMaxLabelWidth(self):
maxLabelWidth = 0
for i, drive in enumerate(self.drives):
maxLabelWidth = max(maxLabelWidth, len(drive['label']))
return maxLabelWidth