Now Playing

What is playing in Spotify, Music or any MPRIS player: play, pause, skip from the keyboard.

palv0.1.0Mediabundled󱔓Menu bar: Now Playing

Install in pal

Ships inside pal. Installing puts an editable copy ahead of the bundled one.

Now Playing: One row per player: Spotify playing, Music paused, a browser with nothing loaded
One row per player: Spotify playing, Music paused, a browser with nothing loaded
Now Playing: The transport on a row: pause, next, previous, copy the track, open it in the player
The transport on a row: pause, next, previous, copy the track, open it in the player
Now Playing: The playing track found from the root by its title
The playing track found from the root by its title
1 of 3

What it does

Now Playing

One row per running player: the track as the title, artist and album as the subtitle, the artwork (else the app's icon) and a playing / paused / stopped tag, with the player's name next to it. A player with nothing loaded reads "Nothing playing" with the player's name. A live palette: read again on every show through the core's media capability, so the track that is on right now is a root result too (type its title or artist at the root). With no player running the one row says so, and on macOS how to see players beyond Spotify and Music.

Every control keeps the palette up and lists again, so the tag follows what you did; a player that refuses (Music not running, a player that has no next track) is a toast with its message.

Keyboard

keys action what
enter Play / Pause toggles; the row's tag follows
cmd+right Next Track
cmd+left Previous Track
cmd+c Copy Track copies artist - title
cmd+o Open in Spotify / Music / ... the track's url (Spotify's spotify:track: link), else the app on macOS

A row for a player with nothing loaded has only the three transport actions.

Setup

No settings. What is listed depends on what the core's media capability can see:

  • macOS: Spotify and Music through AppleScript, only while the app is running (the check is NSRunningApplication, so pal never launches one to ask); Spotify gives the artwork url and the track url. The first AppleScript run asks whether pal may control the app (the Automation permission). nowplaying-cli on PATH (brew install nowplaying-cli) adds the system-wide Now Playing as one more row, for any other player (a browser, VLC, IINA).
  • Linux: playerctl over MPRIS, one row per player; the icon is the player's .desktop when one is named like it. Without playerctl the one row says to install it.

The bar item Now Playing puts the playing track on the strip (hidden while nothing plays) with the transport in its popover: Pause (space), Next (right), Previous (left), Copy Track (cmd+c), Open (cmd+o). The core asks for it every 30 s and on show and wake; in between the extension looks at the players itself every 5 s while one was playing at the last look, and pushes when the track or the state changed, so a skip shows within seconds and an idle machine costs nothing.

What it does not do

  • Seek, shuffle, repeat or volume: the capability has play, pause, next and previous.
  • Launch a player: a player that is not running is not listed, and nothing here starts one.
  • Show a queue or a playlist; one row per player, the current track only.
  • Artwork for Music on macOS: Music gives no url, so the row shows the app's icon.

Platforms

macOS and Linux. macOS needs the Automation permission for Spotify and Music (asked once per app) and nowplaying-cli for anything else; Linux needs playerctl.

Palettes 1

  • Mediamedialive

    One row per player with the track and its artwork.

    • Play or pause
    • Next track
    • Previous track
    • CCopy artist - title

Actions

  • Play / PauseToggles; the row's tag follows.
  • Next Track
  • Previous Track
  • Copy Trackartist - title.C
  • Open in Spotify / MusicThe track's url, else the app on macOS.O

Settings

No settings. It works out of the box.