summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNico Schlömer <nico.schloemer@gmail.com>2022-09-03 11:56:52 +0200
committerGitHub <noreply@github.com>2022-09-03 11:56:52 +0200
commit8dc7289ad33d5c8c49d3980191879c41310afa8a (patch)
tree4523d98e7b8713bf469337104e707838554c6453
parent01fcefab71e1a7ea36f8b1926c073d3c3271ca02 (diff)
parentdb3c41be451f4b58b2ffa4cc6aba292ecafcfba2 (diff)
Merge pull request #100 from nschloe/batv0.2.6
put battery in top bar
-rw-r--r--.github/workflows/ci.yml8
-rw-r--r--.pre-commit-config.yaml6
-rw-r--r--src/tiptop/__about__.py2
-rw-r--r--src/tiptop/_app.py67
-rw-r--r--src/tiptop/_info.py27
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