{"id":22022287,"url":"https://github.com/nicholas-karr/monitorrotationmemory","last_synced_at":"2026-02-25T17:03:40.556Z","repository":{"id":258386341,"uuid":"850548160","full_name":"nicholas-karr/MonitorRotationMemory","owner":"nicholas-karr","description":"Applies monitor rotations to fix sideways laptop docking.","archived":false,"fork":false,"pushed_at":"2025-04-22T08:01:15.000Z","size":42,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-07T06:43:37.296Z","etag":null,"topics":["docking","persistent-storage","screen","win32"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nicholas-karr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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,"zenodo":null}},"created_at":"2024-09-01T05:03:22.000Z","updated_at":"2025-04-22T08:01:18.000Z","dependencies_parsed_at":"2025-05-07T06:53:17.770Z","dependency_job_id":null,"html_url":"https://github.com/nicholas-karr/MonitorRotationMemory","commit_stats":null,"previous_names":["nicholas-karr/monitorrotationmemory"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nicholas-karr/MonitorRotationMemory","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicholas-karr%2FMonitorRotationMemory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicholas-karr%2FMonitorRotationMemory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicholas-karr%2FMonitorRotationMemory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicholas-karr%2FMonitorRotationMemory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nicholas-karr","download_url":"https://codeload.github.com/nicholas-karr/MonitorRotationMemory/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicholas-karr%2FMonitorRotationMemory/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29831802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T15:41:19.027Z","status":"ssl_error","status_checked_at":"2026-02-25T15:40:47.150Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["docking","persistent-storage","screen","win32"],"created_at":"2024-11-30T06:19:52.023Z","updated_at":"2026-02-25T17:03:40.538Z","avatar_url":"https://github.com/nicholas-karr.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MonitorRotationMemory\nFixes sideways laptop docking. \nRotates sets of monitors depending on how they were saved from a persistent configuration.\n\n## Motivation\nWindows 11 is able to automatically handle moving windows and monitors on the canvas to where they last were based on their names. However, it does not do so with rotation.\nIf you dock your laptop by turning it on its side to save desk space, it will _stay_ sideways when you undock it. This app fixes that.\n\n## Installation\nClone/download the repository.\n\nOpen `MonitorRotationMemory.sln` in Visual Studio Community and build the Release profile. If you build it in the Debug profile, a log terminal will always be visible.\n\nTo autostart, add a registry key to `Computer\\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run` of type REG_SZ named `MonitorRotationMemory` with a value of the path to your executable.\nIt should be under `x64/Release`. There is not an installer currently.\n\n## Usage\n1. Reboot or manually launch the executable. \n2. A system tray icon will be added to your task bar (Usually under the caret ^). Right click it and select \"Capture Current Monitors.\"\n3. Your current configuration has now been written to disk. Whenever the same pattern of monitor names is plugged in, they will be set to this resolution, spacing, and size.\n4. To bind your second configuration, unplug/plug in a monitor and manually set the rotations and locations correctly. Then, capture it.\n5. To change a binding, right click the icon and click \"Pause\". This will allow you to change rotations without it snapping back, and you can capture again to save it. Then, unpause.\n6. If you ever messed up, right click the icon and click \"Open Configuration\". Clear it to reset the app.\n7. Now, you can freely dock/undock your device sideways!\n\n## Configuration Format\nThe config is stored at `%USERPROFILE%\\AppData\\Local\\MonitorRotationMemory\\config.txt`.  \nEvery line represents a monitor as a (Monitor Name, Width, Height, X Position, Y Position, Rotation) tuple separated by commas. Setups are separated by double newlines.\nSetups later in the file have greater priority and will match first.\n\n## Troubleshooting\nThe logs do not actually get written to disk. Upon encountering an error, the program will usually crash. \nLaunch the debug version in Visual Studio to see a log console that will not disappear. Feel free to PR with bug fixes.\n\n## Credits\nIcon from https://icon-icons.com/users/JupI7ALOpv56pZQJjRpQL/icon-sets/  \nMonitorRotationMemory.cpp is based on NotificationIcon.cpp from https://github.com/microsoft/Windows-classic-samples","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicholas-karr%2Fmonitorrotationmemory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnicholas-karr%2Fmonitorrotationmemory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicholas-karr%2Fmonitorrotationmemory/lists"}