This guide provides detailed instructions for generating professional screenshots for OpenAdapt Tray documentation.
- Prerequisites
- Quick Start
- Screenshot List
- Manual Capture Instructions
- Automated Helper Script
- Post-Processing
- Adding to Documentation
- OpenAdapt Tray installed:
pip install -e .in/Users/abrichr/oa/src/openadapt-tray - Screenshot tool:
- macOS: Built-in (Cmd+Shift+4 or Cmd+Shift+5)
- Windows: Snipping Tool or Snip & Sketch (Win+Shift+S)
- Linux: gnome-screenshot, flameshot, or spectacle
- Image editor: For cropping and annotations
- macOS: Preview (built-in) or Pixelmator
- Cross-platform: GIMP, Photoshop
- GIF creation: For animated demos
- macOS: Gifski or LICEcap
- Cross-platform: ScreenToGif, Peek
macOS:
- Notification permissions enabled for Python/Terminal
- System Preferences → Notifications → Python/Terminal → Allow notifications
- Do Not Disturb disabled temporarily
Windows:
- Focus Assist disabled temporarily
- Notifications enabled for Python
Linux:
- Notification daemon running
- Desktop environment supports notifications
cd /Users/abrichr/oa/src/openadapt-tray
python generate_screenshots.pyThis script will:
- Display a countdown before each screenshot
- Trigger notifications automatically
- Give you time to capture each screenshot
- Guide you through the entire process
- Run the tray app:
python -m openadapt_tray - Follow the Manual Capture Instructions below
- Capture screenshots using OS screenshot tool
These screenshots are critical for documentation:
| # | Filename | Description | State | Instructions |
|---|---|---|---|---|
| 1 | tray-icon-idle.png |
Tray icon in idle state | Idle | Capture menu bar with icon visible |
| 2 | notification-basic.png |
Basic notification popup | Any | Show "Recording Started" notification |
| 3 | notification-critical.png |
Critical error notification | Any | Show critical error notification |
| 4 | notification-center.png |
Notification Center with grouped | Any | Open NC, show multiple notifications |
| 5 | menu-structure.png |
Full tray menu | Idle | Right-click icon, capture menu |
These enhance documentation but aren't critical:
| # | Filename | Description | State | Instructions |
|---|---|---|---|---|
| 6 | tray-icon-recording.png |
Icon during recording | Recording | Capture red pulsing icon |
| 7 | tray-icon-training.png |
Icon during training | Training | Capture purple gear icon |
| 8 | tray-icon-error.png |
Icon in error state | Error | Capture red exclamation icon |
| 9 | menu-recording.png |
Menu while recording | Recording | Show "Stop Recording" option |
| 10 | notification-callback.png |
Notification with action | Any | Show "Click to view" notification |
| 11 | system-settings.png |
System notification settings | Any | System Prefs → Notifications |
For comprehensive documentation:
| # | Filename | Description | State | Instructions |
|---|---|---|---|---|
| 12 | notification-buttons.png |
Notification with action buttons | Any | macOS only, show buttons |
| 13 | notification-reply.png |
Notification with reply field | Any | macOS only, show text field |
| 14 | menu-captures.png |
Recent captures submenu | Any | Show captures list |
| 15 | menu-training.png |
Training submenu | Any | Show training options |
# Terminal 1: Run tray app
cd /Users/abrichr/oa/src/openadapt-tray
python -m openadapt_tray
# Terminal 2: Trigger notifications (if needed)
python test_notification_simple.pySteps:
- Locate OpenAdapt icon in menu bar (top-right)
- Press
Cmd+Shift+4(cursor becomes crosshair) - Drag to select icon area
- Release to capture
- Screenshot saved to Desktop
Tips:
- Include surrounding menu bar for context
- Capture at 2x resolution (Retina) for clarity
- Save as:
tray-icon-idle.png
Steps:
- Trigger notification (using script or app action)
- Wait for notification to appear (top-right)
- Press
Cmd+Shift+4immediately - Drag to select notification popup
- Release to capture
Tips:
- Capture quickly - notifications fade after 5-10 seconds
- Include slight margin around notification
- For Notification Center view: Click bell icon first, then screenshot
- Save as:
notification-basic.png,notification-critical.png, etc.
Steps:
- Right-click (or click) tray icon
- Menu appears
- Press
Cmd+Shift+4 - Select menu area
- Release to capture
Tips:
- Include icon at top of menu
- Capture full menu, including separators
- Don't close menu while capturing
- Save as:
menu-structure.png
Steps:
- Click bell icon in menu bar (top-right)
- Notification Center slides out
- Press
Cmd+Shift+4 - Select Notification Center panel
- Release to capture
Tips:
- Show multiple notifications for "grouping" example
- Scroll to show notification history
- Save as:
notification-center.png
# PowerShell: Run tray app
cd C:\path\to\openadapt-tray
python -m openadapt_traySteps:
- Locate OpenAdapt icon in system tray (bottom-right)
- May need to click "Show hidden icons" arrow
- Press
Win+Shift+S - Select area to capture
- Notification appears: "Screenshot saved"
- Open Snip & Sketch to edit/save
Tips:
- Include taskbar for context
- Use rectangular snip mode
- Save as PNG
Steps:
- Trigger notification
- Action Center shows notification (bottom-right)
- Press
Win+Shift+S - Capture notification popup
- Save from Snip & Sketch
Tips:
- Windows notifications appear in Action Center
- Can replay from Action Center if missed
- Capture both popup and Action Center view
Steps:
- Right-click tray icon
- Context menu appears
- Press
Win+Shift+S - Capture menu
- Save from Snip & Sketch
Tips:
- Menu may close when pressing Win key - be quick!
- Alternative: Use Snipping Tool (pre-launch, delay mode)
# Terminal: Run tray app
cd /path/to/openadapt-tray
python -m openadapt_trayGNOME:
gnome-screenshot -a # Select areaKDE:
spectacle -r # Rectangular regionCLI:
flameshot gui # Interactive selectionTips:
- System tray location varies by desktop environment
- May be top panel or bottom panel
- Ensure icon is visible (not hidden)
Steps:
- Trigger notification
- Use screenshot tool quickly
- Capture notification popup
Tips:
- Notifications often disappear quickly on Linux
- Use
flameshot guifor quick interactive capture - GNOME notifications appear top-center
- KDE notifications appear bottom-right
cd /Users/abrichr/oa/src/openadapt-tray
python generate_screenshots.pyThe script:
- Initializes notification system
- Displays countdown before each screenshot
- Triggers notification or state
- Gives time to capture manually
- Guides through entire sequence
- Creates directory:
docs/screenshots/
OpenAdapt Tray Screenshot Generation Helper
================================================================================
This script will trigger various notifications and UI states.
Save screenshots to: /Users/abrichr/oa/src/openadapt-tray/docs/screenshots
Press Enter when ready to start...
Backend detected: desktop-notifier
Starting screenshot sequence...
================================================================================
Screenshot 1/10: Basic notification popup
File: 01-idle-icon.png
Instructions: Capture: Tray icon in idle state
Triggering in 3 seconds...
✓ Triggered! Capture screenshot now...
Time remaining in 5 seconds...
--------------------------------------------------------------------------------
Screenshot 2/10: Basic notification popup
File: 02-basic-notification.png
Instructions: Capture: Notification popup (Recording Started)
Triggering in 3 seconds...
✓ Triggered! Capture screenshot now...
Time remaining in 5 seconds...
...
Edit generate_screenshots.py to:
- Change timing (wait periods)
- Add more screenshots
- Modify notification text
- Add custom actions
Remove unnecessary background:
# macOS Preview
open screenshot.png
# Tools → Adjust Size → Crop
# Save
# ImageMagick (CLI)
convert screenshot.png -trim +repage screenshot-cropped.pngAdd arrows, text, highlights:
macOS Preview:
- Open image in Preview
- Tools → Annotate
- Add shapes, text, arrows
- Save
GIMP (cross-platform):
- Open image
- Use text tool, arrow tool
- Export as PNG
For Retina/high-DPI screenshots:
# Reduce to 50% for web
convert screenshot@2x.png -resize 50% screenshot.png
# Or keep 2x for documentation clarity
cp screenshot@2x.png screenshot.pngReduce file size:
# macOS/Linux
pngcrush screenshot.png screenshot-optimized.png
# Or use online tools
# TinyPNG: https://tinypng.com/openadapt-tray/
├── docs/
│ └── screenshots/
│ ├── tray-icon-idle.png
│ ├── tray-icon-recording.png
│ ├── notification-basic.png
│ ├── notification-critical.png
│ ├── menu-structure.png
│ └── notification-center.png
├── README.md
└── NOTIFICATIONS.md
Add screenshots to key sections:
## Features
- **System Tray Icon**: Shows in the menu bar (macOS) or system tray (Windows/Linux)

