💡 Suggestion
This is a research document to inform design decisions for the "Separate" tray mode. The primary objective is to understand platform-specific limitations, user expectations, and UX best practices when displaying multiple system tray icons simultaneously.
🎯 Objective
Document the practical and technical limits for system tray icons across all desktop platforms (Linux, macOS, Windows) to inform:
- Maximum icon count before implementing overflow/collapse logic
- Default settings recommendations
- Fallback strategies for constrained environments
- Warning messages for users exceeding limits
Key Questions:
- What's the hard technical limit (OS/API enforced)?
- What's the soft UX limit (where UI becomes unusable)?
- How do popular apps handle many tray icons?
- What happens when limits are exceeded?
🪟 Windows (10/11)
Technical Limits
- Hard Limit: No documented API limit on number of tray icons [web:32][web:33]
- Display Limit: Taskbar overflows into "hidden icons" area automatically
- Icon Size: 16×16px standard (32×32 for high DPI) [web:36]
Observed Behavior
- Windows 11 shows ~3-6 icons by default in notification area
- Additional icons go to overflow menu (clicking ^ arrow)
- User Configurable: Settings → Personalization → Taskbar → "Select which icons appear on the taskbar" [web:36]
- No strict maximum, but performance degrades with 50+ icons (anecdotal)
UX Considerations
- Users expect overflow behavior (industry standard)
- Windows 11 has more aggressive hiding than Windows 10
- Spacing issues reported when many icons present [web:32][web:42]
Recommendations
- Default: Show 5 most recent/active plugins in tray
- Max: 10-15 icons before forcing overflow
- UI: Provide settings to pin specific plugins (like Windows native)
🍎 macOS
Technical Limits
- Hard Limit: No API limit, but constrained by menu bar width
- Display Limit: Depends on screen size and notch (MacBook Pro 14"/16") [web:37][web:43]
- Icon Size: 16×16pt (@1x), 32×32pt (@2x Retina) [web:40]
Observed Behavior
- MacBook Pro 16" with notch: ~12 icons max before clipping [web:37]
- iMac/Mac mini (no notch): ~20-25 icons depending on resolution
- Icons hidden by notch are inaccessible (major UX issue)
- Workaround: Hold ⌘ (CMD) and drag icons to reorder [web:37]
- Third-party solutions: Bartender 5, Dozer (hide/show icons) [web:37][web:48]
macOS Sequoia (15+) Improvements
- Native menu bar management in System Settings [web:48]
- Apps can request permission to show in menu bar
- User can rearrange with ⌘+Drag
- Custom spacing via Terminal:
defaults -currentHost write -globalDomain NSStatusItemSpacing -int 12
defaults -currentHost write -globalDomain NSStatusItemSelectionPadding -int 8
killall SystemUIServer
[web:43]
UX Considerations
- Notch is a disaster for apps with many tray icons
- Users actively use tools like Bartender to manage clutter
- Apple's design philosophy: fewer icons = better
Recommendations
- Default: Show 3-5 icons max on macOS (notch consideration)
- Max: 8 icons (safe for all screen sizes)
- Warning: Display notification on MacBook Pro when >5 icons active
- Future: Integrate with Bartender API if possible
🐧 Linux (GNOME/KDE/XFCE)
Technical Limits - Highly Desktop Environment Dependent
GNOME (Default on Ubuntu, Fedora)
- Hard Limit: GNOME removed native tray support in 3.26 (2017) [web:38][web:47]
- Extensions Required:
- "Tray Icons: Reloaded" [web:44][web:49]
- "AppIndicator and KStatusNotifierItem Support"
- Icon Limit in Extension: Configurable (default ~10) [web:38][web:49]
- Status: Legacy tray is deprecated, StatusNotifierItem is preferred
KDE Plasma
- Hard Limit: No technical limit
- Display: System Tray widget can expand/collapse
- UX: Handles 20+ icons gracefully with overflow
XFCE
- Hard Limit: No technical limit
- Plugin:
xfce4-indicator-plugin for system tray
- Performance: Handles 15-20 icons well
Critical Issues
- GNOME: Tray icons disappear when screen locks [web:47]
- Wayland: Legacy X11 tray protocol doesn't work reliably
- Ubuntu: Uses AppIndicator (different API than StatusIcon)
Observed Behavior
- Most GNOME users rely on extensions (not default experience)
- Extensions allow setting max visible icons with "..." overflow [web:38]
- Apps that require tray on GNOME are heavily criticized [web:47]
UX Considerations
- GNOME users expect apps to NOT use tray (design philosophy)
- Many apps hide tray icon by default on GNOME
- KDE/XFCE users are more tray-friendly
Recommendations
- GNOME Detection: Check if tray extensions installed, warn if not
- Default: 5 icons on GNOME (with extension), 10 on KDE/XFCE
- Max: 8 icons (GNOME), 15 icons (KDE/XFCE)
- Fallback: If no tray available, use notifications + widgets only
- Documentation: Explain GNOME limitation in setup guide
📊 Comparative Analysis
| Platform |
Hard Limit |
Recommended Max |
Overflow Behavior |
User Control |
| Windows 10/11 |
None (API) |
10 icons |
Native overflow (^ menu) |
Settings UI |
| macOS |
Screen width |
8 icons (notch-safe) |
Icons disappear |
CMD+Drag, Bartender |
| Linux (KDE) |
None |
15 icons |
System tray expands |
Widget settings |
| Linux (GNOME) |
Extension-dependent |
5 icons |
Extension overflow |
Extension settings |
| Linux (XFCE) |
None |
10 icons |
Panel expands |
Manual |
🎨 Popular Apps Analysis
How They Handle Multiple Icons
Docker Desktop:
- Single unified icon
- Menu shows container status
- No multi-icon mode
Slack/Discord/Teams:
- One icon per workspace/server
- Users commonly have 3-5 icons
- No built-in overflow (relies on OS)
Spotify/iTunes/Media Players:
- Single icon with playback controls
- Updates tooltip/icon dynamically
Dropbox/OneDrive/Google Drive:
- Single icon
- Status shown via icon overlay (syncing/synced)
Observation: Most apps use single unified icon even when managing multiple resources. Multi-icon approaches are rare.
🚦 Recommended Implementation Strategy
Phase 1: Unified Mode (Current - v1.4.0)
✅ Single icon, all plugins in menu
✅ Works everywhere without limits
Phase 2: Separate Mode with Smart Limits (v1.6.0)
Default Behavior
final int maxIconsByPlatform = {
'windows': 10,
'macos': 5, // Notch-safe
'linux-gnome': 5, // Extension limit consideration
'linux-kde': 15,
'linux-xfce': 10,
};
User Settings
tray:
mode: unified | separate | smart
max_icons: 5 # Override platform default
priority_plugins: [cpu, memory, battery] # Always visible
overflow_behavior: collapse | hide_least_recent
Smart Mode Logic
if (enabledPlugins.length <= platformMax) {
// Show all
for (plugin in enabledPlugins) {
createTrayIcon(plugin);
}
} else {
// Show priority + most recent
final visible = priorityPlugins + recentlyUpdated;
createUnifiedIcon("Crossbar (${enabledPlugins.length} plugins)");
// Menu shows all, tooltip shows count
}
Phase 3: Advanced Overflow (v1.7.0+)
- Collapsible groups ("System", "Network", "Media")
- Dynamic icon addition/removal on hover
- Integration with platform-specific tools (Bartender API)
⚠️ Warnings & User Education
Warning Messages
macOS (>5 icons on notch MacBook):
⚠️ Warning: Your MacBook has a notch. With 8 plugins enabled,
some tray icons may be hidden. Consider:
- Using Unified mode (Settings → Tray)
- Installing Bartender 5 for better icon management
- Disabling non-essential plugins
GNOME (no extension detected):
❌ System tray not available on GNOME.
To use Separate mode, install one of these extensions:
- Tray Icons: Reloaded (recommended)
- AppIndicator Support
Or switch to Unified mode (Settings → Tray).
Windows/Linux (>15 icons):
ℹ️ You have 18 plugins enabled.
For better performance, consider:
- Pinning only essential plugins to tray
- Using Unified mode for others
🔬 Testing Checklist
Per-Platform Tests
Edge Cases
📚 References
Windows
macOS
Linux
Cross-Platform
✅ Acceptance Criteria
📝 Deliverables
- Research Report (this issue, updated with findings)
- Platform Compatibility Matrix (markdown table)
- Recommended Defaults (config values)
- Warning Message Templates (for UI)
- Test Plan (edge cases per platform)
Related Issues:
Milestone: v1.5.0 (inform design) / v1.6.0 (apply findings)
Priority: Medium
Type: Research & Documentation
Estimated Effort: 1 week (testing + documentation)
💡 Suggestion
This is a research document to inform design decisions for the "Separate" tray mode. The primary objective is to understand platform-specific limitations, user expectations, and UX best practices when displaying multiple system tray icons simultaneously.
🎯 Objective
Document the practical and technical limits for system tray icons across all desktop platforms (Linux, macOS, Windows) to inform:
Key Questions:
🪟 Windows (10/11)
Technical Limits
Observed Behavior
UX Considerations
Recommendations
🍎 macOS
Technical Limits
Observed Behavior
macOS Sequoia (15+) Improvements
UX Considerations
Recommendations
🐧 Linux (GNOME/KDE/XFCE)
Technical Limits - Highly Desktop Environment Dependent
GNOME (Default on Ubuntu, Fedora)
KDE Plasma
XFCE
xfce4-indicator-pluginfor system trayCritical Issues
Observed Behavior
UX Considerations
Recommendations
📊 Comparative Analysis
🎨 Popular Apps Analysis
How They Handle Multiple Icons
Docker Desktop:
Slack/Discord/Teams:
Spotify/iTunes/Media Players:
Dropbox/OneDrive/Google Drive:
Observation: Most apps use single unified icon even when managing multiple resources. Multi-icon approaches are rare.
🚦 Recommended Implementation Strategy
Phase 1: Unified Mode (Current - v1.4.0)
✅ Single icon, all plugins in menu
✅ Works everywhere without limits
Phase 2: Separate Mode with Smart Limits (v1.6.0)
Default Behavior
User Settings
Smart Mode Logic
Phase 3: Advanced Overflow (v1.7.0+)
Warning Messages
macOS (>5 icons on notch MacBook):
GNOME (no extension detected):
Windows/Linux (>15 icons):
🔬 Testing Checklist
Per-Platform Tests
Edge Cases
📚 References
Windows
macOS
Linux
Cross-Platform
lib/services/tray_service.dart✅ Acceptance Criteria
max_iconsvalues per platform📝 Deliverables
Related Issues:
Milestone: v1.5.0 (inform design) / v1.6.0 (apply findings)
Priority: Medium
Type: Research & Documentation
Estimated Effort: 1 week (testing + documentation)