{"id":16680173,"url":"https://github.com/doitian/km-windows-manager","last_synced_at":"2026-05-19T11:42:58.370Z","repository":{"id":139972688,"uuid":"261744324","full_name":"doitian/km-windows-manager","owner":"doitian","description":"This is a group of Keyboard Maestro macros to move windows in a way inspired by Windows snap move shortcuts.","archived":false,"fork":false,"pushed_at":"2020-05-06T14:47:54.000Z","size":9,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-20T05:36:20.678Z","etag":null,"topics":["automation","keyboard-maestro","macos"],"latest_commit_sha":null,"homepage":"","language":null,"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/doitian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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":"2020-05-06T11:56:07.000Z","updated_at":"2024-05-03T06:48:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"182ae133-4295-40b1-b06a-213117c3bb67","html_url":"https://github.com/doitian/km-windows-manager","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doitian%2Fkm-windows-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doitian%2Fkm-windows-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doitian%2Fkm-windows-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doitian%2Fkm-windows-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/doitian","download_url":"https://codeload.github.com/doitian/km-windows-manager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243374209,"owners_count":20280656,"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","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":["automation","keyboard-maestro","macos"],"created_at":"2024-10-12T13:40:28.082Z","updated_at":"2025-12-29T11:45:50.999Z","avatar_url":"https://github.com/doitian.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Keyboard Maestro Windows Manager\n\nThis is a group of Keyboard Maestro macros to move windows in a way inspired\nby Windows snap move shortcuts.\n\nThe snap move macros have the same logic in the four different directions.\n\nIf the window moves along the directory, the side which first hit the screen\nboundary is named as near side, and the opposite side is the far side. For\nexample, in the macro \"Window Snap Right \u003ckbd\u003eCtrl + Option + Left\u003c/kbd\u003e\", the\nright window side is the near side, and the left is the far side.\n\n* (1) If the near side does not near the screen boundary, move the near side\n   along the direction until it meets the screen boundary.\n\n``` txt\n+----------------------------+        +----------------------------+\n|                            |        |                            |\n|   +-------------------+    |        |   +------------------------+\n|   |                   |    |        |   |                       ||\n|   |                   |    |        |   |                       ||\n|   |                   |    | +----\u003e |   |                       ||\n|   |                   |    |        |   |                       ||\n|   +-------------------+    |        |   +------------------------+\n|                            |        |                            |\n|                            |        |                            |\n+----------------------------+        +----------------------------+\n```\n\n* (2) Otherwise, if the far side does not cross the screen mid line yet, move the\n   far side along the direction until it meets the mid line.\n\n``` txt\n+----------------------------+        +----------------------------+\n|                            |        |                            |\n|   +------------------------+        |              +-------------+\n|   |                       ||        |              |            ||\n|   |                       ||        |              |            ||\n|   |                       || +----\u003e |              |            ||\n|   |                       ||        |              |            ||\n|   +------------------------+        |              +-------------+\n|                            |        |                            |\n|                            |        |                            |\n+----------------------------+        +----------------------------+\n```\n\n* (3) Otherwise, if the window does not occupy the 95% of the space in the perpendicular\n   direction yet, resize the window so it fills the half of the screen.\n\n``` txt\n+----------------------------+        +----------------------------+\n|                            |        |              +-------------|\n|              +-------------+        |              |            ||\n|              |            ||        |              |            ||\n|              |            ||        |              |            ||\n|              |            || +----\u003e |              |            ||\n|              |            ||        |              |            ||\n|              +-------------+        |              |            ||\n|                            |        |              |            ||\n|                            |        |              +-------------|\n+----------------------------+        +----------------------------+\n```\n\n* (4) Otherwise, if there's a monitor along the direction, move the window to the\n   next monitor.\n\n```\n     +----------------------------+ +----------------------------+\n     |              +-------------| |                            |\n     |              |            || |                            |\n     |              |            || |                            |\n     |              |            || |                            |\n     |              |            || |                            | +-+\n     |              |            || |                            |   |\n     |              |            || |                            |   |\n     |              |            || |                            |   |\n     |              +-------------| |                            |   |\n     +----------------------------+ +----------------------------+   |\n                                                                     |\n+--------------------------------------------------------------------+\n|\n|    +----------------------------+ +----------------------------+\n|    |                            | |--------------+             |\n|    |                            | ||             |             |\n|    |                            | ||             |             |\n|    |                            | ||             |             |\n+-\u003e  |                            | ||             |             |\n     |                            | ||             |             |\n     |                            | ||             |             |\n     |                            | ||             |             |\n     |                            | |--------------+             |\n     +----------------------------+ +----------------------------+\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoitian%2Fkm-windows-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoitian%2Fkm-windows-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoitian%2Fkm-windows-manager/lists"}