WinVDK is a system for creating a multi-display kiosk experience using Windows virtual desktops. It automates setting up virtual desktops, launching applications, and cycling through them at regular intervals.
- Automatic creation and management of multiple virtual desktops
- Customizable program launching on each virtual desktop
- Automated cycling through virtual desktops at configurable intervals
- Ability to pause and resume desktop rotation
- Custom actions for each desktop (e.g., refreshing a webpage periodically)
- Taskbar auto-hide during rotation
- Daily system reboot for maintenance
- Easy configuration and customization
- Create C:\Scripts folder
- Copy these files into C:\Scripts:
- Run-VirtualDesktopsDisplayBoard.ps1
- DesktopSwitchingFunctions.ahk
- Setup-ProgramsOnVirtualDesktops.ahk
- DailySystemReboot.ps1
- VirtualDesktopAccessor.dll
- Install AutoHotkey v1.1 or later from autohotkey.com
Run Run-VirtualDesktopsDisplayBoard.ps1 in PowerShell to start manually.
- F2: Pause/resume desktop rotation
- Taskbar auto-hides during rotation, shows when paused
Edit Run-VirtualDesktopsDisplayBoard.ps1:
OpenOnDesktop -desktop 2 -program "firefox.exe" -arguments "-new-window --kiosk https://example.com"
- Edit DesktopSwitchingFunctions.ahk
- Change totalDisplays variable
- Update desktopActions array
- Modify OpenOnDesktop calls in Run-VirtualDesktopsDisplayBoard.ps1
- Open Task Scheduler
- Create new task
- Trigger: At log on
- Action:
- Program: powershell.exe
- Arguments: -ExecutionPolicy Bypass -File "C:\Scripts\Run-VirtualDesktopsDisplayBoard.ps1"
- Download Autologon from Sysinternals
- Run Autologon.exe
- Enter domain/computer name, username, password
- Click Enable
Note: Use auto-login cautiously on unsecured systems.
Main configuration is in Run-VirtualDesktopsDisplayBoard.ps1. This script sets up virtual desktops and launches programs.
- Run-VirtualDesktopsDisplayBoard.ps1: Main script that initializes the system, creates virtual desktops, and launches programs.
- DesktopSwitchingFunctions.ahk: Handles desktop rotation, pause/resume functionality, and custom actions per desktop.
- Setup-ProgramsOnVirtualDesktops.ahk: Helper script to launch programs on specific virtual desktops.
- DailySystemReboot.ps1: Manages daily system reboot for maintenance.
- VirtualDesktopAccessor.dll: Required DLL for interacting with Windows virtual desktops.
In DesktopSwitchingFunctions.ahk, modify:
global displayTime := 120000 ; Time in milliseconds (120000 = 2 minutes)
In DesktopSwitchingFunctions.ahk, the desktopActions array defines actions for each desktop:
global desktopActions := []
desktopActions.Push({count: 0, action: ""}) ; Desktop 1: No action
desktopActions.Push({count: 0, action: ""}) ; Desktop 2: No action
desktopActions.Push({count: 0, action: ""}) ; Desktop 3: No action
desktopActions.Push({count: 8, action: "Send, {F5}"}) ; Desktop 4: Press F5 every 8 switches
desktopActions.Push({count: 0, action: ""}) ; Desktop 5: No action
desktopActions.Push({count: 0, action: ""}) ; Desktop 6: No action
This array initializes actions for each desktop. Each entry represents a desktop and specifies:
count
: How many rotations before the action is triggered (0 means no action)action
: The AutoHotkey command to execute when triggered
In the example, Desktop 4 is set to press F5 (refresh) every 8 rotations. You can customize these actions for each desktop as needed.
- Ensure all scripts are in C:\Scripts
- Check Windows PowerShell execution policy
- Verify AutoHotkey is installed correctly
- Ensure VirtualDesktopAccessor.dll is present and accessible
- Designed for Windows 10/11 with virtual desktop support
- May interfere with normal desktop usage when active
Contributions are welcome. Please submit pull requests or open issues on the project repository.
GPL 3.0