{
  "name": "bluetooth",
  "kind": "bundled",
  "title": "Bluetooth",
  "description": "Connect and disconnect your paired Bluetooth devices, with their battery levels in view.",
  "version": "0.1.0",
  "icon": {
    "tile": {
      "glyph": "󰂯",
      "bg": "blue"
    }
  },
  "author": "pal",
  "spec": "github:zcag/pal/extensions/bluetooth@v0.17.4",
  "source": "https://github.com/zcag/pal-extensions/tree/HEAD/bluetooth",
  "commit": "4d2559cf9c04d0133c97d7c897f19a14acb9eace",
  "manifest": {
    "name": "bluetooth",
    "title": "Bluetooth",
    "description": "Connect and disconnect your paired Bluetooth devices, with their battery levels in view.",
    "version": "0.1.0",
    "icon": {
      "tile": {
        "glyph": "󰂯",
        "bg": "blue"
      }
    },
    "author": "pal",
    "repo": "bundled",
    "license": "MIT",
    "store": {
      "tagline": "Connect and disconnect paired devices, battery in view",
      "category": "system",
      "features": [
        "Every paired device, connected ones first, with a mark for its kind (headphones, keyboard, mouse, controller)",
        "Battery levels when the device reports them; AirPods show left, right and case",
        "`enter` connects or disconnects; disconnecting asks first",
        "`cmd+c` copies the device address",
        "Nothing to install on macOS; uses `bluetoothctl` on Linux"
      ],
      "permissions": [],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-devices.png",
          "caption": "Paired devices, the connected ones first with their battery, the AirPods bud by bud"
        },
        {
          "file": "2-actions.png",
          "caption": "A device that is away: connect it, or copy its address"
        },
        {
          "file": "3-disconnect.png",
          "caption": "Enter on a connected device disconnects it, after asking"
        },
        {
          "file": "bar-menubar.png",
          "caption": "On the menu bar only while a device runs low: the count, red once one is at 20% or under",
          "kind": "bar"
        },
        {
          "file": "bar-menubar-one.png",
          "caption": "One device low: its name and level, amber until it reaches 20%",
          "kind": "bar"
        },
        {
          "file": "bar-popover.png",
          "caption": "A click opens the popover: the lowest battery leads, large, then the other low ones and the rest; Enter disconnects, c copies the address",
          "kind": "bar",
          "box": [
            414,
            64,
            840,
            890
          ]
        },
        {
          "file": "bar-sketchybar.png",
          "caption": "On sketchybar: the battery alert and the low count on red",
          "kind": "bar"
        }
      ],
      "actions": [
        {
          "title": "Connect / Disconnect",
          "description": "Toggles the connection; Disconnect asks first; the HUD says which happened. Mark several devices to connect or disconnect them together.",
          "keys": "enter"
        },
        {
          "title": "Copy address",
          "keys": "cmd+c"
        }
      ]
    },
    "palettes": {
      "bluetooth": {
        "title": "Bluetooth",
        "kind": "live",
        "description": "Every paired device, the connected ones first, with battery when the OS reports it.",
        "keys": [
          {
            "keys": "enter",
            "title": "Connect or disconnect"
          },
          {
            "keys": "cmd+c",
            "title": "Copy the address"
          }
        ]
      }
    },
    "states": {
      "low": {
        "description": "Connected devices at or under the low threshold",
        "kind": "number"
      },
      "lowest": {
        "description": "The lowest battery among the connected devices, percent",
        "kind": "number"
      },
      "connected": {
        "description": "Connected devices",
        "kind": "number"
      }
    },
    "bar": {
      "battery": {
        "keys": [
          {
            "keys": "enter",
            "title": "Disconnect the focused device"
          },
          {
            "keys": "c",
            "title": "Copy the focused device address"
          },
          {
            "keys": "s",
            "title": "Open Bluetooth Settings"
          },
          {
            "keys": "r",
            "title": "Refresh the battery readings"
          }
        ],
        "title": "Bluetooth Battery",
        "description": "Visible only when a connected device with a reported battery reaches the low alert level. Click opens Bluetooth Settings; the popover leads with the lowest battery, large, then the other low devices, the other connected battery readings and connected devices with no reading.",
        "refresh": {
          "every": 60,
          "on": [
            "wake"
          ]
        },
        "mocks": {
          "low": {
            "title": "Low headphones",
            "item": {
              "icon": "󰂃",
              "title": "AirPods Pro 24%",
              "color": "amber",
              "tooltip": "AirPods Pro 24% (L 28% · R 24% · Case 62%)"
            }
          },
          "critical": {
            "title": "Critical devices",
            "item": {
              "icon": "󰂃",
              "title": "2 low",
              "color": "red",
              "tooltip": "Corne 8% · AirPods Pro 14%"
            }
          },
          "connected": {
            "title": "All healthy, the connected devices kept on the bar (Connected)",
            "item": {
              "icon": "󰂱",
              "color": "muted",
              "tooltip": "AirPods Pro 84% · Corne 91%"
            }
          },
          "clear": {
            "title": "All healthy",
            "item": {
              "hidden": true,
              "empty": {
                "icon": "󰂯",
                "tooltip": "No connected devices"
              }
            }
          }
        },
        "rules": [
          {
            "id": "none",
            "when": "bluetooth.connected == 0",
            "description": "Nothing connected: off the strip.",
            "hidden": true
          },
          {
            "id": "fine",
            "when": "bluetooth.low == 0",
            "description": "Nothing low: off the strip (turn Hidden off to keep a muted glyph up while a device is connected).",
            "hidden": true,
            "color": "muted"
          },
          {
            "id": "low",
            "when": "bluetooth.low \u003e 0",
            "description": "A device is low: a reminder.",
            "color": "amber"
          },
          {
            "id": "critical",
            "when": "bluetooth.low \u003e 0 and bluetooth.lowest \u003c= 20",
            "description": "Act now.",
            "color": "red"
          }
        ],
        "settings": [
          {
            "kind": "number",
            "id": "low_threshold",
            "label": "Low battery alert",
            "description": "A connected device at or below this level counts as low: named on the bar item, and its rules show the item. At 20% or below (or this level when lower) the tint is red.",
            "min": 1,
            "max": 100,
            "unit": "%",
            "default": 25
          }
        ]
      }
    }
  },
  "playable": false,
  "updated_at": "2026-11-02T04:38:11Z",
  "url": "https://pal.cagdas.io/extensions/bluetooth",
  "tagline": "Connect and disconnect paired devices, battery in view",
  "category": "system",
  "screenshots": [
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/1-devices-dark.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/1-devices.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/2-actions-dark.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/2-actions.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/3-disconnect-dark.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/3-disconnect.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-menubar-one-dark.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-menubar-one.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-menubar.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-popover-dark.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-popover.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-sketchybar-dark.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/1-devices.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/2-actions.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/3-disconnect.png"
  ],
  "bar_screenshots": [
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-menubar-one.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-menubar.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-popover.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots_dark": [
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/1-devices-dark.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/2-actions-dark.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/3-disconnect-dark.png"
  ],
  "bar_screenshots_dark": [
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-menubar-one-dark.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-popover-dark.png",
    "https://pal.cagdas.io/extensions/bluetooth/screenshots/bar-sketchybar-dark.png"
  ],
  "has_bar": true,
  "bar_items": [
    {
      "id": "battery",
      "title": "Bluetooth Battery",
      "description": "Visible only when a connected device with a reported battery reaches the low alert level. Click opens Bluetooth Settings; the popover leads with the lowest battery, large, then the other low devices, the other connected battery readings and connected devices with no reading.",
      "refresh": {
        "every": 60,
        "on": [
          "wake"
        ]
      },
      "refresh_words": "every 1 min, on wake"
    }
  ],
  "has_links": false,
  "links": [],
  "multi": false,
  "has_readme": true
}
