Cerberus is a powerful workspace management tool for Windows that brings Linux-style virtual workspaces to multi-monitor setups. Written in AutoHotkey v2, it allows you to organize windows across multiple workspaces and quickly switch between them.
- 20 Virtual Workspaces: Organize your windows across 20 different workspaces
- Multi-Monitor Support: Each monitor can display a different workspace
- Save/Load System: Automatically saves and restores workspace layouts between sessions
- Visual Indicators: Overlays show active workspace numbers and custom workspace names
- Window Tiling: Built-in tiling functionality to arrange windows in a grid
- Unused Workspace Navigation: Quickly jump to empty workspaces
- Layout Preservation: Maintains window stacking order and relative size/positions when switching workspaces
- Windows 10 or later
- AutoHotkey v2.0 or later
- Administrator privileges recommended for managing all window types
- Install AutoHotkey v2.0
- Download
cerberus.ahk - Run the script by double-clicking it
- Optionally, add to Windows startup for automatic launch
Alt+1toAlt+9: Switch to workspaces 1-9Alt+0: Switch to workspace 10Ctrl+Alt+1toCtrl+Alt+9: Switch to workspaces 11-19Ctrl+Alt+0: Switch to workspace 20
Alt+Shift+1toAlt+Shift+9: Send window to workspaces 1-9Alt+Shift+0: Send window to workspace 10Ctrl+Shift+Alt+1toCtrl+Shift+Alt+9: Send window to workspaces 11-19Ctrl+Shift+Alt+0: Send window to workspace 20
Alt+Up: Switch to next unused workspaceAlt+Down: Switch to previous unused workspaceAlt+Shift+Up: Send window to next unused workspaceAlt+Shift+Down: Send window to previous unused workspace
Alt+Shift+O: Toggle workspace overlays and bordersAlt+Shift+W: Show workspace map (displays all workspaces and their windows)Alt+Shift+T: Tile windows on active monitorAlt+Shift+N: Name/rename current workspaceAlt+Shift+R: Refresh monitor configurationAlt+Shift+H: Show help/instructions
The "active monitor" is determined by your mouse cursor position. This is the monitor affected when you switch workspaces or assign custom names.
- When Cerberus starts, it checks if there's an existing save file
- If a save file exists:
- Windows are loaded to their last known workspaces
- Most recently active workspaces are displayed on the appropriate monitors
- If no save file exists:
- Assigns sequential workspaces to each monitor (Monitor 1 → Workspace 1, Monitor 2 → Workspace 2, etc.)
- Windows on each monitor are automatically assigned to that monitor's workspace
- Unassigned windows default to workspace 0
- Cerberus remembers window positions and sizes relative to monitor dimensions, as well as Z-order per workspace
- When switching workspaces, windows are minimized/restored automatically
- Window positions are preserved even when moving between monitors of different sizes
- Workspaces can be named for easier identification
- Names appear in the lower-left corner overlay
- Alt+Shift+N to assign a custom workspace name
- Sending a window to an empty unnamed workspace automatically names it after the program
- Logs:
./logs/cerberus_[timestamp].log - Workspace state:
./config/workspace_state.json
- Quick Organization: Use
Alt+Shift+Up/Downto quickly send windows to new workspaces - Monitor Focus: Move your mouse to a monitor before switching its workspace
- Persistence: Workspace layouts are automatically saved and restored between sessions
- Tiling: Use
Alt+Shift+Tto quickly arrange all windows on the current workspace in a grid
- Windows not switching: Run as administrator for better window management capabilities
- Overlays not showing: Press
Alt+Shift+Oto toggle overlay visibility - Lost windows: Use
Alt+Shift+Wto see all workspaces and their windows - Monitor changes: Press
Alt+Shift+Rafter connecting/disconnecting monitors
This project is open source. Feel free to modify and distribute according to your needs.
Current version: 1.0.1