{"id":24362817,"url":"https://github.com/crozzers/restorewindowpos","last_synced_at":"2025-10-14T18:32:00.051Z","repository":{"id":65367787,"uuid":"583673669","full_name":"Crozzers/RestoreWindowPos","owner":"Crozzers","description":"Restore window positions when displays are connected and disconnected","archived":false,"fork":false,"pushed_at":"2024-12-27T15:05:33.000Z","size":354,"stargazers_count":17,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-09T01:53:51.069Z","etag":null,"topics":["system-utility","window-management","windows"],"latest_commit_sha":null,"homepage":"https://community.chocolatey.org/packages/restorewindowpos/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Crozzers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-30T14:27:23.000Z","updated_at":"2024-12-27T15:05:36.000Z","dependencies_parsed_at":"2023-10-15T11:18:08.531Z","dependency_job_id":"7922ff72-5d82-4462-8fb2-a10d27c7f3cf","html_url":"https://github.com/Crozzers/RestoreWindowPos","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/Crozzers/RestoreWindowPos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crozzers%2FRestoreWindowPos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crozzers%2FRestoreWindowPos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crozzers%2FRestoreWindowPos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crozzers%2FRestoreWindowPos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Crozzers","download_url":"https://codeload.github.com/Crozzers/RestoreWindowPos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crozzers%2FRestoreWindowPos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279020354,"owners_count":26086866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["system-utility","window-management","windows"],"created_at":"2025-01-18T22:53:52.897Z","updated_at":"2025-10-14T18:32:00.033Z","avatar_url":"https://github.com/Crozzers.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RestoreWindowPos\n\nWhenever I connect/disconnect a monitor, all of my windows jump around, resize and teleport to places they are not meant to be in.\n\nThis project aims to fix this behaviour by taking regular snapshots of window positions. Once it detects a display being connected/disconnected, it will restore windows to their last known positions on that display.\n\nYou can also define rules for windows with specific titles and/or created by specific programs. Rules will be automatically applied to matching windows that are not part of your current snapshot (eg: windows that have been created since a snapshot was last taken).\nYou can also give these rules memorable names, and apply any and/or all of them at any time\n\n## Installation\n\n### Chocolatey\n\nThe [RestoreWindowPos Chocolatey package](https://community.chocolatey.org/packages/restorewindowpos/) can be installed with this command:\n```\nchoco install restorewindowpos\n```\n\nChocolatey packages are auto-generated each release using [GitHub actions](https://github.com/Crozzers/RestoreWindowPos/actions). The packages are then submitted to Chocolatey for review and to be published. This process does take time, so the Chocolatey version of the package may lag behind the latest GitHub release.\n\n#### Package Parameters\n\n| Parameter            | Descrption                                        |\n|----------------------|---------------------------------------------------|\n| `/StartAfterInstall` | Launch the program after installation is finished |\n| `/DesktopShortcut`   | Create a desktop shortcut for the program         |\n| `/StartMenuShortcut` | Create a start menu shortcut for the program      |\n\nExample:\n```\nchoco install restorewindowpos --params '\"/StartAfterInstall /DesktopShortcut /StartMenuShortcut\"'\n```\n\n### Manual install\n\nHead over to the [releases page](https://github.com/Crozzers/RestoreWindowPos/releases) to grab the latest installer\nfor the program.\n\n## Updating\n\n### Chocolatey\n\nIf you used Chocolatey to install, it should be as simple as running:\n```\nchoco upgrade restorewindowpos\n```\nAnd if you want to immediately restart the program after upgrading:\n```\nchoco upgrade restorewindowpos --params '\"/StartAfterInstall\"'\n```\nThis should handle exiting any currently running instances and installing the new version. If it doesn't work, or if the new files aren't properly copied across, try manually shutting down any running instances and upgrading after that.\n\n### Manual\n\nTo update to the latest version, download the latest installer from the [releases page](https://github.com/Crozzers/RestoreWindowPos/releases) and run it. Make sure to shutdown any running instances of RestoreWindowPos beforehand, otherwise the installer won't be able to overwrite your previous install.\n\nTo shutdown RestoreWindowPos, simply right click the system tray icon and click \"Quit\". Wait a couple of seconds for the program to shut itself down properly then launch the latest installer.\n\nIf the newly installed update throws an error on launch, try moving your snapshot history file.\nHit \u003ckbd\u003eWin\u003c/kbd\u003e + \u003ckbd\u003eR\u003c/kbd\u003e and enter `%localappdata%\\Programs\\RestoreWindowPos`. Rename `history.json` to `history.json.old`.\nIf this does not resolve your issue, please [report the issue](https://github.com/Crozzers/RestoreWindowPos/issues).\n\n## Contributing\n\nCheck the [contribution guidelines](CONTRIBUTING.md) for instructions on how contribute to the project, and instructions on how to compile the program.\n\n## Features\n\n* Regular snapshots of current window layout (with options for various different intervals)\n* Remembers window sizes and positions and restores them when monitors are connected/disconnected\n* Can restore snapped windows\n* Can restore past snapshots\n* Easy to use installer that registers the program as a startup task\n* Create and apply rules for specific windows\n* Create and apply rules for specific display configurations\n* React to new windows spawning and take some predefined action\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrozzers%2Frestorewindowpos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrozzers%2Frestorewindowpos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrozzers%2Frestorewindowpos/lists"}