diff --git a/README.md b/README.md index e53158e..f42fdf3 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,8 @@ - [x] 系统通知 - [x] 清理历史 - [x] 自动接收 -- [ ] 应用图标 -- [ ] 系统托盘(最小化到托盘) +- [x] 应用图标 +- [ ] 系统托盘(最小化到托盘)徽章 https://github.com/wailsapp/wails/issues/4494 - [ ] 收藏Peer - [ ] 多语言 diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..5b1a591 --- /dev/null +++ b/build.sh @@ -0,0 +1,4 @@ +#!/bin/bash +go-task linux:build +go-task windows:build +go-task linux:create:aur diff --git a/build/appicon.png b/build/appicon.png index 63617fe..c5b11b9 100644 Binary files a/build/appicon.png and b/build/appicon.png differ diff --git a/build/darwin/icons.icns b/build/darwin/icons.icns index 1b5bd4c..eff9411 100644 Binary files a/build/darwin/icons.icns and b/build/darwin/icons.icns differ diff --git a/build/linux/desktop b/build/linux/desktop index 657f23e..5d7deab 100644 --- a/build/linux/desktop +++ b/build/linux/desktop @@ -1,6 +1,6 @@ [Desktop Entry] Version=1.0 -Name=My Product +Name=MeshDrop Comment=A mesh-drop application # The Exec line includes %u to pass the URL to the application Exec=/usr/local/bin/mesh-drop %u diff --git a/build/linux/nfpm/nfpm.yaml b/build/linux/nfpm/nfpm.yaml index 8a2723f..87e4f90 100644 --- a/build/linux/nfpm/nfpm.yaml +++ b/build/linux/nfpm/nfpm.yaml @@ -6,13 +6,13 @@ name: "mesh-drop" arch: ${GOARCH} platform: "linux" -version: "0.1.0" +version: "0.0.3" section: "default" priority: "extra" maintainer: ${GIT_COMMITTER_NAME} <${GIT_COMMITTER_EMAIL}> description: "A mesh-drop application" -vendor: "My Company" -homepage: "https://wails.io" +vendor: "nite" +homepage: "https://www.nite07.com" license: "MIT" release: "1" @@ -36,8 +36,8 @@ overrides: depends: - gtk3 - webkit2gtk4.1 - - # Arch Linux packages (WebKit 4.1) + + # Arch Linux packages (WebKit 4.1) archlinux: depends: - gtk3 diff --git a/build/windows/icon.ico b/build/windows/icon.ico index bfa0690..68167ed 100644 Binary files a/build/windows/icon.ico and b/build/windows/icon.ico differ diff --git a/frontend/index.html b/frontend/index.html index e4011f6..f267ac9 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -6,6 +6,7 @@ Mesh Drop + diff --git a/frontend/src/assets/icon.svg b/frontend/src/assets/icon.svg new file mode 100644 index 0000000..3c427e8 --- /dev/null +++ b/frontend/src/assets/icon.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/config/config.go b/internal/config/config.go index 8bd2e1c..8db96ed 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -91,6 +91,12 @@ func Load() *Config { } } + // 确保默认保存路径存在 + err = os.MkdirAll(defaultSavePath, 0755) + if err != nil { + slog.Error("Failed to create default save path", "path", defaultSavePath, "error", err) + } + var config Config if err := v.Unmarshal(&config); err != nil { slog.Error("Failed to unmarshal config", "error", err) diff --git a/internal/discovery/service.go b/internal/discovery/service.go index 557bb06..a1fa1bc 100644 --- a/internal/discovery/service.go +++ b/internal/discovery/service.go @@ -31,10 +31,6 @@ type Service struct { peersMutex sync.RWMutex } -func init() { - application.RegisterEvent[[]Peer]("peers:update") -} - func NewService(config *config.Config, app *application.App, port int) *Service { return &Service{ app: app, diff --git a/internal/transfer/service.go b/internal/transfer/service.go index 804e929..d055b92 100644 --- a/internal/transfer/service.go +++ b/internal/transfer/service.go @@ -59,10 +59,6 @@ func NewService(config *config.Config, app *application.App, notifier *notificat } } -func init() { - application.RegisterEvent[application.Void]("transfer:refreshList") -} - func (s *Service) GetPort() int { return s.port } diff --git a/main.go b/main.go index a6c4e56..31749a7 100644 --- a/main.go +++ b/main.go @@ -16,6 +16,9 @@ import ( //go:embed all:frontend/dist var assets embed.FS +//go:embed build/appicon.png +var icon []byte + type FilesDroppedEvent struct { Files []string `json:"files"` Target string `json:"target"` @@ -32,15 +35,10 @@ func main() { SingleInstance: &application.SingleInstanceOptions{ UniqueID: "com.nite07.mesh-drop", }, + Icon: icon, }) - // 创建保存路径 - err := os.MkdirAll(conf.SavePath, 0755) - if err != nil { - slog.Error("Failed to create save path", "path", conf.SavePath, "error", err) - } - - // 通知 + // 初始化通知服务 notifier := notifications.New() authorized, err := notifier.RequestNotificationAuthorization() if err != nil { @@ -94,7 +92,11 @@ func main() { }) // 窗口关闭事件 - window.OnWindowEvent(events.Common.WindowClosing, func(event *application.WindowEvent) { + // window.OnWindowEvent(events.Common.WindowClosing, func(event *application.WindowEvent) { + // }) + + // 应用关闭事件 + app.OnShutdown(func() { x, y := window.Position() width, height := window.Size() conf.SetWindowState(config.WindowState{ @@ -116,13 +118,18 @@ func main() { } }) + // 注册事件 application.RegisterEvent[FilesDroppedEvent]("files-dropped") + application.RegisterEvent[[]discovery.Peer]("peers:update") + application.RegisterEvent[application.Void]("transfer:refreshList") + // 设置日志 logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{ Level: slog.LevelDebug, })) slog.SetDefault(logger) + // 运行应用 err = app.Run() if err != nil { panic(err)