Skip to main content

Python implementation of the VirtualDesktopAccessor for manipulating Windows 10 virtual desktops.

Project description

py-VirtualDesktopAccessor

Implements a subset of the functionality offered by https://github.com/Ciantic/VirtualDesktopAccessor, written in pure Python and installable via pip.

pip install pyvda

Usage

The following functions are implemented. The only deliberate difference with the behaviour of Ciantic's original DLL is that desktops here are 1-indexed, as this reflects the numbers shown in the task view.

def GetCurrentDesktopNumber() -> int:
def GetDesktopCount() -> int:
def MoveWindowToDesktopNumber(hwnd: int, number: int) -> None:
def GoToDesktopNumber(number: int) -> None:
def GetWindowDesktopNumber(hwnd: int) -> int:

def PinWindow(hwnd: int) -> None:
def UnPinWindow(hwnd: int) -> None:
def IsPinnedWindow(hwnd: int) -> bool:
def PinApp(hwnd: int) -> None:
def UnPinApp(hwnd: int) -> None:
def IsPinnedApp(hwnd: int) -> bool:

def ViewIhsShownInSwitchers(hwnd: int) -> bool:
def ViewIsVisible(hwnd: int) -> bool:
def ViewGetLastActivationTimestamp(hwnd: int) -> int:
def ViewSetFocus(hwnd: int) -> int:
def ViewSwitchTo(hwnd: int) -> int:
def ViewGetByZOrder(switcher_windows: bool = True, current_desktop: bool = True) -> List[int]:

Example usage:

import pyvda
import win32gui

number_of_active_desktops = pyvda.GetDesktopCount()
current_desktop = pyvda.GetCurrentDesktopNumber()

current_window_handle = win32gui.GetForegroundWindow()
pyvda.MoveWindowToDesktopNumber(current_window_handle, 1)

pyvda.GoToDesktopNumber(3)

window_moved_to = pyvda.GetWindowDesktopNumber(current_window_handle)

Tips

Sometimes, after calling GoToDesktopNumber the focus will remain on the window in the previous desktop. This is at least partially fixed by calling:

from ctypes import windll
ASFW_ANY = -1
windll.user32.AllowSetForegroundWindow(ASFW_ANY)

before any call to GoToDesktopNumber. More details here and here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyvda-0.0.8.tar.gz (7.5 kB view hashes)

Uploaded Source

Built Distributions

pyvda-0.0.8-py3-none-any.whl (8.8 kB view hashes)

Uploaded Python 3

pyvda-0.0.8-py2-none-any.whl (8.8 kB view hashes)

Uploaded Python 2

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page