mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-03 09:46:54 +02:00
239 lines
5.5 KiB
Markdown
239 lines
5.5 KiB
Markdown
|
|
---
|
||
|
|
description: DSC configuration reference for PowerToys Workspaces module
|
||
|
|
ms.date: 10/18/2025
|
||
|
|
ms.topic: reference
|
||
|
|
title: Workspaces Module
|
||
|
|
---
|
||
|
|
|
||
|
|
# Workspaces Module
|
||
|
|
|
||
|
|
## Synopsis
|
||
|
|
|
||
|
|
Manages configuration for the Workspaces utility, which launches application sets and arranges windows.
|
||
|
|
|
||
|
|
## Description
|
||
|
|
|
||
|
|
The `Workspaces` module configures PowerToys Workspaces, a utility that allows
|
||
|
|
you to save and restore sets of applications with their window positions. It
|
||
|
|
enables you to quickly switch between different work contexts by launching and
|
||
|
|
arranging multiple applications at once.
|
||
|
|
|
||
|
|
## Properties
|
||
|
|
|
||
|
|
The Workspaces module supports the following configurable properties:
|
||
|
|
|
||
|
|
### LaunchHotkey
|
||
|
|
|
||
|
|
Sets the keyboard shortcut to launch the Workspaces editor.
|
||
|
|
|
||
|
|
**Type:** object
|
||
|
|
**Properties:**
|
||
|
|
|
||
|
|
- `win` (boolean) - Windows key modifier
|
||
|
|
- `ctrl` (boolean) - Ctrl key modifier
|
||
|
|
- `alt` (boolean) - Alt key modifier
|
||
|
|
- `shift` (boolean) - Shift key modifier
|
||
|
|
- `code` (integer) - Virtual key code
|
||
|
|
- `key` (string) - Key name
|
||
|
|
|
||
|
|
**Default:** `Win+Shift+;` (VK code 186)
|
||
|
|
|
||
|
|
### MoveExistingWindows
|
||
|
|
|
||
|
|
Controls whether existing application windows are moved when launching a workspace.
|
||
|
|
|
||
|
|
**Type:** boolean
|
||
|
|
**Default:** `false`
|
||
|
|
|
||
|
|
### SpanZonesAcrossMonitors
|
||
|
|
|
||
|
|
Controls whether workspace zones can span across multiple monitors.
|
||
|
|
|
||
|
|
**Type:** boolean
|
||
|
|
**Default:** `false`
|
||
|
|
|
||
|
|
## Examples
|
||
|
|
|
||
|
|
### Example 1 - Configure launch hotkey with direct execution
|
||
|
|
|
||
|
|
This example sets a custom hotkey to launch the Workspaces editor.
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
$config = @{
|
||
|
|
settings = @{
|
||
|
|
properties = @{
|
||
|
|
LaunchHotkey = @{
|
||
|
|
win = $true
|
||
|
|
ctrl = $true
|
||
|
|
alt = $false
|
||
|
|
shift = $false
|
||
|
|
code = 87
|
||
|
|
key = "W"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
name = "Workspaces"
|
||
|
|
version = "1.0"
|
||
|
|
}
|
||
|
|
} | ConvertTo-Json -Depth 10 -Compress
|
||
|
|
|
||
|
|
PowerToys.DSC.exe set --resource 'settings' --module Workspaces --input $config
|
||
|
|
```
|
||
|
|
|
||
|
|
### Example 2 - Configure window behavior with DSC
|
||
|
|
|
||
|
|
This example enables moving existing windows when launching workspaces.
|
||
|
|
|
||
|
|
```bash
|
||
|
|
dsc config set --file workspaces-behavior.dsc.yaml
|
||
|
|
```
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
# workspaces-behavior.dsc.yaml
|
||
|
|
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
|
||
|
|
resources:
|
||
|
|
- name: Configure Workspaces window behavior
|
||
|
|
type: Microsoft.PowerToys/WorkspacesSettings
|
||
|
|
properties:
|
||
|
|
settings:
|
||
|
|
properties:
|
||
|
|
MoveExistingWindows: true
|
||
|
|
SpanZonesAcrossMonitors: false
|
||
|
|
name: Workspaces
|
||
|
|
version: 1.0
|
||
|
|
```
|
||
|
|
|
||
|
|
### Example 3 - Install and configure with WinGet
|
||
|
|
|
||
|
|
This example installs PowerToys and configures Workspaces.
|
||
|
|
|
||
|
|
```bash
|
||
|
|
winget configure winget-workspaces.yaml
|
||
|
|
```
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
# winget-workspaces.yaml
|
||
|
|
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json
|
||
|
|
metadata:
|
||
|
|
winget:
|
||
|
|
processor: dscv3
|
||
|
|
resources:
|
||
|
|
- name: Install PowerToys
|
||
|
|
type: Microsoft.WinGet.DSC/WinGetPackage
|
||
|
|
properties:
|
||
|
|
id: Microsoft.PowerToys
|
||
|
|
source: winget
|
||
|
|
|
||
|
|
- name: Configure Workspaces
|
||
|
|
type: Microsoft.PowerToys/WorkspacesSettings
|
||
|
|
properties:
|
||
|
|
settings:
|
||
|
|
properties:
|
||
|
|
LaunchHotkey:
|
||
|
|
win: true
|
||
|
|
ctrl: false
|
||
|
|
alt: false
|
||
|
|
shift: true
|
||
|
|
code: 186
|
||
|
|
key: ";"
|
||
|
|
MoveExistingWindows: true
|
||
|
|
name: Workspaces
|
||
|
|
version: 1.0
|
||
|
|
```
|
||
|
|
|
||
|
|
### Example 4 - Multi-monitor setup
|
||
|
|
|
||
|
|
This example configures for multi-monitor workspace management.
|
||
|
|
|
||
|
|
```bash
|
||
|
|
dsc config set --file workspaces-multimonitor.dsc.yaml
|
||
|
|
```
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
# workspaces-multimonitor.dsc.yaml
|
||
|
|
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
|
||
|
|
resources:
|
||
|
|
- name: Multi-monitor configuration
|
||
|
|
type: Microsoft.PowerToys/WorkspacesSettings
|
||
|
|
properties:
|
||
|
|
settings:
|
||
|
|
properties:
|
||
|
|
SpanZonesAcrossMonitors: true
|
||
|
|
MoveExistingWindows: true
|
||
|
|
name: Workspaces
|
||
|
|
version: 1.0
|
||
|
|
```
|
||
|
|
|
||
|
|
### Example 5 - Simple hotkey
|
||
|
|
|
||
|
|
This example sets a simple single-key hotkey combination.
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
$config = @{
|
||
|
|
settings = @{
|
||
|
|
properties = @{
|
||
|
|
LaunchHotkey = @{
|
||
|
|
win = $true
|
||
|
|
ctrl = $false
|
||
|
|
alt = $true
|
||
|
|
shift = $false
|
||
|
|
code = 192
|
||
|
|
key = "~"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
name = "Workspaces"
|
||
|
|
version = "1.0"
|
||
|
|
}
|
||
|
|
} | ConvertTo-Json -Depth 10 -Compress
|
||
|
|
|
||
|
|
PowerToys.DSC.exe set --resource 'settings' --module Workspaces --input $config
|
||
|
|
```
|
||
|
|
|
||
|
|
## Use cases
|
||
|
|
|
||
|
|
### Development environments
|
||
|
|
|
||
|
|
Configure for quick switching between development workspaces:
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
resources:
|
||
|
|
- name: Development workspace
|
||
|
|
type: Microsoft.PowerToys/WorkspacesSettings
|
||
|
|
properties:
|
||
|
|
settings:
|
||
|
|
properties:
|
||
|
|
MoveExistingWindows: true
|
||
|
|
SpanZonesAcrossMonitors: true
|
||
|
|
name: Workspaces
|
||
|
|
version: 1.0
|
||
|
|
```
|
||
|
|
|
||
|
|
### Single monitor usage
|
||
|
|
|
||
|
|
Configure for single-monitor workflow:
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
resources:
|
||
|
|
- name: Single monitor setup
|
||
|
|
type: Microsoft.PowerToys/WorkspacesSettings
|
||
|
|
properties:
|
||
|
|
settings:
|
||
|
|
properties:
|
||
|
|
SpanZonesAcrossMonitors: false
|
||
|
|
MoveExistingWindows: false
|
||
|
|
name: Workspaces
|
||
|
|
version: 1.0
|
||
|
|
```
|
||
|
|
|
||
|
|
## See also
|
||
|
|
|
||
|
|
- [Settings Resource][01]
|
||
|
|
- [PowerToys DSC Overview][02]
|
||
|
|
- [ColorPicker Module][03] - For additional PowerToys configuration
|
||
|
|
- [PowerToys Workspaces Documentation][04]
|
||
|
|
|
||
|
|
<!-- Link reference definitions -->
|
||
|
|
[01]: ../settings-resource.md
|
||
|
|
[02]: ../overview.md
|
||
|
|
[03]: ./ColorPicker.md
|
||
|
|
[04]: https://learn.microsoft.com/windows/powertoys/workspaces
|