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)