{
  "name": "timer",
  "kind": "bundled",
  "title": "Timer",
  "description": "Named countdown timers over the `timer` CLI: the soonest one on the bar with a fill and a red alarm when it lands, the list, pause, resume and stop in the palette.",
  "version": "0.1.0",
  "icon": "󰔛",
  "author": "pal",
  "spec": "github:zcag/pal/extensions/timer@pali",
  "source": "https://github.com/zcag/pal/tree/pali/extensions/timer",
  "commit": "a84c75d8e1ff65aae49fd8acc1cf888a84c8a465",
  "manifest": {
    "name": "timer",
    "title": "Timer",
    "description": "Named countdown timers over the `timer` CLI: the soonest one on the bar with a fill and a red alarm when it lands, the list, pause, resume and stop in the palette.",
    "version": "0.1.0",
    "icon": "󰔛",
    "author": "pal",
    "repo": "bundled",
    "settings": [
      {
        "kind": "path",
        "id": "command",
        "label": "timer command",
        "description": "The timer CLI (a name on PATH or a path). It keeps the timers; pal only reads and asks.",
        "pick": "file",
        "default": "timer"
      },
      {
        "kind": "path",
        "id": "dir",
        "label": "State directory",
        "description": "Where the CLI keeps one file per timer (its TIMER_DIR). ~ is expanded.",
        "pick": "folder",
        "default": "~/.local/share/timer"
      }
    ],
    "palettes": {
      "timers": {
        "title": "Timers",
        "description": "Every timer with what is left; New timer asks for a duration and a name.",
        "kind": "live",
        "keys": [
          {
            "keys": "enter",
            "title": "Pause, resume or dismiss"
          },
          {
            "keys": "cmd++",
            "title": "Add five minutes"
          },
          {
            "keys": "cmd+d",
            "title": "Stop"
          }
        ]
      }
    },
    "bar": {
      "timer": {
        "title": "Timer",
        "description": "The soonest timer's remaining time with a fill; an alarm once it lands; hidden with none running.",
        "refresh": {
          "every": 10,
          "on": [
            "wake"
          ]
        }
      }
    },
    "license": "MIT",
    "store": {
      "tagline": "Named countdowns, with an alarm on the bar when one lands",
      "category": "productivity",
      "features": [
        "One row per timer, most urgent first: `3:12 left, done at 04:41 PM`, `Paused at 41:05`, `Landed 1:35 ago`, with a state tag",
        "New timer is a form: `25m`, `90s`, `1h30m` or a bare number of minutes, an optional name, and a checkbox to ring the phone when it lands",
        "`enter` pauses, resumes or dismisses; `cmd++` adds five minutes; `cmd+d` stops",
        "The CLI keeps the timers, so one started in a terminal and one started here are the same list",
        "A bar item with the soonest timer's countdown and a fill, blue to amber to red, an alarm once it lands; hidden with none"
      ],
      "permissions": [
        "timer"
      ],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-timers.png",
          "caption": "Every timer with what is left: a landed one, two running, one paused, and New timer last"
        },
        {
          "file": "2-new.png",
          "caption": "New timer: a duration, an optional name, ring the phone when it lands"
        },
        {
          "file": "3-actions.png",
          "caption": "Pause, add five minutes, or stop a running timer"
        },
        {
          "file": "bar-menubar-dark.png",
          "caption": "On the menu bar: what is left of the soonest timer, a fill under the glyph, amber past two thirds",
          "kind": "bar"
        },
        {
          "file": "bar-menubar-light.png",
          "caption": "A timer that landed: the item turns into a red alarm with its name",
          "kind": "bar"
        },
        {
          "file": "bar-menubar-popover.png",
          "caption": "A click opens the Timers palette: every timer, pause, add five minutes, stop",
          "kind": "bar"
        },
        {
          "file": "bar-sketchybar.png",
          "caption": "On sketchybar: the fill as a rule of box-drawing cells before the glyph, the countdown as the label",
          "kind": "bar"
        }
      ],
      "actions": [
        {
          "title": "Pause / Resume / Dismiss",
          "description": "Pause a running timer, resume a paused one, dismiss a landed one.",
          "keys": "enter"
        },
        {
          "title": "Add 5 minutes",
          "keys": "cmd++"
        },
        {
          "title": "Stop",
          "description": "The timer is gone.",
          "keys": "cmd+d"
        },
        {
          "title": "New timer",
          "description": "A form: duration, name, ring the phone.",
          "keys": "enter"
        }
      ]
    }
  },
  "updated_at": "2026-09-16T16:35:58Z",
  "url": "https://pal.cagdas.io/extensions/timer",
  "tagline": "Named countdowns, with an alarm on the bar when one lands",
  "category": "productivity",
  "screenshots": [
    "https://pal.cagdas.io/extensions/timer/screenshots/1-timers.png",
    "https://pal.cagdas.io/extensions/timer/screenshots/2-new.png",
    "https://pal.cagdas.io/extensions/timer/screenshots/3-actions.png",
    "https://pal.cagdas.io/extensions/timer/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/timer/screenshots/bar-menubar-light.png",
    "https://pal.cagdas.io/extensions/timer/screenshots/bar-menubar-popover.png",
    "https://pal.cagdas.io/extensions/timer/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/timer/screenshots/1-timers.png",
    "https://pal.cagdas.io/extensions/timer/screenshots/2-new.png",
    "https://pal.cagdas.io/extensions/timer/screenshots/3-actions.png"
  ],
  "bar_screenshots": [
    "https://pal.cagdas.io/extensions/timer/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/timer/screenshots/bar-menubar-light.png",
    "https://pal.cagdas.io/extensions/timer/screenshots/bar-menubar-popover.png",
    "https://pal.cagdas.io/extensions/timer/screenshots/bar-sketchybar.png"
  ],
  "has_bar": true,
  "bar_items": [
    {
      "id": "timer",
      "title": "Timer",
      "description": "The soonest timer's remaining time with a fill; an alarm once it lands; hidden with none running.",
      "refresh": {
        "every": 10,
        "on": [
          "wake"
        ]
      },
      "refresh_words": "every 10s, on wake"
    }
  ],
  "has_readme": true
}
