Skip to content
a thin Emacs interface for Pianobar (and
Emacs Lisp
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.


This is a thin emacs interface for Pianobar, a Pandora Radio
<> command-line client. Pianobar was written by
Lars-Dominik Braun, among others, and can be found at
<>. `pianobar.el` itself can be found at

It is licensed under the GNU GPL v3. See `LICENSE` for details.

There are brief installation instructions at the top of
`pianobar.el`. After installing `pianobar.el`, see below for
information about usage.

Please note that this is a *very* early development version, written
mostly for myself to use. Suggestions, improvements, and bug reports
are welcome.


Pianobar is started with `M-x pianobar`, or you can bind a key to the
`pianobar` function manually. `pianobar.el` will put the current
playing song in the modeline. Once Pianobar is running, you can type
commands manually in the `*pianobar*` buffer (like using shell-mode),
or you can use the following, key-bindable commands:

M-x pianobar-love-current-song
	-- tell Pandora you love this song

M-x pianobar-ban-current-song
	-- tell Pandora to ban this song from this station

M-x pianobar-next-song
	-- skip to the next song (but don't ban/love)

M-x pianobar-play-or-pause
	-- toggle play/pause state

M-x pianobar-change-station
	-- bring up the `*pianobar*` buffer with a station-change menu


`pianobar.el` requires Pianobar to be installed somewhere in your
path. If it's not, you can set the variable `pianobar-command` to be
the path to the Pianobar executable.

(As of right now, `pianobar.el` expects Pianobar to use the default
key bindings. It works even if you change them, but the control
commands won't work. You'll just have to switch to the `*pianobar*`
buffer and control it manually.)

You can set `pianobar-username`, `pianobar-password`, and
`pianobar-station` to automatically login and connect to a
station. Note that `pianobar-station` must be a *string* containing
the number used to select the station you want through Pianobar.

If you leave any of these unset, you will be prompted for the info

If you set `pianobar-run-in-background` to `t`, `M-x pianobar` will
*not* show the `*pianobar*` buffer after running. This is useful if
you set the above auto-login variables.

`pianobar-global-modeline` will eventually be used to decide whether
to change the modeline on all buffers, or just the `*pianobar*`
buffer. Right now, it does nothing; it always changes the global

There are many other, lesser-used variables available to customize
Pianobar. Use `C-h v` and take a look at all the variables prefixed
with `pianobar-`.

If you want to write your own Pianobar commands (especially for those
not yet bound to an interactive function), you can use
`pianobar-send-command`, which accepts a character to send to the
current Pianobar process. It also takes a second, optional argument:
whether to make the Pianobar buffer active. For example,
`M-x pianobar-next-song` runs `(pianobar-send-command ?n)`, while
`M-x pianobar-change-station` runs `(pianobar-send-command ?s t)`.
Something went wrong with that request. Please try again.