Shortcut keys to move windows between virtual windows 10 desktop

The functionality of moving an existing application to another virtual desktop exists but isn't mapped to a keyboard shortcut and there seems to be no way, yet, to map it.

That said,

Move to the next Virtual Desktop: Ctrl + Win + Right Arrow

Move to the previous Virtual Desktop: Ctrl + Win + Left Arrow

Create a new Virtual Desktop (always created to the right of the last desktop): Ctrl + Win + D

Show existing Desktops and their overview: Win + Tab

Some general tips to make you more productive


I know this thread has been dead a while now, but thought I'd mention that Michael Zomparelli has created an app called zVirtualDesktop that has a ton of functionality including the feature of a hotkey to move windows between virtual desktops. It has a free ten day trial but then is paid unfortunately. You can find the app here: https://github.com/mzomparelli/zVirtualDesktop

Here's an example of this in the app.


There seems to be no short cut key but you can google it. Check to see https://www.howtogeek.com/688224/how-to-move-a-window-to-another-virtual-desktop-on-windows-10/

Here goes descriptions:

  1. Open the Task View window (Win + Tab). It will show your all virtual desktops and application windows in thumbnail icons.
  2. In Task View, Find your application thumbnail then right click on the thumbnail and select 'Move to'.
  3. Select the destination desktop.

That's all folks!


If you don't mind using AutoHotkey for the purpose, the project VirtualDesktopAccessor comes with an example which does exactly that:

hVirtualDesktopAccessor := DllCall("LoadLibrary", Str, "C:\Path\To\VirtualDesktopAccessor.dll", "Ptr")
MoveWindowToDesktopNumberProc := DllCall("GetProcAddress", Ptr, hVirtualDesktopAccessor, AStr, "MoveWindowToDesktopNumber", "Ptr")
GoToDesktopNumberProc := DllCall("GetProcAddress", Ptr, hVirtualDesktopAccessor, AStr, "GoToDesktopNumber", "Ptr")

MoveCurrentWindowToDesktop(number) {
    global MoveWindowToDesktopNumberProc, GoToDesktopNumberProc, activeWindowByDesktop
    WinGet, activeHwnd, ID, A
    DllCall(MoveWindowToDesktopNumberProc, UInt, activeHwnd, UInt, number)
    DllCall(GoToDesktopNumberProc, UInt, number)
}

+#1::MoveCurrentWindowToDesktop(1)
+#2::MoveCurrentWindowToDesktop(2)
+#3::MoveCurrentWindowToDesktop(3)
+#4::MoveCurrentWindowToDesktop(4)
+#5::MoveCurrentWindowToDesktop(5)

A collection of nice defaults that makes use of this library is available in https://github.com/yalibian/i3-windows:

Switch to virtual desktops 1-9 using ⊞-# and backfill # of desktops if needed

Move active windows to virtual desktops 1-9 using ⊞-shift-# and backfill desktops if needed

Close windows with ⊞-shift-q