Goal
Allow BeamSync to minimize to the system tray (notification area) so file receiving continues in the background when the window is closed.
Deliverables
1. System Tray Integration
- Add system tray icon using Wails runtime
Menu API or platform-specific libraries
- Tray icon: use the existing BeamSync logo or a simplified icon
- Tray menu with options:
- Show Window — restores the main Wails window
- Quit — exits the application
- Close/minimize button should hide to tray instead of quitting
- Single click on tray icon toggles window visibility
2. Background Receiving
- HTTP receiver continues running when window is hidden
- Optional desktop notification on file received (using Wails runtime.Notify or libnotify)
- Tray icon badge or subtle visual change when a transfer completes in background
3. Platform Support
- Linux: use
AppIndicator or gtk.StatusIcon via Wails systray support
- Graceful fallback if tray is not available (e.g. Wayland without status-notifier)
Design Notes
- Tray title: "BeamSync"
- Tray tooltip: show current server URL or active transfer count
- No additional Go dependencies beyond what Wails provides
Acceptance Criteria
References
desktop/main.go — Wails entry point, window creation
desktop/app.go — app lifecycle (start/stop server)
desktop/wails.json — Wails configuration
- Existing logo at
beamsync/ui/logo.png
Points (GSSoC)
- Difficulty: beginner
- Type: feature
- Base Score: 50 + (1 x 1) + 10 = 61 points
- Labels:
level:beginner, type:feature, gssoc:approved
Goal
Allow BeamSync to minimize to the system tray (notification area) so file receiving continues in the background when the window is closed.
Deliverables
1. System Tray Integration
MenuAPI or platform-specific libraries2. Background Receiving
3. Platform Support
AppIndicatororgtk.StatusIconvia Wails systray supportDesign Notes
Acceptance Criteria
References
desktop/main.go— Wails entry point, window creationdesktop/app.go— app lifecycle (start/stop server)desktop/wails.json— Wails configurationbeamsync/ui/logo.pngPoints (GSSoC)
level:beginner,type:feature,gssoc:approved