Skip to content

OhMyDisplay v0.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 19 Oct 02:28

Layout Keeper now saves every window the taskbar shows and restores several kinds of windows that used to come back in the wrong place.

Windows that were missed

  • File Explorer windows are saved again. Older builds excluded explorer.exe by default, which dropped every File Explorer window. Shell surfaces such as the desktop and taskbar are now filtered by window style instead. A settings.json that still carries the old default is migrated automatically; an exclusion you add yourself is kept.
  • The window list follows the taskbar's rules. Windows with WS_EX_APPWINDOW (their own taskbar button) are kept even if they are tool or owned windows. No-activate overlays and zero-size helper windows are skipped.
  • Windows on another virtual desktop are kept. They are hidden by the shell while you are on a different desktop, so they used to be skipped. Suspended UWP app frames are still excluded. (Not yet tested with a second desktop.)

Restore fixes

  • Snapped windows restore to their snapped position. Windows reports the pre-snap position for a snapped window, so it used to come back un-snapped somewhere else. It now returns to the exact snapped rect, even if it was re-snapped elsewhere in the meantime.
  • No more 1-pixel drift for snapped and maximized windows whose edges extend slightly past the screen.
  • Windows with identical titles no longer shuffle. Several windows that share an app and title (for example Sticky Notes) used to be matched arbitrarily after a reboot. Each now goes back to its own saved position.
  • When a window refuses to move, the log now records the target and actual monitor, its position and its style, so the failure can be diagnosed.

Display wake and replug

  • No bogus layouts saved during wake or replug. While Windows is still detecting monitors, one can briefly report no device path. That produced a fake monitor ID, and the collapsed layout was saved under it. The keeper now waits and retries instead.
  • The restore wait no longer fires too early on wake. It is sized on the last settled monitor count, so a brief 3 → 1 → 3 dip doesn't trigger a restore while monitors are still coming back.

Notes

  • Saved layouts from earlier versions keep working. Bogus layouts saved by the old identity bug stay in layouts.json but are never matched; delete them if you want to tidy up.
  • Test harness: 72 → 100 checks, including tests that run on real windows.

Full Changelog: v0.3.0...v0.4.0