{
  "name": "audio",
  "kind": "bundled",
  "title": "Audio",
  "description": "Switch the sound output or input, set the volume and mute, from a list of every audio device.",
  "version": "0.1.0",
  "icon": {
    "tile": {
      "glyph": "󰕾",
      "bg": "violet"
    }
  },
  "author": "pal",
  "spec": "github:zcag/pal/extensions/audio@v0.17.4",
  "source": "https://github.com/zcag/pal-extensions/tree/HEAD/audio",
  "commit": "4d2559cf9c04d0133c97d7c897f19a14acb9eace",
  "manifest": {
    "name": "audio",
    "title": "Audio",
    "description": "Switch the sound output or input, set the volume and mute, from a list of every audio device.",
    "version": "0.1.0",
    "icon": {
      "tile": {
        "glyph": "󰕾",
        "bg": "violet"
      }
    },
    "author": "pal",
    "repo": "bundled",
    "license": "MIT",
    "store": {
      "tagline": "Switch the output or input, set the volume, mute",
      "category": "system",
      "features": [
        "Every output and input in two sections, the default tagged, the volume and mute state on the right",
        "`enter` makes a device the default for output or input",
        "`cmd+shift+v` sets the volume to the percent you type",
        "`cmd+m` toggles mute",
        "The connection (Bluetooth, USB, built-in, HDMI) in the subtitle when the system reports it"
      ],
      "permissions": [],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-devices.png",
          "caption": "Outputs and inputs in two sections, the defaults tagged, a muted device marked, the volume on the right"
        },
        {
          "file": "2-actions.png",
          "caption": "What a device can do: make it the output, set its volume, mute it"
        },
        {
          "file": "3-volume.png",
          "caption": "Set volume with nothing typed in the bar asks for the percent here, 0 to 100"
        },
        {
          "file": "bar-menubar.png",
          "caption": "On the menu bar: the speaker glyph, and the new level beside it for a moment after a change",
          "kind": "bar"
        },
        {
          "file": "bar-menubar-call.png",
          "caption": "The rest of the time one glyph that says where the sound goes: headphones while the AirPods play",
          "kind": "bar"
        },
        {
          "file": "bar-popover.png",
          "caption": "A click opens the popover: the output in use on a card with a slider and mute, the other outputs as rows, the input in one line",
          "kind": "bar",
          "box": [
            452,
            64,
            840,
            872
          ]
        },
        {
          "file": "bar-popover-call.png",
          "caption": "On a call through the AirPods with the microphone muted: the input line says so in red",
          "kind": "bar",
          "box": [
            452,
            64,
            840,
            872
          ]
        },
        {
          "file": "bar-sketchybar.png",
          "caption": "On sketchybar: the speaker glyph with the level as the label",
          "kind": "bar"
        }
      ],
      "actions": [
        {
          "title": "Set as output / Set as input",
          "description": "Makes the row the default for its direction; the HUD names it.",
          "keys": "enter"
        },
        {
          "title": "Set volume",
          "description": "The percent typed in the bar, 0 to 100, on a device with a volume control.",
          "keys": "cmd+shift+v"
        },
        {
          "title": "Mute / Unmute",
          "description": "Toggles mute and stays in the list.",
          "keys": "cmd+m"
        }
      ]
    },
    "palettes": {
      "audio": {
        "title": "Audio",
        "kind": "live",
        "description": "Every output and input, the defaults tagged, with their volume.",
        "keys": [
          {
            "keys": "enter",
            "title": "Set as the default output or input"
          },
          {
            "keys": "cmd+shift+v",
            "title": "Set the volume to the percent typed in the bar"
          },
          {
            "keys": "cmd+m",
            "title": "Mute or unmute"
          }
        ]
      }
    },
    "states": {
      "input": {
        "description": "The default input: live, muted, or none",
        "kind": "string"
      }
    },
    "bar": {
      "volume": {
        "title": "Volume",
        "description": "The default output's route, and its level for a moment after you change it (see Volume level in the bar). Click mutes, scroll adjusts by 5%. The popover leads with the device in use — a slider a click sets anywhere along it, the level and a mute switch — then the other outputs as rows a click makes default, and the input in one line under them.",
        "keys": [
          {
            "keys": "enter",
            "title": "Use the focused device as the output"
          },
          {
            "keys": "m",
            "title": "Mute or unmute the output in use"
          },
          {
            "keys": "-, +",
            "title": "Quieter or louder by 5%"
          },
          {
            "keys": "0 … 4",
            "title": "Set 0, 25, 50, 75 or 100%; a click anywhere on the slider sets that point"
          },
          {
            "keys": "p",
            "title": "Open the Audio palette in pal"
          },
          {
            "keys": "up, down",
            "title": "Move between the other outputs; a click on one focuses it"
          }
        ],
        "refresh": {
          "every": 5,
          "on": [
            "wake"
          ]
        },
        "mocks": {
          "speakers": {
            "title": "Built-in speakers",
            "item": {
              "icon": "󰖀",
              "icon_size": 18,
              "icon_width": 31,
              "tooltip": "MacBook Pro Speakers · 38%"
            }
          },
          "flash": {
            "title": "Just after a change",
            "item": {
              "icon": "󰕾",
              "title": "72%",
              "icon_size": 18,
              "icon_width": 31,
              "tooltip": "MacBook Pro Speakers · 72%"
            }
          },
          "quiet": {
            "title": "Turned right down",
            "item": {
              "icon": "󰕿",
              "icon_size": 18,
              "icon_width": 31,
              "tooltip": "MacBook Pro Speakers · 12%"
            }
          },
          "headphones": {
            "title": "Bluetooth headphones",
            "item": {
              "icon": "󰋋",
              "icon_size": 18,
              "icon_width": 31,
              "tooltip": "Px8 · 62%"
            }
          },
          "muted": {
            "title": "Muted",
            "item": {
              "icon": "󰝟",
              "color": "muted",
              "icon_size": 18,
              "icon_width": 31,
              "tooltip": "MacBook Pro Speakers, muted"
            }
          },
          "missing": {
            "title": "No output device",
            "item": {
              "hidden": true,
              "icon_size": 18,
              "icon_width": 31,
              "empty": {
                "icon": "󰝟",
                "tooltip": "No output device"
              }
            }
          }
        },
        "settings": [
          {
            "kind": "select",
            "id": "level",
            "label": "Volume level in the bar",
            "description": "The percentage changes only when you change it, so as a permanent fixture it is a number you stop reading. After a change it appears for three seconds as feedback and then collapses back to the glyph alone; the standing answer is the popover, where it sits against the device it applies to. Always keeps it on screen, Never leaves the glyph to speak.",
            "options": [
              {
                "id": "flash",
                "title": "For a moment after a change"
              },
              {
                "id": "always",
                "title": "Always"
              },
              {
                "id": "never",
                "title": "Never"
              }
            ],
            "default": "flash"
          }
        ]
      },
      "microphone": {
        "title": "Microphone",
        "description": "Visible only when the default input is muted or absent. Click restores it to 75%. The popover leads with the microphone in use — a slider, its level and a mute switch — then the other inputs as rows a click makes default, and the output in one line under them.",
        "keys": [
          {
            "keys": "enter",
            "title": "Use the focused device as the input"
          },
          {
            "keys": "m",
            "title": "Mute or unmute the microphone"
          },
          {
            "keys": "-, +",
            "title": "Quieter or louder by 5%"
          },
          {
            "keys": "0 … 4",
            "title": "Set 0, 25, 50, 75 or 100%; a click anywhere on the slider sets that point"
          },
          {
            "keys": "p",
            "title": "Open the Audio palette in pal"
          },
          {
            "keys": "up, down",
            "title": "Move between the other inputs; a click on one focuses it"
          }
        ],
        "refresh": {
          "every": 5,
          "on": [
            "wake"
          ]
        },
        "mocks": {
          "muted": {
            "title": "Muted microphone",
            "item": {
              "icon": "󰍭",
              "color": "red",
              "tooltip": "MacBook Pro Microphone, muted"
            }
          },
          "missing": {
            "title": "No input device",
            "item": {
              "icon": "󰍮",
              "color": "red",
              "tooltip": "No input device"
            }
          },
          "normal": {
            "title": "Input available",
            "item": {
              "hidden": true,
              "empty": {
                "icon": "󰍬",
                "tooltip": "MacBook Pro Microphone · 75%"
              }
            }
          }
        },
        "rules": [
          {
            "id": "live",
            "when": "audio.input == 'live'",
            "description": "A live mic needs no attention: off the strip.",
            "hidden": true
          },
          {
            "id": "muted",
            "when": "audio.input == 'muted'",
            "description": "Muted: red, so a call finds it.",
            "color": "red"
          },
          {
            "id": "missing",
            "when": "audio.input == 'none'",
            "description": "No input device: red (turn Hidden on to leave it quiet).",
            "color": "red"
          }
        ]
      }
    }
  },
  "playable": false,
  "updated_at": "2026-11-02T04:38:11Z",
  "url": "https://pal.cagdas.io/extensions/audio",
  "tagline": "Switch the output or input, set the volume, mute",
  "category": "system",
  "screenshots": [
    "https://pal.cagdas.io/extensions/audio/screenshots/1-devices-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/1-devices.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/2-actions-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/2-actions.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/3-volume-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/3-volume.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-menubar-call-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-menubar-call.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-menubar.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-popover-call-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-popover-call.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-popover-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-popover.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-sketchybar-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/audio/screenshots/1-devices.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/2-actions.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/3-volume.png"
  ],
  "bar_screenshots": [
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-menubar-call.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-menubar.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-popover-call.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-popover.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots_dark": [
    "https://pal.cagdas.io/extensions/audio/screenshots/1-devices-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/2-actions-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/3-volume-dark.png"
  ],
  "bar_screenshots_dark": [
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-menubar-call-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-popover-call-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-popover-dark.png",
    "https://pal.cagdas.io/extensions/audio/screenshots/bar-sketchybar-dark.png"
  ],
  "has_bar": true,
  "bar_items": [
    {
      "id": "volume",
      "title": "Volume",
      "description": "The default output's route, and its level for a moment after you change it (see Volume level in the bar). Click mutes, scroll adjusts by 5%. The popover leads with the device in use — a slider a click sets anywhere along it, the level and a mute switch — then the other outputs as rows a click makes default, and the input in one line under them.",
      "refresh": {
        "every": 5,
        "on": [
          "wake"
        ]
      },
      "refresh_words": "every 5s, on wake"
    },
    {
      "id": "microphone",
      "title": "Microphone",
      "description": "Visible only when the default input is muted or absent. Click restores it to 75%. The popover leads with the microphone in use — a slider, its level and a mute switch — then the other inputs as rows a click makes default, and the output in one line under them.",
      "refresh": {
        "every": 5,
        "on": [
          "wake"
        ]
      },
      "refresh_words": "every 5s, on wake"
    }
  ],
  "has_links": false,
  "links": [],
  "multi": false,
  "has_readme": true
}
