• v0.6.0 2c8c772a10

    Monitor picker at shell-mode startup
    release / Build Windows .zip (push) Canceled after 0s

    LastSkywalker released this 2026-05-27 20:41:06 +03:00

    internal/display wraps EnumDisplayDevicesW + ChangeDisplaySettingsExW
    to enumerate attached monitors and to disable everything-but-one. The
    previous configuration is snapshotted to
    %LOCALAPPDATA%\GameSaver\display-backup.json so RestoreSaved() can put
    the desktop back exactly as it was when shell mode exits.

    App.go exposes three Wails-bound methods:
    ListMonitors() — Monitor{} list with name/resolution/topology/primary
    MakeSoleMonitor(id) — disable everything else, save snapshot
    RestoreMonitorConfig() — re-enable from snapshot

    ShellApp checks the monitor count on mount. With 1 display we skip
    silently. With 2+ we either:
    – re-apply the user's remembered choice (gs:soleMonitorId in
    localStorage) so subsequent logons land single-screen without
    prompting, or
    – show MonitorPicker — a full-screen overlay that paints each
    monitor as a card sized + positioned proportional to its real
    topology, controller/keyboard navigable (A/Enter confirms,
    B/Esc skips, double-click confirms).

    On the "Выйти из shell-режима" action we call RestoreMonitorConfig
    first so the user lands back in Explorer with their full multi-screen
    setup intact instead of having to fix it themselves.

    Downloads