{
  "name": "window-management",
  "kind": "bundled",
  "title": "Window Management",
  "description": "Move and resize the focused window, or any window, from the keyboard: halves, thirds, quarters, maximize, center, resize to a size, nudge, fullscreen, the next display, and back to where it was.",
  "version": "0.1.0",
  "icon": {
    "tile": {
      "glyph": "󱂪",
      "bg": "indigo"
    }
  },
  "author": "pal",
  "spec": "github:zcag/pal/extensions/window-management@v0.17.4",
  "source": "https://github.com/zcag/pal-extensions/tree/HEAD/window-management",
  "commit": "4d2559cf9c04d0133c97d7c897f19a14acb9eace",
  "manifest": {
    "name": "window-management",
    "title": "Window Management",
    "description": "Move and resize the focused window, or any window, from the keyboard: halves, thirds, quarters, maximize, center, resize to a size, nudge, fullscreen, the next display, and back to where it was.",
    "version": "0.1.0",
    "icon": {
      "tile": {
        "glyph": "󱂪",
        "bg": "indigo"
      }
    },
    "author": "pal",
    "repo": "bundled",
    "license": "MIT",
    "settings": [
      {
        "kind": "number",
        "id": "gap",
        "label": "Gap",
        "description": "Pixels between a window and the screen edge, and between two windows of a split.",
        "min": 0,
        "max": 128,
        "step": 1,
        "unit": "px",
        "default": 0
      },
      {
        "kind": "number",
        "id": "almost_maximize_percent",
        "label": "Almost Maximize",
        "description": "How much of the screen Almost Maximize fills, centred.",
        "min": 10,
        "max": 100,
        "step": 1,
        "unit": "%",
        "default": 90
      },
      {
        "kind": "number",
        "id": "reasonable_size_percent",
        "label": "Reasonable Size",
        "description": "How much of the screen Reasonable Size fills, centred.",
        "min": 10,
        "max": 100,
        "step": 1,
        "unit": "%",
        "default": 60
      },
      {
        "kind": "number",
        "id": "step",
        "label": "Move step",
        "description": "Pixels Move Left, Right, Up and Down nudge the window by.",
        "min": 1,
        "max": 512,
        "step": 1,
        "unit": "px",
        "default": 32
      },
      {
        "kind": "boolean",
        "id": "cycle",
        "label": "Cycle on repeat",
        "text": "A half applied again steps to two thirds, then a third, then the half (left and right families), as Rectangle does",
        "default": false
      }
    ],
    "store": {
      "tagline": "Snap, resize and move any window from the keyboard",
      "category": "productivity",
      "features": [
        "32 layouts: halves, thirds, quarters, maximize, center, larger, smaller, move, next display, fullscreen, minimize",
        "Acts on the window you were in; `cmd+enter` picks another window first",
        "Restore puts a window back where it was before a run of layouts",
        "Resize to a size typed in the search bar (`1280x720`), keeping the window centred",
        "A gap between windows and a nudge step to set; with `cycle` on, Left Half again steps through two thirds and a third",
        "Global hotkeys per layout move the focused window without opening the panel"
      ],
      "permissions": [
        "accessibility"
      ],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-layouts.png",
          "caption": "Every layout with its diagram; Enter applies it to the focused window"
        },
        {
          "file": "2-search.png",
          "caption": "Typing narrows the list: quarter leaves the four corners"
        },
        {
          "file": "3-arrange.png",
          "caption": "Arrange Window picks the window first, from every one open, then the layout for it"
        },
        {
          "file": "4-target.png",
          "caption": "The layouts again, the picked window named under each"
        },
        {
          "file": "5-verbs.png",
          "caption": "Moves by a step, the next display, fullscreen, minimize, unminimize and restore, each with its diagram"
        },
        {
          "file": "6-resize.png",
          "caption": "Resize to… is a form: a size in pixels and, if you like, a place; left blank the window stays centred where it is"
        }
      ],
      "actions": [
        {
          "title": "Apply",
          "description": "The layout on the focused window.",
          "keys": "enter"
        },
        {
          "title": "Apply to…",
          "description": "Pick a window from the open ones, then the layout goes on that one.",
          "keys": "cmd+enter"
        },
        {
          "title": "Resize",
          "description": "On Resize to…: the bar takes the size (required) and X, Y (optional); the size (and place) typed goes on the window and the HUD says the size.",
          "keys": "enter"
        },
        {
          "title": "Arrange",
          "description": "In Arrange Window: the layouts for the picked window.",
          "keys": "enter"
        }
      ]
    },
    "links": {
      "layout": {
        "description": "Move the focused window to a layout",
        "params": {
          "name": {
            "description": "left_half, right_half, maximize, larger, move_left, fullscreen, minimize, next_display, restore, ... (the row ids; Resize to… takes its size in the bar, not from a link)",
            "required": true
          }
        }
      }
    },
    "palettes": {
      "window-management": {
        "title": "Window Management",
        "kind": "list",
        "description": "One row per layout; Enter applies it to the window you were in.",
        "keys": [
          {
            "keys": "enter",
            "title": "Apply to the focused window"
          },
          {
            "keys": "cmd+enter",
            "title": "Apply to a window you pick"
          }
        ]
      },
      "arrange": {
        "title": "Arrange Window",
        "kind": "input",
        "description": "Pick a window first, then the layout.",
        "keys": [
          {
            "keys": "enter",
            "title": "Pick the window, then its layout"
          }
        ]
      }
    }
  },
  "playable": false,
  "updated_at": "2026-11-02T04:38:11Z",
  "url": "https://pal.cagdas.io/extensions/window-management",
  "tagline": "Snap, resize and move any window from the keyboard",
  "category": "productivity",
  "screenshots": [
    "https://pal.cagdas.io/extensions/window-management/screenshots/1-layouts-dark.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/1-layouts.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/2-search-dark.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/2-search.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/3-arrange-dark.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/3-arrange.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/4-target-dark.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/4-target.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/5-verbs-dark.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/5-verbs.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/6-resize-dark.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/6-resize.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/window-management/screenshots/1-layouts.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/2-search.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/3-arrange.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/4-target.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/5-verbs.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/6-resize.png"
  ],
  "bar_screenshots": [],
  "panel_screenshots_dark": [
    "https://pal.cagdas.io/extensions/window-management/screenshots/1-layouts-dark.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/2-search-dark.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/3-arrange-dark.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/4-target-dark.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/5-verbs-dark.png",
    "https://pal.cagdas.io/extensions/window-management/screenshots/6-resize-dark.png"
  ],
  "bar_screenshots_dark": [],
  "has_bar": false,
  "bar_items": [],
  "has_links": true,
  "links": [
    {
      "route": "layout",
      "url": "pal://window-management/layout?name=\u003cname\u003e",
      "cli": "pal call window-management/layout name=\u003cname\u003e",
      "description": "Move the focused window to a layout",
      "params": [
        {
          "name": "name",
          "description": "left_half, right_half, maximize, larger, move_left, fullscreen, minimize, next_display, restore, ... (the row ids; Resize to… takes its size in the bar, not from a link)",
          "required": true
        }
      ]
    }
  ],
  "multi": false,
  "has_readme": true
}
