diff options
author | Nico Schlömer <nico.schloemer@gmail.com> | 2022-09-03 11:56:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-03 11:56:52 +0200 |
commit | 8dc7289ad33d5c8c49d3980191879c41310afa8a (patch) | |
tree | 4523d98e7b8713bf469337104e707838554c6453 | |
parent | 01fcefab71e1a7ea36f8b1926c073d3c3271ca02 (diff) | |
parent | db3c41be451f4b58b2ffa4cc6aba292ecafcfba2 (diff) |
Merge pull request #100 from nschloe/batv0.2.6
put battery in top bar
-rw-r--r-- | .github/workflows/ci.yml | 8 | ||||
-rw-r--r-- | .pre-commit-config.yaml | 6 | ||||
-rw-r--r-- | src/tiptop/__about__.py | 2 | ||||
-rw-r--r-- | src/tiptop/_app.py | 67 | ||||
-rw-r--r-- | src/tiptop/_info.py | 27 |
5 files changed, 50 insertions, 60 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0b4c00e..a286cf7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,8 +14,6 @@ jobs: steps: - name: Check out repo uses: actions/checkout@v3 - - name: Set up Python - uses: actions/setup-python@v3 - name: Run pre-commit uses: pre-commit/action@v3.0.0 @@ -25,13 +23,13 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] - python-version: ["3.7", "3.8", "3.9", "3.10"] + python-version: ["3.7", "3.10"] exclude: # Windows tests fail on 3.10 -- somehow the output of tiptop --help is off - os: windows-latest python-version: "3.10" steps: - - uses: actions/setup-python@v3 + - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - uses: actions/checkout@v3 @@ -41,4 +39,4 @@ jobs: tox - name: Submit to codecov uses: codecov/codecov-action@v3 - if: ${{ matrix.python-version == '3.9' }} + if: ${{ matrix.python-version == '3.10' }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a1e83ea..a2dfc46 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,17 +5,17 @@ repos: - id: isort - repo: https://github.com/psf/black - rev: 22.3.0 + rev: 22.8.0 hooks: - id: black language_version: python3 - repo: https://github.com/PyCQA/flake8 - rev: 4.0.1 + rev: 5.0.4 hooks: - id: flake8 - repo: https://github.com/pre-commit/mirrors-prettier - rev: v2.6.2 + rev: v3.0.0-alpha.0 hooks: - id: prettier diff --git a/src/tiptop/__about__.py b/src/tiptop/__about__.py index fe404ae..01ef120 100644 --- a/src/tiptop/__about__.py +++ b/src/tiptop/__about__.py @@ -1 +1 @@ -__version__ = "0.2.5" +__version__ = "0.2.6" diff --git a/src/tiptop/_app.py b/src/tiptop/_app.py index e0f9014..8db479a 100644 --- a/src/tiptop/_app.py +++ b/src/tiptop/_app.py @@ -3,11 +3,9 @@ from __future__ import annotations import argparse from sys import version_info -import psutil from textual.app import App from .__about__ import __version__ -from ._battery import Battery from ._cpu import CPU from ._disk import Disk from ._info import InfoLine @@ -75,51 +73,26 @@ def run(argv=None): grid.add_column(fraction=55, name="left") grid.add_column(fraction=34, name="right") - if psutil.sensors_battery() is None: - grid.add_row(size=1, name="r0") - grid.add_row(fraction=1, name="r1") - grid.add_row(fraction=1, name="r2") - grid.add_row(fraction=1, name="r3") - grid.add_areas( - area0="left-start|right-end,r0", - area1="left,r1", - area2a="right,r1", - area2b="right,r2", - area2c="right,r3", - area3="left,r2-start|r3-end", - ) - grid.place( - area0=InfoLine(), - area1=CPU(), - area2a=Mem(), - area2b=Disk(), - area2c=Net(args.net), - area3=ProcsList(), - ) - else: - grid.add_row(size=1, name="r0") - grid.add_row(fraction=17, name="r1") - grid.add_row(fraction=4, name="r2") - grid.add_row(fraction=15, name="r3") - grid.add_row(fraction=15, name="r4") - grid.add_areas( - area0="left-start|right-end,r0", - area1="left,r1", - area2a="right,r1", - area2b="right,r2", - area2c="right,r3", - area2d="right,r4", - area3="left,r2-start|r4-end", - ) - grid.place( - area0=InfoLine(), - area1=CPU(), - area2a=Mem(), - area2b=Battery(), - area2c=Disk(), - area2d=Net(args.net), - area3=ProcsList(), - ) + grid.add_row(size=1, name="r0") + grid.add_row(fraction=1, name="r1") + grid.add_row(fraction=1, name="r2") + grid.add_row(fraction=1, name="r3") + grid.add_areas( + area0="left-start|right-end,r0", + area1="left,r1", + area2a="right,r1", + area2b="right,r2", + area2c="right,r3", + area3="left,r2-start|r3-end", + ) + grid.place( + area0=InfoLine(), + area1=CPU(), + area2a=Mem(), + area2b=Disk(), + area2c=Net(args.net), + area3=ProcsList(), + ) async def on_load(self, _): await self.bind("q", "quit", "quit") diff --git a/src/tiptop/_info.py b/src/tiptop/_info.py index 29514d5..fe2cf4a 100644 --- a/src/tiptop/_info.py +++ b/src/tiptop/_info.py @@ -42,9 +42,24 @@ class InfoLine(Widget): self.boot_time = psutil.boot_time() def render(self): - uptime_s = time.time() - self.boot_time - d = datetime(1, 1, 1) + timedelta(seconds=uptime_s) - right = [f"up {d.day - 1}d, {d.hour}:{d.minute:02d}h"] + uptime = timedelta(seconds=time.time() - self.boot_time) + h, m = seconds_to_h_m(uptime.seconds) + + right = [f"up {uptime.days}d, {h}:{m:02d}h"] + + bat = psutil.sensors_battery() + if bat is not None: + # hh, mm = seconds_to_h_m(bat.secsleft) + bat_string = f"bat {bat.percent:.1f}%" + if bat.power_plugged: + bat_string = "[green]" + bat_string + "[/]" + elif bat.percent < 10: + bat_string = "[red reverse bold]" + bat_string + "[/]" + elif bat.percent < 15: + bat_string = "[red]" + bat_string + "[/]" + elif bat.percent < 20: + bat_string = "[yellow]" + bat_string + "[/]" + right.append(bat_string) table = Table(show_header=False, expand=True, box=None, padding=0) if self.width < 100: @@ -56,10 +71,14 @@ class InfoLine(Widget): table.add_column(justify="center", no_wrap=True, ratio=1) table.add_column(justify="right", no_wrap=True, ratio=1) table.add_row( - self.left_string, datetime.now().strftime("%c"), ", ".join(right) + self.left_string, datetime.now().strftime("%c"), " ".join(right) ) return table async def on_resize(self, event): self.width = event.width self.height = event.height + + +def seconds_to_h_m(seconds): + return seconds // 3600, (seconds // 60) % 60 |