microsoft / microsoft/PowerToys

Extended virtual desktop with edge-triggered viewport switching (similar to Enlightenment / E17)

Open
#46,148 1 comment 0 reactions 0 assignees View on GitHub
Idea-New PowerToy Needs-Triage Product-Workspaces Virtual desktop
Dominant language
C
Stars
139k
Forks
8.6k
PR merge metrics
PR metrics pending

Description

### Description of the new feature / enhancement

It would be extremely useful to add an **extended virtual desktop** mode to PowerToys, inspired by the behavior available in **Enlightenment (E17)** on Linux.

Instead of having only discrete virtual desktops, the user would have a **single logical desktop larger than the physical screen** (for example 2x1, 3x1, 2x2, 4x2, etc.). The visible screen would act as a **viewport** over that larger desktop.

When the user **pushes the mouse cursor against a screen edge**, PowerToys would switch or slide the viewport toward the adjacent portion of the extended desktop in that direction.

### Scenario when this would be used?

Current desktop switching models are usually based on:
- fully separate desktops, or
- manual switching with keyboard shortcuts / gestures.

What is missing is a more spatial workflow where the desktop behaves like a larger canvas and navigation happens naturally by moving the cursor to an edge.

This is especially useful for:
- multi-tasking with logically grouped windows,
- keeping related workspaces adjacent in space,
- fast pointer-driven navigation without keyboard shortcuts,
- recreating a workflow long appreciated by users of Enlightenment / E17.

### Supporting information

#### 1. Extended virtual desktop
Allow creation of a desktop larger than one screen, for example:
- horizontal only: `N x 1`
- vertical only: `1 x N`
- grid: `N x M`

Each "cell" would correspond to one screen-sized area of the larger desktop.

#### 2. Edge-triggered viewport movement
When the mouse cursor is pushed against one edge of the screen:
- left edge -> move viewport to the desktop area on the left
- right edge -> move viewport to the desktop area on the right
- top edge -> move viewport upward
- bottom edge -> move viewport downward

This should feel like moving around inside one larger desktop, not like switching to an unrelated desktop.

#### 3. Configurable cursor edge resistance
This behavior should be fully configurable, including:

- **edge sensitivity size in pixels**
- configurable activation zone near each edge
- must allow very small values, including **1 px (minimum)**

- **dwell / wait time before switching**
- configurable delay before the viewport moves
- must allow **0 seconds (minimum)** for immediate switching

This is important because users have very different preferences:
- some want deliberate activation,
- others want instant edge switching.

#### 4. Optional animation
The viewport transition should support:
- **animated sliding/gliding** between desktop areas, or
- **instant switching** with no animation

Animation should therefore be optional, ideally with configurable speed/duration.

#### 5. Optional wrap-around
It could also be useful to support optional wrap behavior:
- pushing right on the last column returns to the first column
- pushing down on the last row returns to the first row

This should be optional, not mandatory.

---

### Suggested settings

Example settings that would make this feature practical:

- Desktop size:
- width in screens: `N`
- height in screens: `M`

- Edge activation:
- enable/disable per edge
- sensitivity zone in pixels
- delay before activation

- Transition behavior:
- animation on/off
- animation duration / speed

- Navigation behavior:
- wrap-around on/off
- block switching while dragging windows on/off
- block switching in fullscreen apps on/off

---

### Important minimum values

Please allow the following minimum values explicitly:

- **Edge sensitivity:** `1 px`
- **Activation delay:** `0 seconds`

These minimums are important for users who want behavior as reactive as possible.

---

### Additional considerations

A few details would make the feature significantly better:

- Prevent accidental switching while resizing or dragging a window, unless explicitly enabled
- Define behavior for maximized windows when moving between viewport areas
- Ensure compatibility with multi-monitor setups
- Allow keyboard shortcuts to move the viewport as an alternative to edge pushing
- Optionally show a small overview/minimap of the extended desktop layout

---

### Why this would fit PowerToys well

PowerToys already targets advanced desktop productivity and workflow customization.
An extended virtual desktop with edge-triggered navigation would fit very well alongside other window-management and workspace-oriented features.

This would provide a workflow that is:
- spatial,
- fast,
- intuitive,
- highly configurable,
- and currently missing from modern Windows tooling.

Contributor guide

Open the contributing guide

Research direction

The issue names no files, tests, or entry points. Start by identifying the existing PowerToys desktop and window-management components and reviewing how Windows virtual desktops are handled; done requires a scoped design covering the desktop grid, edge activation, transitions, wrapping, and multi-monitor and drag/fullscreen behavior.

Written by the indexing model from the issue text.

Assessment

Domain
desktop, operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.