VirtualDesktop 5.0.5

dotnet add package VirtualDesktop --version 5.0.5
NuGet\Install-Package VirtualDesktop -Version 5.0.5
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="VirtualDesktop" Version="5.0.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add VirtualDesktop --version 5.0.5
#r "nuget: VirtualDesktop, 5.0.5"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install VirtualDesktop as a Cake Addin
#addin nuget:?package=VirtualDesktop&version=5.0.5

// Install VirtualDesktop as a Cake Tool
#tool nuget:?package=VirtualDesktop&version=5.0.5


VirtualDesktop is C# wrapper for IVirtualDesktopManager on Windows 11 (and Windows 10).

Build Nuget (with prereleases) License


  • Switch, add, and remove a virtual desktop.
  • Move the window in the same process to any virtual desktop.
  • Move the window of another process to any virtual desktop (Support in version 2.0 or later).
  • Pin any window or application; will be display on all desktops.
  • Notification for switching, deletion, renaming, etc.
  • Change the wallpaper for each desktop.

Sample app

alternate text is missing from this package README image samples/VirtualDesktop.Showcase


  • .NET 5 or 6
  • Windows 10 build 19041 (20H1) or later


Install NuGet package(s).

PM> Install-Package VirtualDesktop

How to use


Because of the dependency on C#/WinRT (repo), the target framework must be set to net5.0-windows10.0.19041.0 or later.


If it doesn't work, try creating an app.manifest file and optimize to work on Windows 10.

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
	    <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />

The namespace to use is WindowsDesktop.

using WindowsDesktop;

Get instance of VirtualDesktop class

// Get all virtual desktops
var desktops = VirtualDesktop.GetDesktops();

// Get Virtual Desktop for specific window
var desktop = VirtualDesktop.FromHwnd(hwnd);

// Get the left/right desktop
var left  = desktop.GetLeft();
var right = desktop.GetRight();

Manage virtual desktops

// Create new
var desktop = VirtualDesktop.Create();

// Remove

// Switch

Subscribe virtual desktop events

// Notification of desktop switching
VirtualDesktop.CurrentChanged += (_, args) => Console.WriteLine($"Switched: {args.NewDesktop.Name}");

// Notification of desktop creating
VirtualDesktop.Created += (_, desktop) => desktop.Switch();

for WPF window

// Need to install 'VirtualDesktop.WPF' package

// Check whether a window is on the current desktop.
var isCurrent = window.IsCurrentVirtualDesktop();

// Get Virtual Desktop for WPF window
var desktop = window.GetCurrentDesktop();

// Move window to specific Virtual Desktop

// Pin window

See also:


This library is under the MIT License.

Product Compatible and additional computed target framework versions.
.NET net5.0-windows10.0.19041 is compatible.  net6.0-windows was computed.  net6.0-windows10.0.19041 is compatible.  net7.0-windows was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on VirtualDesktop:

Package Downloads

C# Wrapper for the Virtual Desktop API on Windows 11 (and Windows 10).


C# Wrapper for the Virtual Desktop API on Windows 11 (and Windows 10).

GitHub repositories (2)

Showing the top 2 popular GitHub repositories that depend on VirtualDesktop:

Repository Stars
[ARCHIVED] Automatic tiling window manager for Windows 10/11
Version Downloads Last updated
5.0.5 2,846 2/7/2022
5.0.4 528 2/6/2022
5.0.3 435 2/6/2022
5.0.2 441 2/6/2022
5.0.1 433 2/5/2022
5.0.0 466 2/5/2022
4.0.1 2,161 3/22/2020
4.0.0 1,009 3/22/2020
3.0.0-beta1 823 9/11/2018
2.0.0-beta3 3,866 8/6/2016
2.0.0-beta2 1,072 8/6/2016
2.0.0-beta 1,467 8/3/2016
1.0.3 3,508 12/15/2015
1.0.2 1,657 12/15/2015
1.0.1 1,200 12/15/2015
1.0.0 1,930 12/15/2015