From 92301c058becb9ed214e25bc828a688f23576937 Mon Sep 17 00:00:00 2001 From: Dominik Jain Date: Tue, 31 Mar 2026 15:27:42 +0200 Subject: [PATCH] Import pystray locally, because import crashes if there is no display --- src/serena/dashboard.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/serena/dashboard.py b/src/serena/dashboard.py index dfb5a165..640bee51 100644 --- a/src/serena/dashboard.py +++ b/src/serena/dashboard.py @@ -6,13 +6,10 @@ from collections.abc import Callable from pathlib import Path from typing import TYPE_CHECKING, Any, Self -import pystray import webview from flask import Flask, Response, redirect, request, send_from_directory from PIL import Image from pydantic import BaseModel -from pystray import MenuItem as Item -from pystray._base import Icon as TrayIcon from sensai.util import logging from serena.analytics import ToolUsageStats @@ -708,7 +705,7 @@ class SerenaDashboardViewer: self.start_minimized = start_minimized self.window: webview.Window - self._tray_icon: TrayIcon + self._tray_icon: Any self._quitting = False @staticmethod @@ -799,6 +796,11 @@ class SerenaDashboardViewer: ns_app.unhide_(None) def _start_tray(self) -> None: + # import pystray locally, because the import fails when there is no display! + import pystray + from pystray import MenuItem as Item + from pystray._base import Icon as TrayIcon + dashboard_path = Path(SERENA_DASHBOARD_DIR) # macOS menu bar icons are displayed at 16pt; 32px covers Retina (@2x).