Overview
Spaces help you:Organize Tabs
Group related tabs together by project or topic
Visual Separation
Customize each Space with unique colors and icons
Quick Switching
Switch between Spaces with keyboard shortcuts (Ctrl+1-9)
Profile Isolation
Each Space belongs to a specific profile
Creating and Managing Spaces
Space Data Structure
Each Space stores the following data (src/main/controllers/spaces-controller/raw.ts):
Switching Between Spaces
Keyboard Shortcuts
Spaces can be quickly accessed using keyboard shortcuts:| Shortcut | Action |
|---|---|
Ctrl + 1 | Switch to Space 1 |
Ctrl + 2 | Switch to Space 2 |
Ctrl + 3 | Switch to Space 3 |
| … | … |
Ctrl + 9 | Switch to Space 9 |
Shortcuts are generated in the application menu at
src/main/controllers/app-menu-controller/menu/items/spaces.ts:132Menu Access
Spaces appear in the application menu with:- Visual icons (on macOS using SVG rendering)
- Checkmark indicating the currently active Space
- Keyboard accelerators displayed
Space Icons
Spaces support icons from the Phosphor Icons library. The icon system:- Uses duotone style icons
- Converts PascalCase names to icon paths
- Renders as white SVG on macOS menu items
- Falls back to “dot-outline” if icon not found
Icon Implementation
The icon rendering is handled atsrc/main/controllers/app-menu-controller/menu/items/spaces.ts:23-104:
API Operations
The Spaces system provides the following IPC handlers for renderer processes:spaces:get-all
spaces:get-all
Get all Spaces across all profiles
spaces:get-from-profile
spaces:get-from-profile
Get all Spaces within a specific profile
spaces:create
spaces:create
Create a new Space in a profile
spaces:update
spaces:update
Update Space properties like name, icon, or theme
spaces:delete
spaces:delete
Delete a Space and all its tabs
spaces:set-using
spaces:set-using
Switch the current window to a different Space
Space Controller Architecture
TheSpacesController at src/main/controllers/spaces-controller/index.ts:25 manages all Space operations:
Caching Strategy
- Spaces are lazily loaded per-profile
- In-memory cache avoids repeated disk reads
- Cache invalidation on update/delete operations
- Automatic reconciliation when data changes
Event System
The controller emits events for state changes:src/main/ipc/session/spaces.ts:57-62:
Window-Space Relationship
Each browser window tracks its current Space:src/main/ipc/session/spaces.ts:52-55:
Space Ordering
Spaces can be reordered within a profile using thereorder operation:
order field for each Space and re-sorts the display order.
Last Used Space
The system tracks when Spaces were last accessed:Default Space Creation
When a new profile is created, a default Space is automatically created with the same name as the profile (src/main/controllers/profiles-controller/raw.ts:94-99):
Use Cases
Project Organization
Create separate Spaces for each project you’re working on
Context Switching
Quickly switch between work, research, and entertainment contexts
Research
Keep related research tabs together in a dedicated Space
Development
Separate development, staging, and production environments