package main import ( "embed" "net/http" "time" "github.com/wailsapp/wails/v3/pkg/application" "u-desk/internal/hotkey" ) //go:embed all:frontend/dist var assets embed.FS // 标题栏颜色(0x00BBGGRR) var ( titleBarLight = uint32(0xF0F0F0) // #F0F0F0 近白 titleBarDark = uint32(0x2D2D2D) // #2D2D2D 深灰 ) func main() { app := NewApp() wailsApp := application.New(application.Options{ Name: "U-Desk", Description: "桌面文件管理器", Services: []application.Service{ application.NewService(app), }, Assets: application.AssetOptions{ Handler: application.AssetFileServerFS(assets), Middleware: func(next http.Handler) http.Handler { return http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { if req.URL.Path == "/wails/custom.js" { // custom.js 未使用,返回空响应避免 404 控制台报错 rw.Header().Set("Content-Type", "application/javascript") rw.WriteHeader(200) return } next.ServeHTTP(rw, req) }) }, }, Mac: application.MacOptions{ ApplicationShouldTerminateAfterLastWindowClosed: true, }, Windows: application.WindowsOptions{ WndProcInterceptor: func(hwnd uintptr, msg uint32, wParam, lParam uintptr) (uintptr, bool) { switch msg { case hotkey.WM_APP_HOTKEY: app.RegisterGlobalHotkey() return 0, true case hotkey.WM_HOTKEY: if wParam == 1 { app.HandleHotkey() return 0, true } } return 0, false }, }, }) window := application.Get().Window.NewWithOptions(application.WebviewWindowOptions{ Title: "U-Desk", Width: 1400, Height: 900, MinWidth: 1000, MinHeight: 600, BackgroundColour: application.NewRGB(255, 255, 255), URL: "/", Frameless: true, // 保留 Windows 11 原生装饰(圆角 + Aero 阴影) Windows: application.WindowsWindow{ Theme: application.SystemDefault, CustomTheme: application.ThemeSettings{ LightModeActive: &application.WindowTheme{ TitleBarColour: &titleBarLight, BorderColour: &titleBarLight, }, DarkModeActive: &application.WindowTheme{ TitleBarColour: &titleBarDark, BorderColour: &titleBarDark, }, }, }, }) app.SetMainWindow(window) // production+devtools 模式下 OpenInspectorOnStartup 不生效(需 debugMode=true) // 手动延迟调用 OpenDevTools 弹出 Inspector // TODO: 替换为 OnDomReady 回调,当前 alpha.80 可能未稳定支持 go func() { time.Sleep(2 * time.Second) window.OpenDevTools() }() if err := wailsApp.Run(); err != nil { println("Error:", err.Error()) } }