- Imported packages from separate repos: - github.com/Snider/config -> pkg/config - github.com/Snider/display -> pkg/display - github.com/Snider/help -> pkg/help - github.com/Snider/i18n -> pkg/i18n - github.com/Snider/updater -> pkg/updater - Moved core code from root to pkg/core - Flattened nested package structures - Updated all import paths to github.com/Snider/Core/pkg/* - Added Display interface to Core - Updated go.work for workspace modules Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
73 lines
2.2 KiB
Go
73 lines
2.2 KiB
Go
package display
|
|
|
|
import (
|
|
_ "embed"
|
|
|
|
"github.com/wailsapp/wails/v3/pkg/application"
|
|
)
|
|
|
|
// systemTray configures and creates the system tray icon and menu. This
|
|
// function is called during the startup of the display service.
|
|
func (s *Service) systemTray() {
|
|
|
|
systray := s.app.SystemTray.New()
|
|
systray.SetTooltip("Core")
|
|
systray.SetLabel("Core")
|
|
//appTrayIcon, _ := d.assets.ReadFile("assets/apptray.png")
|
|
//
|
|
//if runtime.GOOS == "darwin" {
|
|
// systray.SetTemplateIcon(appTrayIcon)
|
|
//} else {
|
|
// // Support for light/dark mode icons
|
|
// systray.SetDarkModeIcon(appTrayIcon)
|
|
// systray.SetIcon(appTrayIcon)
|
|
//}
|
|
// Create a hidden window for the system tray menu to interact with
|
|
trayWindow := s.app.Window.NewWithOptions(application.WebviewWindowOptions{
|
|
Name: "system-tray",
|
|
Title: "System Tray Status",
|
|
URL: "system-tray.html",
|
|
Width: 400,
|
|
Frameless: true,
|
|
Hidden: true,
|
|
})
|
|
systray.AttachWindow(trayWindow).WindowOffset(5)
|
|
|
|
// --- Build Tray Menu ---
|
|
trayMenu := s.app.Menu.New()
|
|
trayMenu.Add("Open Desktop").OnClick(func(ctx *application.Context) {
|
|
for _, window := range s.app.Window.GetAll() {
|
|
window.Show()
|
|
}
|
|
})
|
|
trayMenu.Add("Close Desktop").OnClick(func(ctx *application.Context) {
|
|
for _, window := range s.app.Window.GetAll() {
|
|
window.Hide()
|
|
}
|
|
})
|
|
|
|
trayMenu.Add("Environment Info").OnClick(func(ctx *application.Context) {
|
|
s.ShowEnvironmentDialog()
|
|
})
|
|
// Add brand-specific menu items
|
|
//switch d.brand {
|
|
//case AdminHub:
|
|
// trayMenu.Add("Manage Workspace").OnClick(func(ctx *application.Context) { /* TODO */ })
|
|
//case ServerHub:
|
|
// trayMenu.Add("Server Control").OnClick(func(ctx *application.Context) { /* TODO */ })
|
|
//case GatewayHub:
|
|
// trayMenu.Add("Routing Table").OnClick(func(ctx *application.Context) { /* TODO */ })
|
|
//case DeveloperHub:
|
|
// trayMenu.Add("Debug Console").OnClick(func(ctx *application.Context) { /* TODO */ })
|
|
//case ClientHub:
|
|
// trayMenu.Add("Connect").OnClick(func(ctx *application.Context) { /* TODO */ })
|
|
// trayMenu.Add("Disconnect").OnClick(func(ctx *application.Context) { /* TODO */ })
|
|
//}
|
|
|
|
trayMenu.AddSeparator()
|
|
trayMenu.Add("Quit").OnClick(func(ctx *application.Context) {
|
|
s.app.Quit()
|
|
})
|
|
|
|
systray.SetMenu(trayMenu)
|
|
}
|