Overview
Workspaces saves:- Running applications
- Window positions and sizes
- Window states (maximized, minimized, snapped)
- Multi-monitor arrangements
- Application arguments and parameters
Activation
Creating Workspaces
Capture Current Layout
The easiest way to create a workspace is from your current setup:Manual Workspace Creation
- Add Applications
- Configure Position
Build workspace from scratch:
- Create new workspace
- Click “Add Application”
- Browse for executable or select from list
- Configure window position and size
- Repeat for all apps in workflow
- Save workspace
Workspace Components
From source/src/modules/Workspaces/WorkspacesLauncher/Launcher.h:11-37:
- WorkspacesProject: Container for workspace data
- LauncherUIHelper: Handles UI during launch
- WindowArrangerHelper: Positions windows after launch
- LaunchingStatus: Tracks launch progress
Launching Workspaces
Launch Process
Launch Behavior
Launch Behavior
When launching a workspace:
- Applications start in parallel for faster launch
- Window positioning waits for applications to initialize
- Errors are tracked and reported
- Progress indicator shows launch status
- Timeout handling for unresponsive applications
/src/modules/Workspaces/WorkspacesLauncher/Launcher.cppInvoke Points
Workspaces can be launched from multiple locations: From source/src/modules/Workspaces/WorkspacesLauncher/Launcher.h:20:
- Workspaces UI: Manual launch from editor
- Command line: Launch via CLI arguments
- Shortcuts: Keyboard shortcuts or desktop shortcuts
- Startup: Auto-launch on Windows login
Features
Multi-Monitor Support
Monitor Awareness
Monitor Awareness
Workspaces handles multiple monitors intelligently:
- Save window positions relative to specific monitors
- Restore layouts across different monitor configurations
- Adapt to missing monitors (fallback to primary)
- Handle monitor resolution changes
- Support mixed DPI setups
Application Launch Configuration
Launch Parameters
Launch Parameters
Configure how applications start:
- Executable path: Full path to application
- Command-line arguments: Startup parameters
- Working directory: Starting folder
- Run as administrator: Elevated privileges (if needed)
- Window state: Normal, maximized, minimized
Position Persistence
Position Persistence
Window positions are saved with:
- X, Y coordinates
- Width and height
- Monitor identifier
- Snap state (if snapped)
- Maximized/minimized state
/src/modules/Workspaces/WindowProperties/WorkspacesWindowPropertyUtils.hWindow Arrangement
From source/src/modules/Workspaces/WorkspacesLauncher/WindowArrangerHelper.h:
Window Arranger
Window Arranger
The Window Arranger component:
- Waits for applications to finish initializing
- Detects when windows are ready to be positioned
- Applies saved positions and sizes
- Handles window snap states
- Manages Z-order (window stacking)
- Sends messages to coordinator
Registry Integration
For persistent application data: Implementation:/src/modules/Workspaces/WorkspacesLauncher/RegistryUtils.h, RegistryUtils.cpp
- Store workspace configurations
- Persist application associations
- Remember last used workspaces
- Track launch statistics
Use Cases
Development Environments
Project Contexts:
- Code editor + terminal + browser + debugger
- Different layouts for frontend/backend work
- Switch between multiple projects instantly
- Documentation + IDE + testing tools
Content Creation
Creative Workflows:
- Video editing + audio tools + file browser
- Design tools + reference images + color palettes
- Writing + research + notes
- 3D modeling + rendering + asset management
Communication
Meeting Setups:
- Video conferencing + notes + calendar + chat
- Presentation + speaker notes + timer
- Screen share preparation
- Team collaboration tools
Research & Analysis
Data Workflows:
- Spreadsheet + database + visualization
- Multiple document viewers
- Research papers + note-taking + citation manager
- Financial analysis tools
Daily Routines
Daily Routines
Morning Startup:
- Email client + calendar + task manager + news
- Positioned for productivity
- Launch with Windows startup
- Save time every day
Context Switching
Context Switching
Multiple Projects:
- Quickly switch between client projects
- Different toolsets for different work
- Separate workspaces for work/personal
- Meeting vs. focus time layouts
Teaching & Presentations
Teaching & Presentations
Training Sessions:
- Demo applications + slides + notes
- Screen recording setup
- Virtual classroom layout
- Workshop preparation
Advanced Features
Launch Status Tracking
From source/src/modules/Workspaces/WorkspacesLauncher/Launcher.h:23:
- Which applications have launched
- Which windows have been positioned
- Launch errors and failures
- Overall workspace launch success
Error Handling
Launch Error Management
Launch Error Management
From source Workspaces handles:
/src/modules/Workspaces/WorkspacesLauncher/Launcher.h:31-32:- Application not found errors
- Insufficient permissions
- Timeout during launch
- Window positioning failures
- Monitor not available
Application Launcher
From source/src/modules/Workspaces/WorkspacesLauncher/AppLauncher.h:
App Launch Logic
App Launch Logic
The AppLauncher component:
- Resolves application paths
- Handles command-line arguments
- Manages working directories
- Supports elevation when needed
- Detects launch failures
- Returns process information
UI Helper
From source/src/modules/Workspaces/WorkspacesLauncher/LauncherUIHelper.h:
- Launch progress indication
- Error message display
- Status updates during launch
- User feedback during window arrangement
Configuration
Workspace Settings
Configure Options
Set global workspace preferences:
- Launch behavior
- Window arrangement timing
- Error handling
Keyboard Shortcuts
Set up shortcuts to launch workspaces:- Assign hotkeys to specific workspaces
- Quick switch between workspaces
- Launch most recent workspace
Troubleshooting
Applications Not Launching
Applications Not Launching
Common Issues:
- Application path changed or invalid
- Insufficient permissions (try “Run as administrator”)
- Application requires user interaction on startup
- Antivirus blocking automated launch
- Verify application paths in workspace configuration
- Update workspace with current application locations
- Check Windows Event Viewer for errors
- Whitelist PowerToys in security software
Windows Not Positioning Correctly
Windows Not Positioning Correctly
Possible Causes:
- Monitor configuration changed
- Application takes long to initialize
- DPI scaling differences
- Application overrides window position on startup
- Update workspace with current monitor setup
- Increase window arrangement delay
- Manually adjust positions after launch
- Check application startup settings
Missing Monitor Handling
Missing Monitor Handling
When a saved monitor is unavailable:
- Windows default to primary monitor
- Size/position may need adjustment
- Update workspace for current setup
Workspace Won't Launch
Workspace Won't Launch
Checklist:
- Verify Workspaces is enabled in PowerToys
- Check workspace file isn’t corrupted
- Ensure no applications are already running (if configured to avoid duplicates)
- Review launch errors in Workspaces UI
- Try launching applications individually
Best Practices
Organizing Workspaces
Organizing Workspaces
Naming Conventions:
- Use descriptive names: “Web Development” not “Workspace 1”
- Include context: “Client-ABC-Design” or “Morning-Routine”
- Add tags or prefixes: “[Work]” vs “[Personal]”
- Group related workspaces
- Separate by project, time of day, or task type
- Archive old/unused workspaces
Maintaining Workspaces
Maintaining Workspaces
Regular Updates:
- Update paths when applications move
- Refresh positions after monitor changes
- Remove deprecated applications
- Test workspaces periodically
- Export important workspaces as backup
- Document workspace purposes
- Keep notes on special configurations
Performance Tips
Performance Tips
Optimize Launch Times:
- Limit number of applications (< 10 per workspace)
- Avoid heavy applications that take long to start
- Use SSD for application installations
- Close resource-intensive apps before launching workspace
- Allow sufficient delay for app initialization
- Test different timing settings
- Consider manual positioning for problematic apps
Source Code
Location:/src/modules/Workspaces/
- Launcher:
WorkspacesLauncher/Launcher.h,Launcher.cpp - Application launching:
WorkspacesLauncher/AppLauncher.h,AppLauncher.cpp - Window arrangement:
WorkspacesLauncher/WindowArrangerHelper.h,WindowArrangerHelper.cpp - UI helper:
WorkspacesLauncher/LauncherUIHelper.h,LauncherUIHelper.cpp - Registry utilities:
WorkspacesLauncher/RegistryUtils.h,RegistryUtils.cpp - Window properties:
WindowProperties/WorkspacesWindowPropertyUtils.h