From dfa9308dcad382c3f28734db0e2ece292a01e3c5 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Thu, 29 Jan 2026 17:43:48 +0100 Subject: [PATCH] cockpit: start the Borg runner after all widgets are mounted --- src/borg/cockpit/app.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/borg/cockpit/app.py b/src/borg/cockpit/app.py index 7d6896182..e1ed1419e 100644 --- a/src/borg/cockpit/app.py +++ b/src/borg/cockpit/app.py @@ -53,22 +53,27 @@ class BorgCockpitApp(App): def on_mount(self) -> None: """Initialize components.""" - from .runner import BorgRunner - self.query_one("#logo").styles.animate("opacity", 1, duration=1) self.query_one("#slogan").styles.animate("opacity", 1, duration=1) + # Delay runner start until after widgets are fully mounted + self.call_after_refresh(self.start_runner) + + def start_runner(self) -> None: + """Start the Borg runner after all widgets are mounted.""" + from .runner import BorgRunner + + # Speed tracking + self.total_lines_processed = 0 + self.last_lines_processed = 0 + self.speed_timer = self.set_interval(1.0, self.compute_speed) + self.start_time = time.monotonic() self.process_running = True args = getattr(self, "borg_args", ["--version"]) # Default to safe command if none passed self.runner = BorgRunner(args, self.handle_log_event) self.runner_task = asyncio.create_task(self.runner.start()) - # Speed tracking - self.total_lines_processed = 0 - self.last_lines_processed = 0 - self.speed_timer = self.set_interval(1.0, self.compute_speed) - def compute_speed(self) -> None: """Calculate and update speed (lines per second).""" current_lines = self.total_lines_processed