{
  "name": "media",
  "kind": "bundled",
  "title": "Now Playing",
  "description": "Control what is playing in Spotify, Music, a browser or any other player: play, pause and skip from the panel, with the track on the bar.",
  "version": "0.1.0",
  "icon": {
    "tile": {
      "glyph": "󰝚",
      "bg": "green"
    }
  },
  "author": "pal",
  "spec": "github:zcag/pal/extensions/media@v0.17.4",
  "source": "https://github.com/zcag/pal-extensions/tree/HEAD/media",
  "commit": "4d2559cf9c04d0133c97d7c897f19a14acb9eace",
  "manifest": {
    "name": "media",
    "title": "Now Playing",
    "description": "Control what is playing in Spotify, Music, a browser or any other player: play, pause and skip from the panel, with the track on the bar.",
    "version": "0.1.0",
    "icon": {
      "tile": {
        "glyph": "󰝚",
        "bg": "green"
      }
    },
    "author": "pal",
    "repo": "bundled",
    "settings": [
      {
        "kind": "list",
        "id": "exclude",
        "label": "Leave to another extension",
        "placeholder": "Spotify",
        "description": "Players this extension leaves to another (the Spotify extension's own item, say), by app name (Spotify, Music, Google Chrome) or player id (spotify, music, system): the bar item and the root's Now row skip them; the palette still lists them.",
        "default": []
      }
    ],
    "palettes": {
      "media": {
        "title": "Now Playing",
        "description": "One row per player with the track and its artwork.",
        "kind": "live",
        "keys": [
          {
            "keys": "enter",
            "title": "Play or pause"
          },
          {
            "keys": "cmd+right",
            "title": "Next track"
          },
          {
            "keys": "cmd+left",
            "title": "Previous track"
          },
          {
            "keys": "cmd+c",
            "title": "Copy artist - title"
          },
          {
            "keys": "cmd+o",
            "title": "Open the track in its player"
          }
        ]
      }
    },
    "states": {
      "playing": {
        "description": "A player is playing",
        "kind": "boolean"
      },
      "state": {
        "description": "The strip's player: playing, paused, stopped, or none",
        "kind": "string"
      },
      "app": {
        "description": "The player's name",
        "kind": "string"
      }
    },
    "bar": {
      "now-playing": {
        "title": "Now Playing",
        "description": "The playing track on the strip; a paused player is hidden by its rule (keep it on the strip, muted, by turning that rule's Hidden off), nothing running is hidden either way. The popover shows the cover, the track, a progress bar that ticks and the transport as keys. Re-rendered the moment the track changes (macOS).",
        "refresh": {
          "every": 30,
          "on": [
            "show",
            "wake",
            "media"
          ]
        },
        "settings": [
          {
            "kind": "boolean",
            "id": "artwork",
            "label": "Cover on the bar",
            "text": "Show the cover instead of the note on the menu bar strip",
            "description": "Only a square cover; a 24 pt picture of anything else is a smudge. The popover shows the cover either way.",
            "default": false
          }
        ],
        "mocks": {
          "track": {
            "title": "A track playing",
            "item": {
              "icon": "",
              "title": "Weird Fishes/ Arpeggi · Radiohead",
              "tooltip": "Radiohead - Weird Fishes/ Arpeggi (Music)"
            }
          },
          "artwork": {
            "title": "The cover as the icon (Cover on the bar)",
            "item": {
              "icon": {
                "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAADyElEQVR4nH3Szwa2WgOG8Y4kIkqKRUmxKOlhUfLEokeKRQ0a5NKgQYMGDTq473C+Q9iDPdm+Py/X+De5b8u3CW2ETWKT2Uib0qa2UTatzddG2/xsJhtjs9psNrvNYXPaXDa3zWPz2li+Q+ggHBKHzEE6lA61g3JoHb4O2uHnMDkYh9Vhc9gdDofT4XK4HR6H18HyXUIX4ZK4ZC7SpXSpXZRL6/J10S4/l8nFuKwum8vucricLpfL7fK4vC6W7xF6CI/EI/OQHqVH7aE8Wo+vh/b4eUwexmP12Dx2j8Pj9Lg8bo/H4/Ww/IAwQAQkAVmADCgD6gAV0AZ8A3TAL2AKMAFrwBawBxwBZ8AVcAc8AW+A5UeEESIiicgiZEQZUUeoiDbiG6EjfhFThIlYI7aIPeKIOCOuiDviiXgjLF8QCoQgEWQCKSgFtUAJWsFXoAU/wSQwglWwCXbBITgFl+AWPIJXYPkxYYyISWKyGBlTxtQxKqaN+cbomF/MFGNi1pgtZo85Ys6YK+aOeWLeGMtPCVNESpKSpciUMqVOUSltyr//Nf6zNWVL2VOOlDPlSrlTnpQ3xfJzwhyRk+RkOTKnzKlzVP6fyt9tOXvOkXPmXDl3zpPz5li+JJQISSLJJFJSSmr5v5W/2yWH5JRcklvySF6J5ReEBaIgKcgKZEFZUBd/hAqOgrPgKrgLnoK3wPIrwgpRkVRkFbKirKirP0IVR8VZcVXcFU/FW2H5H8IP4kPyIfsgP5Qf6s8foQ/Hh/PD9eH+8Hx4P1i+IlQIRaLIFFJRKmr1R0hxKE7FpbgVj+JVWH5D2CAakoasQTaUDXWDav7Pag17w9FwNlwNd8PT8DZYfkfYITqSjqxDdpQddYfqaLv/+lHH1rF3HB1nx9Vxdzwdb4fl94Q9oifpyXpkT9lT96ietufbo3t+PVOP6Vl7tp695+g5e66eu+fpeXssXxNqhCbRZBqpKTW1RmlazVejNT/NpDGaVbNpds2hOTWX5tY8mldj+QPhgBhIBrIBOVAO1ANqoB34DuiB38A0YAbWgW1gHzgGzoFr4B54Bt4Byx8JR8RIMpKNyJFypB5RI+3Id0SP/EamETOyjmwj+8gxco5cI/fIM/KOWP5MOCNmkplsRs6UM/WMmmlnvjN65jczzZiZdWab2WeOmXPmmrlnnpl3xvINoUEYEkNmkIbSUBuUoTV8DdrwM0wGY1gNm2E3HIbTcBluw2N4DZa/EC6IhWQhW5AL5UK9oBbahe+CXvgtTAtmYV3YFvaFY+FcuBbuhWfhXfgL3ZiR8ZsNxlQAAAAASUVORK5CYII="
              },
              "title": "Weird Fishes/ Arpeggi · Radiohead",
              "tooltip": "Radiohead - Weird Fishes/ Arpeggi (Music)"
            }
          },
          "untitled": {
            "title": "A player naming no track",
            "item": {
              "icon": "",
              "title": "Safari",
              "tooltip": "Playing in Safari"
            }
          },
          "paused": {
            "title": "Paused, kept on the bar (While a player runs)",
            "item": {
              "icon": "",
              "title": "Weird Fishes/ Arpeggi · Radiohead",
              "color": "muted",
              "tooltip": "Radiohead - Weird Fishes/ Arpeggi (Music), paused"
            }
          },
          "silent": {
            "title": "Nothing playing",
            "item": {
              "hidden": true,
              "empty": {
                "icon": "",
                "tooltip": "Nothing playing"
              }
            }
          }
        },
        "keys": [
          {
            "keys": "space",
            "title": "Pause or play"
          },
          {
            "keys": "right",
            "title": "Next track (cmd+right too)"
          },
          {
            "keys": "left",
            "title": "Previous track (cmd+left too)"
          },
          {
            "keys": "c",
            "title": "Copy artist - title (cmd+c too)"
          },
          {
            "keys": "o",
            "title": "Open the track in its player (cmd+o too)"
          }
        ],
        "rules": [
          {
            "id": "paused",
            "when": "not media.playing",
            "description": "A player that is not playing: off the strip, muted for anyone who keeps it.",
            "hidden": true,
            "color": "muted"
          }
        ]
      },
      "playing": {
        "title": "Playing",
        "description": "Whatever plays, for the glance strip: the Apple TV, Spotify, a browser tab, the newest one leading with its cover, \"artist · where\" and a progress bar, a second one as an \"also\" line. Never on a strip (put it on one by giving it a target in Settings › Bar); ⌥N or a click opens the lead's own view.",
        "strip": false,
        "refresh": {
          "every": 30,
          "on": [
            "show",
            "wake",
            "media"
          ]
        },
        "mocks": {
          "one": {
            "title": "One playing",
            "item": {
              "icon": "",
              "title": "Mr. Blue Sky",
              "tooltip": "Pomplamoose · YouTube on Living Room",
              "progress": 0.42
            }
          },
          "two": {
            "title": "Two playing (an also line)",
            "item": {
              "icon": "",
              "title": "Mr. Blue Sky",
              "tooltip": "Pomplamoose · YouTube on Living Room",
              "progress": 0.42,
              "glance": {
                "lines": [
                  {
                    "text": "also: Weird Fishes · Spotify",
                    "action": "open:spotify"
                  }
                ]
              }
            }
          },
          "paused": {
            "title": "Nothing playing, the last one paused",
            "item": {
              "icon": "",
              "title": "Mr. Blue Sky",
              "tooltip": "Pomplamoose · YouTube on Living Room",
              "color": "muted"
            }
          }
        }
      }
    },
    "license": "MIT",
    "store": {
      "tagline": "Play, pause and skip Spotify, Music, a browser or any MPRIS player",
      "category": "media",
      "features": [
        "One row per player with the track, artist, cover and progress",
        "Every player the system knows about on macOS (a browser, VLC), and MPRIS players on Linux",
        "What your other extensions play comes first: a show on the Apple TV, Spotify on another device, Jellyfin; `enter` opens that extension's own view",
        "The bar item leaves alone a playback another extension's own item already shows, so nothing is on the bar twice",
        "`enter` plays or pauses, `cmd+right` and `cmd+left` skip",
        "`cmd+c` copies `artist - title`, `cmd+o` opens the track or the app",
        "The playing track is found from the root by its title or artist",
        "A bar item with the track; its popover shows the cover, progress and controls",
        "One Playing card on the glance strip for whatever plays, the newest first, with an \"also\" line for a second"
      ],
      "permissions": [
        "automation"
      ],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-players.png",
          "caption": "One row per player: a show on the living-room TV from its own extension first, Spotify playing with the position, Music paused, a browser with nothing loaded"
        },
        {
          "file": "2-actions.png",
          "caption": "The actions on a row: open the TV's own remote, pause, next, previous, copy the track"
        },
        {
          "file": "3-root.png",
          "caption": "The playing track found from the root by its title"
        },
        {
          "file": "bar-menubar.png",
          "caption": "On the menu bar: the playing track and its artist beside the note",
          "kind": "bar"
        },
        {
          "file": "bar-popover.png",
          "caption": "A click opens the popover: the cover, the track, a progress bar that ticks, the transport as keys",
          "kind": "bar",
          "box": [
            294,
            64,
            840,
            620
          ]
        },
        {
          "file": "bar-popover-untitled.png",
          "caption": "A player that names no track (a browser): the app, the position, the app's icon in place of a cover",
          "kind": "bar",
          "box": [
            352,
            64,
            840,
            620
          ]
        },
        {
          "file": "bar-sketchybar.png",
          "caption": "On sketchybar: the note in the icon font, the track as the label",
          "kind": "bar"
        }
      ],
      "actions": [
        {
          "title": "Open",
          "description": "On a player another extension publishes: that extension's own view (the Apple TV's remote, Spotify's lyrics).",
          "keys": "enter"
        },
        {
          "title": "Play or pause",
          "description": "Toggles; the row's tag follows (`cmd+enter` on a published player).",
          "keys": "enter"
        },
        {
          "title": "Next track",
          "keys": "cmd+right"
        },
        {
          "title": "Previous track",
          "keys": "cmd+left"
        },
        {
          "title": "Copy track",
          "description": "artist - title.",
          "keys": "cmd+c"
        },
        {
          "title": "Open in Spotify / Music",
          "description": "The track's url, else the app on macOS.",
          "keys": "cmd+o"
        }
      ]
    }
  },
  "playable": false,
  "updated_at": "2026-11-02T04:38:11Z",
  "url": "https://pal.cagdas.io/extensions/media",
  "tagline": "Play, pause and skip Spotify, Music, a browser or any MPRIS player",
  "category": "media",
  "screenshots": [
    "https://pal.cagdas.io/extensions/media/screenshots/1-players-dark.png",
    "https://pal.cagdas.io/extensions/media/screenshots/1-players.png",
    "https://pal.cagdas.io/extensions/media/screenshots/2-actions-dark.png",
    "https://pal.cagdas.io/extensions/media/screenshots/2-actions.png",
    "https://pal.cagdas.io/extensions/media/screenshots/3-root-dark.png",
    "https://pal.cagdas.io/extensions/media/screenshots/3-root.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-menubar.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-popover-dark.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-popover-untitled-dark.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-popover-untitled.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-popover.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-sketchybar-dark.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/media/screenshots/1-players.png",
    "https://pal.cagdas.io/extensions/media/screenshots/2-actions.png",
    "https://pal.cagdas.io/extensions/media/screenshots/3-root.png"
  ],
  "bar_screenshots": [
    "https://pal.cagdas.io/extensions/media/screenshots/bar-menubar.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-popover-untitled.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-popover.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots_dark": [
    "https://pal.cagdas.io/extensions/media/screenshots/1-players-dark.png",
    "https://pal.cagdas.io/extensions/media/screenshots/2-actions-dark.png",
    "https://pal.cagdas.io/extensions/media/screenshots/3-root-dark.png"
  ],
  "bar_screenshots_dark": [
    "https://pal.cagdas.io/extensions/media/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-popover-untitled-dark.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-popover-dark.png",
    "https://pal.cagdas.io/extensions/media/screenshots/bar-sketchybar-dark.png"
  ],
  "has_bar": true,
  "bar_items": [
    {
      "id": "now-playing",
      "title": "Now Playing",
      "description": "The playing track on the strip; a paused player is hidden by its rule (keep it on the strip, muted, by turning that rule's Hidden off), nothing running is hidden either way. The popover shows the cover, the track, a progress bar that ticks and the transport as keys. Re-rendered the moment the track changes (macOS).",
      "refresh": {
        "every": 30,
        "on": [
          "show",
          "wake",
          "media"
        ]
      },
      "refresh_words": "every 30s, when the panel shows, on wake"
    },
    {
      "id": "playing",
      "title": "Playing",
      "description": "Whatever plays, for the glance strip: the Apple TV, Spotify, a browser tab, the newest one leading with its cover, \"artist · where\" and a progress bar, a second one as an \"also\" line. Never on a strip (put it on one by giving it a target in Settings › Bar); ⌥N or a click opens the lead's own view.",
      "refresh": {
        "every": 30,
        "on": [
          "show",
          "wake",
          "media"
        ]
      },
      "refresh_words": "every 30s, when the panel shows, on wake"
    }
  ],
  "has_links": false,
  "links": [],
  "multi": false,
  "has_readme": true
}
