--- description: DSC configuration reference for PowerToys FancyZones module ms.date: 10/18/2025 ms.topic: reference title: FancyZones Module --- # FancyZones Module ## Synopsis Manages configuration for the FancyZones utility, a window layout manager that arranges and snaps windows into efficient layouts. ## Description The `FancyZones` module configures PowerToys FancyZones, a window manager utility that helps organize windows into custom layouts called zones. FancyZones allows you to create multiple zone layouts for different displays and quickly snap windows into position using keyboard shortcuts or mouse actions. This module controls activation methods, window behavior, zone appearance, editor settings, and other FancyZones preferences. ## Properties The FancyZones module supports the following configurable properties: ### fancyzones_shiftDrag Controls whether holding Shift while dragging a window activates zone snapping. **Type:** boolean **Default:** `true` ### fancyzones_mouseSwitch Controls whether moving a window across monitors triggers zone selection. **Type:** boolean **Default:** `false` ### fancyzones_overrideSnapHotkeys Controls whether FancyZones overrides the Windows Snap hotkeys (Win+Arrow keys). **Type:** boolean **Default:** `false` ### fancyzones_moveWindowsAcrossMonitors Controls whether moving windows between monitors is enabled. **Type:** boolean **Default:** `false` ### fancyzones_moveWindowsBasedOnPosition Controls whether windows move to zones based on cursor position rather than window position. **Type:** boolean **Default:** `false` ### fancyzones_overlappingZonesAlgorithm Determines the algorithm used when multiple zones overlap. **Type:** integer **Allowed values:** - `0` - Smallest zone - `1` - Largest zone - `2` - Positional (based on cursor/window position) **Default:** `0` ### fancyzones_displayOrWorkAreaChange_moveWindows Controls whether windows are moved to fit when display or work area changes. **Type:** boolean **Default:** `false` ### fancyzones_zoneSetChange_flashZones Controls whether zones flash briefly when the zone set changes. **Type:** boolean **Default:** `false` ### fancyzones_zoneSetChange_moveWindows Controls whether windows are automatically moved when the zone set changes. **Type:** boolean **Default:** `false` ### fancyzones_appLastZone_moveWindows Controls whether windows are moved to their last known zone when reopened. **Type:** boolean **Default:** `true` ### fancyzones_openWindowOnActiveMonitor Controls whether newly opened windows appear on the currently active monitor. **Type:** boolean **Default:** `false` ### fancyzones_spanZonesAcrossMonitors Controls whether zones can span across multiple monitors. **Type:** boolean **Default:** `false` ### fancyzones_makeDraggedWindowTransparent Controls whether dragged windows become transparent to show zones underneath. **Type:** boolean **Default:** `true` ### fancyzones_zoneColor Sets the color of zone areas. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Example:** `"#0078D7"` **Default:** `"#0078D7"` ### fancyzones_zoneBorderColor Sets the color of zone borders. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Example:** `"#FFFFFF"` **Default:** `"#FFFFFF"` ### fancyzones_zoneHighlightColor Sets the highlight color when a zone is activated. **Type:** string (hex color) **Format:** `"#RRGGBB"` **Example:** `"#0078D7"` **Default:** `"#0078D7"` ### fancyzones_highlightOpacity Sets the opacity of zone highlights (0-100). **Type:** integer **Range:** `0` to `100` **Default:** `50` ### fancyzones_editorHotkey Sets the keyboard shortcut to open the FancyZones 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+~` ### fancyzones_windowSwitching Controls whether window switching with arrow keys is enabled. **Type:** boolean **Default:** `true` ### fancyzones_nextTabHotkey Sets the keyboard shortcut to switch to the next tab/window in a zone. **Type:** object (same structure as fancyzones_editorHotkey) ### fancyzones_prevTabHotkey Sets the keyboard shortcut to switch to the previous tab/window in a zone. **Type:** object (same structure as fancyzones_editorHotkey) ### fancyzones_excludedApps List of applications excluded from FancyZones snapping. **Type:** string (newline-separated list of executable names) **Example:** `"Notepad.exe\nCalc.exe"` ## Examples ### Example 1 - Enable basic zone snapping with direct execution This example enables Shift-drag zone snapping and mouse-based monitor switching. ```powershell $config = @{ settings = @{ properties = @{ fancyzones_shiftDrag = $true fancyzones_mouseSwitch = $true } name = "FancyZones" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module FancyZones --input $config ``` ### Example 2 - Configure window movement behavior with DSC This example configures how windows behave when displays or zones change. ```bash dsc config set --file fancyzones-window-behavior.dsc.yaml ``` ```yaml # fancyzones-window-behavior.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure FancyZones window behavior type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_displayOrWorkAreaChange_moveWindows: true fancyzones_zoneSetChange_moveWindows: true fancyzones_appLastZone_moveWindows: true fancyzones_moveWindowsAcrossMonitors: true name: FancyZones version: 1.0 ``` ### Example 3 - Customize zone appearance with WinGet This example installs PowerToys and configures custom zone colors and opacity. ```bash winget configure winget-fancyzones-appearance.yaml ``` ```yaml # winget-fancyzones-appearance.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: Customize FancyZones appearance type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_zoneColor: "#2D2D30" fancyzones_zoneBorderColor: "#007ACC" fancyzones_zoneHighlightColor: "#007ACC" fancyzones_highlightOpacity: 75 fancyzones_makeDraggedWindowTransparent: true name: FancyZones version: 1.0 ``` ### Example 4 - Override Windows Snap hotkeys This example configures FancyZones to replace Windows default snap functionality. ```bash dsc config set --file fancyzones-snap-override.dsc.yaml ``` ```yaml # fancyzones-snap-override.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Override Windows Snap type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_overrideSnapHotkeys: true fancyzones_moveWindowsBasedOnPosition: true name: FancyZones version: 1.0 ``` ### Example 5 - Configure editor hotkey This example changes the FancyZones editor hotkey to Ctrl+Shift+Alt+F. ```powershell $config = @{ settings = @{ properties = @{ fancyzones_editorHotkey = @{ win = $false ctrl = $true alt = $true shift = $true code = 70 # F key key = "F" } } name = "FancyZones" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module FancyZones --input $config ``` ### Example 6 - Exclude applications from zone snapping This example configures FancyZones to ignore specific applications. ```yaml # fancyzones-exclusions.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Exclude apps from FancyZones type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_excludedApps: | Notepad.exe Calculator.exe mspaint.exe name: FancyZones version: 1.0 ``` ### Example 7 - Multi-monitor configuration This example configures FancyZones for optimal multi-monitor workflow. ```bash dsc config set --file fancyzones-multimonitor.dsc.yaml ``` ```yaml # fancyzones-multimonitor.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Multi-monitor FancyZones setup type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_shiftDrag: true fancyzones_mouseSwitch: true fancyzones_moveWindowsAcrossMonitors: true fancyzones_spanZonesAcrossMonitors: false fancyzones_openWindowOnActiveMonitor: true fancyzones_displayOrWorkAreaChange_moveWindows: true name: FancyZones version: 1.0 ``` ### Example 8 - Complete FancyZones configuration with WinGet This example shows a comprehensive FancyZones setup with installation. ```bash winget configure winget-fancyzones-complete.yaml ``` ```yaml # winget-fancyzones-complete.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: Enable FancyZones type: Microsoft.PowerToys/AppSettings properties: settings: properties: Enabled: FancyZones: true name: App version: 1.0 - name: Configure FancyZones type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: # Activation fancyzones_shiftDrag: true fancyzones_mouseSwitch: true fancyzones_overrideSnapHotkeys: false # Window behavior fancyzones_moveWindowsAcrossMonitors: true fancyzones_moveWindowsBasedOnPosition: false fancyzones_displayOrWorkAreaChange_moveWindows: true fancyzones_zoneSetChange_moveWindows: false fancyzones_appLastZone_moveWindows: true # Appearance fancyzones_makeDraggedWindowTransparent: true fancyzones_zoneColor: "#0078D7" fancyzones_zoneBorderColor: "#FFFFFF" fancyzones_zoneHighlightColor: "#0078D7" fancyzones_highlightOpacity: 50 # Multi-monitor fancyzones_openWindowOnActiveMonitor: true fancyzones_spanZonesAcrossMonitors: false name: FancyZones version: 1.0 ``` ### Example 9 - Test FancyZones configuration This example tests whether FancyZones is configured for multi-monitor use. ```powershell $desired = @{ settings = @{ properties = @{ fancyzones_moveWindowsAcrossMonitors = $true fancyzones_openWindowOnActiveMonitor = $true } name = "FancyZones" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress $result = PowerToys.DSC.exe test --resource 'settings' --module FancyZones ` --input $desired | ConvertFrom-Json if ($result._inDesiredState) { Write-Host "FancyZones is configured for multi-monitor" } else { Write-Host "FancyZones configuration needs updating" } ``` ### Example 10 - Get FancyZones schema This example retrieves the complete JSON schema for FancyZones properties. ```powershell PowerToys.DSC.exe schema --resource 'settings' --module FancyZones | ` ConvertFrom-Json | ConvertTo-Json -Depth 10 ``` ## Use cases ### Development workflow Configure FancyZones for efficient development with IDE, browser, and terminal windows: ```yaml resources: - name: Developer layout type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_shiftDrag: true fancyzones_overrideSnapHotkeys: true fancyzones_appLastZone_moveWindows: true name: FancyZones version: 1.0 ``` ### Presentation mode Optimize window management for presentations and screen sharing: ```yaml resources: - name: Presentation layout type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_openWindowOnActiveMonitor: true fancyzones_highlightOpacity: 30 fancyzones_makeDraggedWindowTransparent: false name: FancyZones version: 1.0 ``` ### Home office setup Configure for docking/undocking laptop scenarios: ```yaml resources: - name: Home office configuration type: Microsoft.PowerToys/FancyZonesSettings properties: settings: properties: fancyzones_displayOrWorkAreaChange_moveWindows: true fancyzones_moveWindowsAcrossMonitors: true fancyzones_appLastZone_moveWindows: true name: FancyZones version: 1.0 ``` ## See also - [Settings Resource][01] - [PowerToys DSC Overview][02] - [Peek][03] - [PowerToys FancyZones Documentation][04] [01]: ../settings-resource.md [02]: ../overview.md [03]: ./Peek.md [04]: https://learn.microsoft.com/windows/powertoys/fancyzones