Slions.VirtualDesktop.WPF 5.1.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package Slions.VirtualDesktop.WPF --version 5.1.1
NuGet\Install-Package Slions.VirtualDesktop.WPF -Version 5.1.1
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="Slions.VirtualDesktop.WPF" Version="5.1.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Slions.VirtualDesktop.WPF --version 5.1.1
#r "nuget: Slions.VirtualDesktop.WPF, 5.1.1"
#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 Slions.VirtualDesktop.WPF as a Cake Addin
#addin nuget:?package=Slions.VirtualDesktop.WPF&version=5.1.1

// Install Slions.VirtualDesktop.WPF as a Cake Tool
#tool nuget:?package=Slions.VirtualDesktop.WPF&version=5.1.1

VirtualDesktop

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

Build Publish Nuget (with prereleases) License

Features

  • 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

Requirements

<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
  • .NET 5 or 6
  • Windows 10 build 19041 (20H1) or later

Installation

Install NuGet package(s).

PM> Install-Package VirtualDesktop

How to use

Preparation

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

<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
<TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>

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">
    <application>
	    
	    <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
    </application>
</compatibility>

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
desktop.Remove();

// Switch
desktop.GetLeft().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
window.MoveToDesktop(desktop);

// Pin window
window.Pin()

See also:

License

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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
6.6.0 176 2/20/2024
6.5.0 91 2/4/2024
6.4.0 198 11/27/2023
6.3.0 108 11/21/2023
6.2.1 132 9/1/2023
6.2.0 122 9/1/2023
6.1.0 119 9/1/2023
6.0.0 125 8/31/2023
5.2.0 129 8/18/2023
5.1.2 131 8/16/2023
5.1.1 124 8/12/2023
5.1.0 132 8/12/2023
5.0.9 133 8/12/2023