49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
from dwmbar.modules import BarItem
|
|
import os
|
|
from time import sleep, time
|
|
|
|
|
|
class Bar:
|
|
def __init__(
|
|
self,
|
|
items_count: int = 10,
|
|
sep: str = ''
|
|
) -> None:
|
|
self.sep = sep
|
|
self.items = [BarItem(False) for _ in range(items_count)]
|
|
|
|
def start(self, update_time: float = 0) -> None:
|
|
"""After call this function program will start infinity loop"""
|
|
while True:
|
|
start = time()
|
|
for i in range(len(self.items)):
|
|
self[i].update()
|
|
self.write()
|
|
finish = time()
|
|
sleep_time = update_time - (finish - start)
|
|
sleep(0 if sleep_time < 0 else sleep_time)
|
|
|
|
def __getitem__(
|
|
self,
|
|
key: int
|
|
) -> BarItem:
|
|
return self.items[key]
|
|
|
|
def __setitem__(
|
|
self,
|
|
key: int,
|
|
value: BarItem
|
|
) -> None:
|
|
self.items[key] = value
|
|
|
|
def __len__(self) -> int:
|
|
return len(self.items)
|
|
|
|
def write(self, reversed: bool = True) -> None:
|
|
out = ' ' + ''.join(
|
|
[str(self[i]) + ' / ' for i in range(len(self))
|
|
if self[i]
|
|
]
|
|
)[:-3] + ' '
|
|
os.system(f"xsetroot -name \"{out}\"")
|