From 9a1d620556a2c15af8ed8a4f29ec48a356a93e51 Mon Sep 17 00:00:00 2001 From: lohhiiccc <96543753+lohhiiccc@users.noreply.github.com> Date: Thu, 2 Jul 2026 19:32:29 +0200 Subject: [PATCH] feat: display human-readable file sizes --- src/IO/UI.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/IO/UI.py b/src/IO/UI.py index 57e8b21..67528f9 100644 --- a/src/IO/UI.py +++ b/src/IO/UI.py @@ -38,6 +38,17 @@ class UI: item = items[index] self._render_item(stdscr, item, index, index + self.HEADER_ROWS, width) + SIZE_UNITS = ("", "K", "M", "G", "T", "P") + + @staticmethod + def _format_size(size: int) -> str: + value = float(size) + for unit in UI.SIZE_UNITS: + if value < 1024: + return str(int(value)) if unit == "" else f"{value:.1f}{unit}" + value /= 1024 + return f"{value:.1f}E" + ARROW = " -> " ARROW_LEN = len(ARROW) @@ -59,7 +70,7 @@ class UI: stdscr.addstr(row, name_len, self.ARROW, attr_arrow) stdscr.addstr(row, name_len + self.ARROW_LEN, str(item.point_to), attr_target) - stdscr.addstr(row, col_width, str(size).ljust(col_width * 2), attr) + stdscr.addstr(row, col_width, self._format_size(size).ljust(col_width * 2), attr) stdscr.addstr(row, col_width * 2, stat.filemode(perm), attr) @property