So you've spent 20 minutes carefully organising your applications across four virtual desktops. Communication on Desktop 1, development tools on Desktop 2, media and browsing on Desktop 3, and everything else tucked away on Desktop 4. It's perfect. Then you restart your computer and boom , everything's back on the primary desktop like you never touched anything. Welcome to one of Windows 11's most frustrating limitations.
I've been supporting Windows users for over 15 years, and this question comes up almost every week. The answer isn't a hidden setting or a quick Windows Update fix. It's actually a fundamental architectural decision by Microsoft. But here's the good news: there are proper workarounds that actually work, and I'm going to walk you through each one.
TL;DR
Windows 11 doesn't natively save virtual desktop layouts because desktops are temporary session-based containers, not persistent environments. Applications always reopen on the primary desktop after restart. You can work around this using Microsoft PowerToys with Snap Layouts (60-70% effective), PowerShell automation scripts (75-80% effective), or by manually redistributing applications for 5 minutes after each restart. Snap Layouts themselves do persist per desktop, so use those consistently.
Key Takeaways
- Virtual desktop layout persistence is a Windows 11 architectural limitation, not a bug or setting you can enable
- Snap Layouts do persist independently per desktop, so they're your best built-in tool for window positioning
- PowerToys with FancyZones provides good partial solutions for window arrangement automation
- PowerShell automation scripts offer the most reliable solution but require technical knowledge and ongoing maintenance
- Simple manual redistribution using keyboard shortcuts takes only 5 minutes after restart if you keep your desktop purposes consistent
At a Glance
- Difficulty: Intermediate
- Time Required: 45 mins setup, 5 mins per restart
- Success Rate: 60-80% depending on solution choice
What causes virtual desktops not saving layout in Windows 11?
Let's start with why this happens. Windows 11 treats virtual desktops fundamentally differently from how you might expect. They're not independent workspaces that remember their state. They're lightweight logical containers that exist only during your session. Think of them more like temporary workspace organisers rather than separate environments that get saved to disk.
When you restart your computer, Windows doesn't have any record of which applications were supposed to be on which desktop. The operating system has no serialisation mechanism , no registry keys, no configuration files, no state data , that captures your desktop organisation. It's simply not stored anywhere. So when Windows boots back up and loads your saved applications, it has no information telling it where to put them. By default, it puts everything on Desktop 1 and calls it a day.
This is different from how virtual desktops work in macOS Spaces or many Linux desktop environments, where desktop assignments often persist. Microsoft made a conscious architectural choice to keep virtual desktops lightweight and session-based rather than persistent. It probably made sense from a performance perspective , virtual desktops are essentially free from a resource standpoint, consuming only 30-40 MB per desktop. But the trade-off is that they don't remember anything between sessions.
The second part of the problem is Windows 11's application restart behaviour. When Windows starts up, it automatically reopens applications that were running when you shut down. This is actually a helpful feature called "automatic app restore". But here's where it conflicts with virtual desktops: all these applications reopen on the primary desktop, regardless of which desktop they were actually running on. So even if Windows somehow remembered your desktop layout, this automatic reopening would still scatter everything across Desktop 1.
Virtual desktops not saving layout , quick fix
The 5-Minute Manual Workaround Easy
Before you download anything or run scripts, here's the reality: manually redistributing your applications after restart takes about 5 minutes if you do it consistently and know the keyboard shortcuts. This isn't a permanent solution, but it's the fastest way to get back to work.
- Master these keyboard shortcuts
Win+Ctrl+D creates a new virtual desktop. Win+Ctrl+Right Arrow moves to the next desktop. Win+Ctrl+Left Arrow moves to the previous desktop. Win+Ctrl+Shift+Right Arrow moves the currently active window to the next desktop whilst keeping focus. Write these down and spend two minutes practising them. - After restart, identify which applications are on Desktop 1
Press Win+Ctrl+Right Arrow to cycle through all your desktops. You'll see they're all empty except Desktop 1, which has everything. - Close applications you don't actually need running
This is the shortcut step. If you have 15 applications open, manually moving them all takes longer. Close anything that isn't critical, then focus on the core apps for each desktop. - Move each application to its designated desktop
Click the application window to give it focus, then press Win+Ctrl+Shift+Right Arrow to move it to the next desktop. Repeat for each application. If you keep your desktop purposes consistent (always Desktop 2 for development, always Desktop 3 for media, etc.), this becomes muscle memory fast. - Verify your layout and adjust Snap Layouts
Once applications are on their correct desktops, press Win+Z on each window to arrange them using Snap Layouts. These arrangements will persist for that desktop during your session, and will restore the next time that desktop is populated.
Honestly, if you're only restarting your computer a couple of times per week and you keep applications closed between sessions, this approach works fine. The issue only becomes painful if you're restarting daily or if you like keeping a lot of applications persistently open across multiple desktops.
More virtual desktops layout solutions , PowerToys approach
Microsoft PowerToys with Snap Layouts Intermediate
This is the official Microsoft approach, and it works reasonably well if you understand its limitations. PowerToys is free, it's actively maintained, and it gives you some powerful window management features. The catch is that it solves the window positioning problem but not the "applications reopening on the wrong desktop" problem.
- Download and install Microsoft PowerToys
Head to the official PowerToys GitHub releases page or grab it from the Microsoft Store. Download the latest stable version (not preview), run the installer as administrator, and restart your computer. You'll see a PowerToys icon appear in your system tray once it's running. - Open PowerToys settings and enable FancyZones
Right-click the PowerToys tray icon and select "Settings". Navigate to the "FancyZones" section and toggle it on. FancyZones is a window snapping tool that goes beyond Windows 11's native Snap feature. Configure your preferred zone layouts , you can create different layouts for different purposes or even different layouts per monitor if you're running multiple screens. - Create your virtual desktops with distinct purposes
Press Win+Ctrl+D to create new desktops until you have the number you need. Right-click the desktop and select "Personalise" to assign a unique wallpaper to each virtual desktop. Different wallpapers matter more than you'd think , they create visual anchors that help your brain contextually switch between work modes. Desktop 1 could have a calm blue background, Desktop 2 a tech-focused dark theme, Desktop 3 something warmer. This takes 10 minutes but saves frustration daily. - Configure Snap Layouts on each desktop independently
Navigate to Desktop 1 and open the applications you want there. Arrange them using Win+Z (native Windows Snap Layouts) rather than FancyZones exclusively. When you use Win+Z, Windows remembers that specific layout for that specific desktop. Do this for each virtual desktop. The arrangements persist for that desktop throughout your session. - Adjust Alt+Tab behaviour in multitasking settings
Go to Settings > System > Multitasking. Under "Alt + Tab", change from "Open windows and all tabs" to "Open windows only". Even better, if you see an option to show windows "from current desktop only", enable it. This prevents Alt+Tab from jumping you randomly between desktops. - After restart, manually move applications then let Snap Layouts restore
When you boot back up, all applications are on Desktop 1. Use Win+Ctrl+Shift+Right Arrow to move each application to its designated desktop. Once they're on the correct desktop, the Snap Layout arrangements you configured earlier will automatically restore. You won't need to rearrange windows again , just need to fix which desktop they're on.
The key insight here is that Snap Layouts are your friend. They actually do persist independently per desktop, which means the effort you put into arranging windows isn't wasted. It only takes 30 seconds to recreate a Snap Layout once the windows are on the right desktop.
Advanced virtual desktops solutions , PowerShell automation
PowerShell Script with Task Scheduler Advanced
This is where things get technical. If you're comfortable with PowerShell and Task Scheduler, you can automate the entire process. A properly written script can create your desktops and launch applications on specific desktops without any manual intervention. This has the highest success rate but also the highest maintenance burden.
- Install the VirtualDesktop PowerShell module
Open PowerShell as administrator and run:Install-Module -Name VirtualDesktop -Scope CurrentUser. This provides cmdlets for managing virtual desktops programmatically. Verify installation by runningGet-Module -ListAvailable VirtualDesktop. You should see the module listed with its version number. - Create your PowerShell automation script
Open PowerShell ISE and create a new script. Save it to C:\Scripts\VirtualDesktopSetup.ps1 (create the Scripts folder if it doesn't exist). The script needs to: create desktops, launch applications with Start-Process, and use VirtualDesktop cmdlets to assign windows to specific desktops. Here's a basic structure:New-Desktop\nStart-Process 'C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE'\nStart-Sleep -Seconds 3\nMove-Window -VirtualDesktop (Get-Desktop 1)
You'll need to customize application paths and timing for your specific setup. Each application might need 2-3 seconds sleep time before it can be moved, depending on launch speed. - Test the script manually first
Close all your virtual desktops except the primary. Run the script manually to see if it creates desktops, launches applications, and assigns them correctly. Watch the process and note any errors. If an application launches on the wrong desktop, increase the sleep time between launch and move commands. If desktops aren't created in time, add delays. Testing takes 20-30 minutes but prevents issues later. - Create a scheduled task for automatic execution at logon
Open Task Scheduler (search "Task Scheduler" in Windows). Create a new Basic Task. Set the trigger to "At log on" for your specific user account. Set the action to run PowerShell.exe with these arguments:-ExecutionPolicy Bypass -File 'C:\Scripts\VirtualDesktopSetup.ps1'. Configure it to run with highest privileges. Critically, set a delay of 30-60 seconds before the task runs , this gives Windows time to fully load and stabilise before the script tries to create desktops. - Test the automated solution by restarting
Restart your computer and watch what happens at logon. The script should execute invisibly in the background. Check if desktops are created and applications are on correct desktops. If something goes wrong, open Task Scheduler and check the task history for error messages. Common issues: applications path is wrong, execution policy blocks the script, or timing delays are too short. - Refine and troubleshoot based on results
If applications launch on wrong desktops, increase sleep times. If the script runs too early and desktops aren't created yet, increase the 30-60 second startup delay in Task Scheduler. Add logging to the script to help troubleshoot:Add-Content -Path 'C:\Scripts\VirtualDesktopSetup.log' -Value "$(Get-Date): Desktop created". This creates a log file you can review to see exactly where failures occur.
The success rate here is higher because you're automating the entire process, but there are real maintenance costs. Windows cumulative updates occasionally break compatibility with VirtualDesktop cmdlets. Some UWP applications (like Edge, Settings, Mail) might not respond correctly to programmatic window moving. And you need to maintain the script if your application preferences change.
Preventing virtual desktops layout issues going forward
Once you've got a working solution, the goal is to make it sustainable without constant fiddling. Here are the habits that actually matter:
Keep your desktop purposes consistent. Decide right now: Desktop 1 is always communication (email, Teams, Slack), Desktop 2 is always development (VS Code, IDEs, terminals), Desktop 3 is always media (browser, media players, documents). Write this down and stick to it religiously. This consistency means you can manually redistribute applications in 5 minutes even if you haven't restarted in a week and forget the order.
Use unique visual identifiers. Different wallpapers for each desktop aren't cosmetic , they're functional. Your brain processes visual context automatically. When you glance at your screen and see the blue workspace, your mind is already in "communication mode". When you see the dark dev workspace, you're ready to code. This sounds trivial, but it reduces context-switching errors significantly.
Master the keyboard shortcuts because you'll use them constantly. Win+Ctrl+D, Win+Ctrl+Right/Left Arrow, Win+Ctrl+Shift+Right Arrow. Spend five minutes right now deliberately using these shortcuts. After a week, they'll be automatic. After a month, you'll stop thinking about it entirely. This is worth the initial learning curve.
Leverage Snap Layouts on every single desktop. Use Win+Z consistently. Arrange your windows into snap zones. Don't just leave windows floating randomly. Because these arrangements persist per desktop, every minute you spend arranging windows is saved time after the next restart.
Close applications between sessions if you can. I get it , some applications take forever to start (looking at you, Visual Studio). But if an application takes 2 minutes to launch, closing it between sessions saves you having to manually move it to the correct desktop after restart. Do some quick math: is the launch time worth the 10 seconds of manual redistribution?
Document your preferred layout once, then reference it. Write down: "Desktop 1: Outlook, Teams, Slack. Desktop 2: VS Code, GitHub Desktop, PowerShell. Desktop 3: Chrome, Excel, Word." Tape this to your monitor or save it in a note. After restart, you can recreate the layout in 5 minutes by literally following your own checklist.
Virtual desktops layout issues summary
Here's the truth that nobody wants to hear: Windows 11 simply doesn't save virtual desktop layouts, and Microsoft shows no signs of changing this. It's not a bug. It's not a setting you can enable. It's an architectural decision that's unlikely to change because it would add complexity and overhead to every Windows 11 installation.
But that doesn't mean you're stuck. You have real options. If you restart rarely and don't mind 5 minutes of manual work, the keyboard-shortcuts approach works perfectly fine. If you value your time and want more automation, PowerToys with Snap Layouts gives you 80% of the way there with minimal setup. And if you want fully automatic desktop recreation, PowerShell scripts work reliably when properly configured, though they do require maintenance.
The common thread across all three approaches is consistency. Consistent desktop purposes, consistent use of Snap Layouts, consistent keyboard shortcuts. Once you build those habits, virtual desktops become a genuinely powerful productivity tool despite the layout reset limitation.