- **Native Notifications**: Modern notifications with desktop-notifier

## Menu Structure
Add to examples:
## Basic Usage
Shows a notification like this:

## Critical Notifications
Error notifications appear more prominently:
For animated workflows:
macOS:
# Using Gifski (install: brew install gifski)
# 1. Record video with QuickTime (Cmd+Shift+5)
# 2. Convert to GIF
gifski --fps 10 --quality 90 recording.mov -o workflow.gifCross-platform:
- ScreenToGif (Windows)
- Peek (Linux)
- LICEcap (macOS/Windows)
Add to docs:
## Recording Workflow
Before considering screenshots complete:
- All screenshots are clear and in focus
- Text is readable (high DPI if needed)
- No personal information visible
- Consistent styling across screenshots
- Appropriate file format (PNG for UI, JPG for photos)
- Optimized file sizes (<500KB each)
- Tray icon (at least idle state)
- Basic notification
- Critical/error notification
- Menu structure
- Notification Center view
- At least one state change (optional)
- Screenshots added to README.md
- Screenshots added to NOTIFICATIONS.md
- File paths correct
- Alt text provided for accessibility
- Captions explain what's shown
- Notifications: Capture within 5-10 seconds
- Menus: Can stay open while capturing
- Icons: Static, capture anytime
- Resolution: Capture at native resolution (Retina/2x on macOS)
- Format: PNG for UI screenshots (lossless)
- Size: Optimize but maintain clarity
- Background: Use same desktop background
- Theme: Use same system theme (light/dark)
- Time: Hide or crop clock if showing test data
- Personal info: Don't show real email, names, paths with usernames
- Notifications: Use example data, not real recordings
- Desktop: Clean desktop, no personal files visible
macOS:
# Check permissions
# System Preferences → Notifications → Python/Terminal
# Ensure: Allow Notifications is ON
# Check Python signing
codesign -dv $(which python3)
# If unsigned, use official python.org installerWindows:
# Check Focus Assist
# Settings → System → Focus Assist → Off
# Check notification settings
# Settings → System → Notifications & actionsLinux:
# Check notification daemon
ps aux | grep -i notif
# Install if missing (Ubuntu/Debian)
sudo apt install libnotify-bin
# Test
notify-send "Test" "Testing notifications"Issue: Menu closes when pressing screenshot key
Solution:
- Use screenshot tool with delay mode
- macOS: Cmd+Shift+5 → Options → Timer (5s or 10s)
- Windows: Snipping Tool → Mode → Window Snip → Delay (5s)
- Linux:
gnome-screenshot -d 5(5 second delay)
Solution:
# Resize
convert input.png -resize 50% output.png
# Optimize
pngcrush input.png output.png
# Or use online tool: https://tinypng.com/Complete screenshot capture session:
# 1. Setup
cd /Users/abrichr/oa/src/openadapt-tray
python -m openadapt_tray # Terminal 1
# 2. Run helper script
python generate_screenshots.py # Terminal 2
# 3. Follow prompts, capture each screenshot
# 4. Review screenshots
open docs/screenshots/
# 5. Post-process as needed
# - Crop
# - Annotate
# - Optimize
# 6. Add to documentation
# Edit README.md and NOTIFICATIONS.md
# 7. Commit
git add docs/screenshots/
git add README.md NOTIFICATIONS.md
git commit -m "docs: add screenshots for tray and notifications"- macOS: Built-in (Cmd+Shift+4/5)
- Windows: Snip & Sketch (Win+Shift+S), Snipping Tool
- Linux: gnome-screenshot, flameshot, spectacle
- Cross-platform: ShareX (Windows), Shutter (Linux)
- Basic: Preview (macOS), Paint (Windows), Gwenview (Linux)
- Advanced: GIMP (free), Photoshop, Pixelmator
- macOS: Gifski, LICEcap
- Windows: ScreenToGif, LICEcap
- Linux: Peek, gifcurry
- Online: TinyPNG, Squoosh
- CLI: pngcrush, optipng, imagemagick
This guide provides everything needed to generate professional screenshots for OpenAdapt Tray documentation. Use the automated helper script for notifications, and manual capture for tray icons and menus.
Quick workflow:
- Run
generate_screenshots.py - Capture suggested screenshots
- Post-process as needed
- Add to documentation
- Commit and share
Questions? See NOTIFICATIONS.md for notification details or README.md for general tray usage.