//go:build !windows // +build !windows package tray import ( "fmt" "os" "os/signal" "syscall" "go.uber.org/zap" ) // TrayManager 托盘管理器(非Windows平台实现) type TrayManager struct { logger *zap.Logger webPort int onExit func() } // NewTrayManager 创建托盘管理器 func NewTrayManager(logger *zap.Logger, webPort int, onExit func()) *TrayManager { return &TrayManager{ logger: logger, webPort: webPort, onExit: onExit, } } // Run 运行托盘(非Windows平台显示提示信息并阻塞) func (t *TrayManager) Run() { t.logger.Info("非Windows系统,跳过托盘初始化") // 显示启动信息 fmt.Println("") fmt.Println("========================================") fmt.Println("🌐 MeshRay 服务已启动") fmt.Println("========================================") fmt.Printf("📍 Web 管理界面: http://localhost:%d\n", t.webPort) fmt.Println("💡 提示: 使用 Ctrl+C 停止服务") fmt.Println("========================================") fmt.Println("") // 等待退出信号 sigChan := make(chan os.Signal, 1) signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM) <-sigChan t.logger.Info("收到退出信号,正在关闭...") if t.onExit != nil { t.onExit() } }