Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Window Drift

Version 1.02
Created and developed by Mehran Ahmadi.

Window Drift is a minimal, Windows-only desktop utility that turns an idle desktop into a quiet kinetic composition. After a configurable idle delay, it gently moves eligible open windows inside each monitor's usable work area. Keyboard or mouse input stops the movement immediately.

The app runs locally in the system tray. It has no internet access, telemetry, accounts, analytics, or data collection.

Features

  • Smooth, low-speed window movement with monitor-aware bouncing
  • Slow drift, bounce, and random drift modes
  • Multi-monitor support that respects taskbars and work areas
  • Optional restoration of original window positions on wake
  • Process-name exclusions
  • Configurable idle delay, speed, and edge padding
  • Optional start with Windows
  • No administrator privileges required

Safety

Window Drift moves windows with the Win32 SetWindowPos API. It does not resize, activate, close, minimize, or change the Z-order of windows.

The movement engine skips:

  • Invisible and minimized windows
  • Maximized and fullscreen windows
  • Hung, cloaked, child, tool, and non-activating windows
  • Desktop, taskbar, Start, notification, shell, and related system surfaces
  • Window Drift's own UI
  • Any process listed in the exclusions setting

The app handles windows closing or becoming inaccessible while movement is in progress. Use the tray menu's Stop movement now item at any time.

Requirements

  • Windows 10 or Windows 11
  • .NET 8 SDK for building
  • No SDK is required when using a self-contained release

Run from source

dotnet run --project src/WindowDrift/WindowDrift.csproj

Window Drift appears in the system tray. Double-click the tray icon, or right-click it and choose Settings.

Build

From the repository root:

dotnet build

Publish a release

Create a self-contained Windows x64 build:

dotnet publish -c Release -r win-x64 --self-contained true

The published files are written below:

src/WindowDrift/bin/Release/net8.0-windows/win-x64/publish/

To package a release:

  1. Test the published executable on Windows 10 or 11.
  2. Zip the contents of the publish folder.
  3. Create a GitHub Release and attach the zip file.
  4. Use the version tag v1.02.

The app stores settings in:

%LOCALAPPDATA%\WindowDrift\settings.json

The Start with Windows option creates a value for the current user under HKCU\Software\Microsoft\Windows\CurrentVersion\Run.

Known limitations

  • Windows can reject movement for elevated applications when Window Drift is running without elevation. This is expected and does not crash the app.
  • Some custom desktop shells or unusual application windows may need to be added to the process exclusion list.
  • Virtual desktops and Windows snap groups are managed by Windows; restoring a position does not recreate a prior snap-group relationship.
  • The app intentionally skips maximized and fullscreen windows rather than attempting to distinguish every game or media-player implementation.
  • Windows that open after an idle movement session begins are picked up on the next idle session.

GitHub Pages

The project site is plain HTML, CSS, and JavaScript in docs.

  1. Push this repository to GitHub.
  2. Open Settings > Pages in the repository.
  3. Under Build and deployment, choose Deploy from a branch.
  4. Select the default branch and the /docs folder.
  5. Save and wait for GitHub Pages to publish the site.

The page automatically derives repository and latest-release links when hosted at https://OWNER.github.io/REPOSITORY/. Its fallback points to https://github.com/mehranmarxian/Window-Drift.

Developer

Development notes

The implementation uses WinForms only for the tray icon and settings window. Win32 APIs are accessed through P/Invoke for idle detection, top-level window enumeration, process lookup, monitor work areas, and movement.

Contributions should preserve the project's conservative behavior: do not move system surfaces, do not require elevation, and stop promptly when input resumes.

License

MIT

About

A calm kinetic desktop utility for Windows.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages