{
  "name": "space",
  "kind": "registry",
  "title": "Disk Space",
  "description": "See what fills your disk as a zoomable map of boxes sized by space, with the biggest files and folders listed and cleanup suggestions like caches and old build folders. Everything deleted goes to the Trash after a confirm.",
  "version": "0.1.0",
  "icon": {
    "tile": {
      "glyph": "󰋊",
      "bg": "cyan"
    }
  },
  "author": "pal",
  "spec": "github:zcag/pal/extensions/space@v0.9.1",
  "source": "https://github.com/zcag/pal/tree/HEAD/extensions/space",
  "commit": "63287e180ce349dac3aa87c68ce4c80bc42ad409",
  "manifest": {
    "name": "space",
    "title": "Disk Space",
    "description": "See what fills your disk as a zoomable map of boxes sized by space, with the biggest files and folders listed and cleanup suggestions like caches and old build folders. Everything deleted goes to the Trash after a confirm.",
    "version": "0.1.0",
    "icon": {
      "tile": {
        "glyph": "󰋊",
        "bg": "cyan"
      }
    },
    "author": "pal",
    "repo": "bundled",
    "license": "MIT",
    "keywords": [
      "disk",
      "space",
      "storage",
      "treemap",
      "cleanup",
      "du"
    ],
    "settings": [
      {
        "kind": "select",
        "id": "sizes",
        "label": "Sizes",
        "description": "What the boxes and rows measure: the blocks a file takes on disk (what deleting it frees; sparse and compressed files are small), or its apparent length.",
        "options": [
          {
            "id": "allocated",
            "title": "On disk (allocated)"
          },
          {
            "id": "apparent",
            "title": "Apparent"
          }
        ],
        "default": "allocated"
      },
      {
        "kind": "select",
        "id": "colour",
        "label": "Colour boxes by",
        "description": "The kind of file (folder, image, video, code, archive, ...), or the place among the siblings with the nested boxes in their parent's hue (the DaisyDisk ring). `c` in the map flips it.",
        "options": [
          {
            "id": "kind",
            "title": "Kind"
          },
          {
            "id": "depth",
            "title": "Depth"
          }
        ],
        "default": "kind"
      },
      {
        "kind": "boolean",
        "id": "cross_devices",
        "label": "Cross into other volumes",
        "text": "Count folders on other file systems (mounted disks, images) under the root",
        "description": "Off, a scan stays on the root's volume, so a scan of Macintosh HD does not walk every mounted disk. macOS firmlinks (/Users, /Applications on the Data volume) are always crossed.",
        "default": false
      },
      {
        "kind": "number",
        "id": "largest",
        "label": "Largest lists",
        "description": "How many rows Largest Files and Largest Folders show.",
        "min": 10,
        "max": 1000,
        "unit": "rows",
        "default": 100
      },
      {
        "kind": "number",
        "id": "stale_days",
        "label": "Stale after",
        "description": "Cleanup Suggestions count a node_modules or target folder, and a download, as stale past this age.",
        "min": 1,
        "max": 365,
        "unit": "days",
        "default": 30
      }
    ],
    "store": {
      "tagline": "See what fills your disk, and clean it up",
      "category": "system",
      "features": [
        "A zoomable map of any folder or volume: `enter` zooms in, `backspace` out, the arrows move around",
        "Fast scans that draw as they run, and reopen instantly next time",
        "The largest files and folders, with Quick Look, reveal and copy path",
        "Cleanup suggestions: caches, stale `node_modules` and `target` folders, Xcode's DerivedData, old downloads",
        "Mark several boxes with `m` and move them to the Trash together, after one confirm"
      ],
      "permissions": [
        "Full Disk Access, for ~/Library/Mail and the like (unreadable folders are counted and named)"
      ],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-map.png",
          "caption": "A home folder as a map: every folder a box sized by what it holds and coloured by kind, the list of the biggest beside it"
        },
        {
          "file": "2-zoomed.png",
          "caption": "Zoomed into a project, its build output and node_modules marked: one keystroke sends both to the Trash"
        },
        {
          "file": "3-largest.png",
          "caption": "The largest files anywhere under the root, each with its folder, kind and size; filter to videos or disk images"
        },
        {
          "file": "4-cleanup.png",
          "caption": "Cleanup suggestions: caches, package stores, the Trash, old downloads and stale build folders, each with what it frees and what to know"
        }
      ],
      "actions": [
        {
          "title": "Zoom in / Open",
          "description": "The focused folder becomes the board; a file opens.",
          "keys": "enter"
        },
        {
          "title": "Zoom out",
          "description": "Back up one folder.",
          "keys": "backspace"
        },
        {
          "title": "Focus",
          "description": "The arrows move between boxes by position, Tab by size.",
          "keys": "up, down, left, right, tab"
        },
        {
          "title": "Mark for the trash",
          "description": "Toggles the focused box; the marked total shows in the header.",
          "keys": "m"
        },
        {
          "title": "Move to Trash",
          "description": "The focused box, or every marked one, after a confirm.",
          "keys": "cmd+d"
        },
        {
          "title": "Quick Look, Open, Reveal, Copy path, Info",
          "description": "The file actions.",
          "keys": "space, cmd+o, cmd+enter, cmd+c, i"
        },
        {
          "title": "Rescan",
          "description": "This folder again (the root: everything). While scanning: stop.",
          "keys": "cmd+r"
        }
      ]
    },
    "palettes": {
      "space": {
        "title": "Disk Space",
        "kind": "live",
        "description": "Where to look: your home folder, every mounted volume with its free space, the folders scanned before with their age, and a folder typed in the bar. Enter opens the map.",
        "keys": [
          {
            "keys": "enter",
            "title": "Open the map (scans first when there is none)"
          },
          {
            "keys": "cmd+enter",
            "title": "Largest files under it"
          },
          {
            "keys": "cmd+shift+l",
            "title": "Largest folders under it"
          },
          {
            "keys": "cmd+r",
            "title": "Scan again"
          },
          {
            "keys": "cmd+shift+d",
            "title": "Forget the saved scan"
          }
        ]
      },
      "map": {
        "title": "Disk Map",
        "kind": "view",
        "description": "The treemap: the folder's children as boxes, area by size, their own children faintly inside; zoom in and out, mark and trash.",
        "keys": [
          {
            "keys": "enter",
            "title": "Zoom into the focused folder; open a file"
          },
          {
            "keys": "cmd+enter",
            "title": "Reveal in Finder"
          },
          {
            "keys": "backspace",
            "title": "Zoom out"
          },
          {
            "keys": "up",
            "title": "Focus the box in that direction (also down, left, right, and hjkl)"
          },
          {
            "keys": "tab",
            "title": "Next box by size (shift+tab back)"
          },
          {
            "keys": "m",
            "title": "Mark or unmark for the trash"
          },
          {
            "keys": "cmd+d",
            "title": "Move to Trash: the focused box, or every marked one (asks first)"
          },
          {
            "keys": "space",
            "title": "Quick Look (macOS)"
          },
          {
            "keys": "cmd+o",
            "title": "Open"
          },
          {
            "keys": "cmd+c",
            "title": "Copy path"
          },
          {
            "keys": "i",
            "title": "Info: kind, sizes, count, modified, owner"
          },
          {
            "keys": "cmd+l",
            "title": "Largest files under this folder"
          },
          {
            "keys": "c",
            "title": "Colour by kind or depth"
          },
          {
            "keys": "a",
            "title": "Sizes on disk or apparent"
          },
          {
            "keys": "cmd+r",
            "title": "Rescan this folder; stop a running scan"
          }
        ]
      },
      "largest": {
        "title": "Largest Files",
        "kind": "live",
        "lazy": true,
        "description": "The biggest files under the last scanned root (or the root a link names), kind as a tag; a filter by kind.",
        "keys": [
          {
            "keys": "enter",
            "title": "Open"
          },
          {
            "keys": "cmd+enter",
            "title": "Reveal in Finder"
          },
          {
            "keys": "cmd+y",
            "title": "Quick Look"
          },
          {
            "keys": "cmd+m",
            "title": "Show in the map"
          },
          {
            "keys": "cmd+c",
            "title": "Copy path"
          },
          {
            "keys": "cmd+d",
            "title": "Move to Trash (asks; marked rows together)"
          }
        ]
      },
      "folders": {
        "title": "Largest Folders",
        "kind": "live",
        "lazy": true,
        "description": "The biggest folders under the last scanned root, with their file counts.",
        "keys": [
          {
            "keys": "enter",
            "title": "Show in the map"
          },
          {
            "keys": "cmd+enter",
            "title": "Reveal in Finder"
          },
          {
            "keys": "cmd+l",
            "title": "Largest files under it"
          },
          {
            "keys": "cmd+c",
            "title": "Copy path"
          },
          {
            "keys": "cmd+d",
            "title": "Move to Trash (asks)"
          }
        ]
      },
      "cleanup": {
        "title": "Cleanup Suggestions",
        "kind": "live",
        "lazy": true,
        "description": "What is usually safe to clear, with its size: user and package caches, Xcode's DerivedData, node_modules and target folders untouched for a month, downloads older than a month, the Trash. Every action asks first and goes to the Trash.",
        "keys": [
          {
            "keys": "enter",
            "title": "Show in the map"
          },
          {
            "keys": "cmd+enter",
            "title": "Reveal in Finder"
          },
          {
            "keys": "cmd+d",
            "title": "Move to Trash (asks); Empty Trash on the Trash row"
          }
        ]
      }
    },
    "links": {
      "scan": {
        "description": "Open the map of a folder, scanning it first when there is no scan",
        "params": {
          "root": {
            "description": "The folder; ~ is expanded. The home folder without it."
          },
          "rescan": {
            "description": "Scan again even when a scan is saved",
            "type": "boolean"
          }
        }
      },
      "largest": {
        "description": "Open the largest files under a folder",
        "params": {
          "root": {
            "description": "The folder; ~ is expanded. The last scanned root without it."
          }
        }
      }
    }
  },
  "playable": false,
  "updated_at": "2026-09-30T01:45:08Z",
  "url": "https://pal.cagdas.io/extensions/space",
  "tagline": "See what fills your disk, and clean it up",
  "category": "system",
  "screenshots": [
    "https://pal.cagdas.io/extensions/space/screenshots/1-map-dark.png",
    "https://pal.cagdas.io/extensions/space/screenshots/1-map.png",
    "https://pal.cagdas.io/extensions/space/screenshots/2-zoomed-dark.png",
    "https://pal.cagdas.io/extensions/space/screenshots/2-zoomed.png",
    "https://pal.cagdas.io/extensions/space/screenshots/3-largest-dark.png",
    "https://pal.cagdas.io/extensions/space/screenshots/3-largest.png",
    "https://pal.cagdas.io/extensions/space/screenshots/4-cleanup-dark.png",
    "https://pal.cagdas.io/extensions/space/screenshots/4-cleanup.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/space/screenshots/1-map.png",
    "https://pal.cagdas.io/extensions/space/screenshots/2-zoomed.png",
    "https://pal.cagdas.io/extensions/space/screenshots/3-largest.png",
    "https://pal.cagdas.io/extensions/space/screenshots/4-cleanup.png"
  ],
  "bar_screenshots": [],
  "panel_screenshots_dark": [
    "https://pal.cagdas.io/extensions/space/screenshots/1-map-dark.png",
    "https://pal.cagdas.io/extensions/space/screenshots/2-zoomed-dark.png",
    "https://pal.cagdas.io/extensions/space/screenshots/3-largest-dark.png",
    "https://pal.cagdas.io/extensions/space/screenshots/4-cleanup-dark.png"
  ],
  "bar_screenshots_dark": [],
  "has_bar": false,
  "bar_items": [],
  "has_links": true,
  "links": [
    {
      "route": "scan",
      "url": "pal://space/scan",
      "cli": "pal call space/scan",
      "description": "Open the map of a folder, scanning it first when there is no scan",
      "params": [
        {
          "name": "root",
          "description": "The folder; ~ is expanded. The home folder without it."
        },
        {
          "name": "rescan",
          "description": "Scan again even when a scan is saved",
          "type": "boolean"
        }
      ]
    },
    {
      "route": "largest",
      "url": "pal://space/largest",
      "cli": "pal call space/largest",
      "description": "Open the largest files under a folder",
      "params": [
        {
          "name": "root",
          "description": "The folder; ~ is expanded. The last scanned root without it."
        }
      ]
    }
  ],
  "multi": false,
  "has_readme": true
}
