kuechenstation is a text mode client for the XMMS2 daemon. Unlike other text mode clients it’s not command line based, but features all you would expect from a graphical client:

  • scrolling title

  • playlist editor

  • medialib browser

For a changelog see debian/changelog in the source distribution.

kuechenstation is developed on and can be downloaded from SourceForge.net logo

1. Usage

kuechenstation splits the terminal screen in 3 regions:

+-----------------+
| scrolling title |
+-----------------+
|                 |
| multi window    |
|                 |
+-----------------+
| status line     |
+-----------------+

Only the multi window changes its behaviour/appearance (thus the name multi window). Let’s call them modes: Several modes are available at the moment (see below). You can change to a mode using the Fn-keys:

  • Status Mode (F1)

  • Playlist Mode (F2)

  • Medialib Mode (F3)

  • Stream Mode (F4)

  • Podcast Mode (F5) (disabled by default)

  • Playlist List Mode (F6) (disabled by default)

  • Logging Mode (F10)

  • Track Info Mode (this is entered in a different way: press i when the cursor is over a track in playlist or medialib mode)

In all modes the following key bindings are active unless stated otherwise below under modes.

Table 1. Global key bindings
key binding action

p,space,.

toggle play pause

+,- or */"/"

volume up/down

Right/Left-arrow

seek +/- 5secs

Shift + Right/Left-arrow

seek +/- 1min

n/b, >/<

jump to next/prev song

q, Q

quit kuechenstation

2. Configuration

kuechenstation’s configuration file is stored in: $HOME/.config/xmms2/clients/kuechenstation.conf.

Default kuechenstation.conf
## default configuration for kuechenstation
[general]
## the file to log to
# logfile = /dev/null

## the encoding used for curses output
## see http://kuechenstation.sourceforge.net/README.html for more information
#encoding = UTF-8

## the default colors (foreground background)
## can be overwritten (see below)
colors = white black

## the default attribute to indicate the cursor in list or tree windows
cursor attr = reverse

[scrollingtitle]
## the path to the figlet binary
figlet path = /usr/bin/figlet
## the figlet font used
## use figlist(6) to list available fonts
figlet font = standard
attr = reverse
# colors = red blue

[statusline]
attr = reverse

## multi windows

[log]
## the key to switch to this multi window
## can be a string starting with 'KEY_' to define a curses key constant or a
## single character
access key = KEY_F10

[statusinfo]
## use this to define the multi window that is shown on startup
first = true
access key = KEY_F1
# colors = red blue

[playlist]
access key = KEY_F2
## playlist colors and attributes
# colors = yellow blue
# cursor attr = underline
playing attr = bold

[trackinfo]
# colors = black white

[medialib]
access key = KEY_F3
# cursor attr = blink

[streams]
access key = KEY_F4

#[podcasts]
# access key = KEY_F5
## the urls of the podcasts to listen to, separated by commas (',')
# channels = http://www.ndr.de/podcastlink/satirischer_wochenrueckblick.xml,http://www.ndr.de/podcastlink/ndrinfo_streitkraefteundstrategien.xml

#[playlistslist]
#access key = KEY_F6

The configuration is organised in one general section, which contains values for the encoding to be used to display multi-byte strings, a section for status line and scrolling title and a section for each multi window mode you want to use.

Note
In previous versions (<= 0.3-3) the encoding for output of non-ASCII characters had to be specified. In newer versions the encoding will be taken from the locale information if a configuration value is not available. So the encoding option is optional and somewhat deprecated/unnecessary.
Table 2. Mandatory configuration options
option name description

general section

colors

A space-separated tuple of the default foreground and background colors. Available colors are the default curses colors (see below).

cursor attr

The default curses text attribute used for the cursor position in multi window modes.

scrollingtitle section

figlet path

The path to the figlet binary. Detected by which(1) during the first kuechenstation run.

figlet font

The figlet font used for the scrolling title. Use figlist(6) for a list of the available fonts.

multi window sections

access key

The key which moves the focus to this multi window mode.

playlist section

playing attr

The curses attribute to mark the song currently played back.

podcast section

channels

Comma separated list with podcast urls.

Table 3. Optional configuration options
option name description

general section

encoding

The encoding used to display all strings (e.g. Latin-1, UTF-8).

logfile

A path to a log file

xmms path

The path to the xmms socket

multi window sections

first

Set this to true for the multi window kuechenstation should start with.

colors

The colors for this multi window.

cursor attr

The default curses text attribute used for the cursor position in this multi window.

Available colors (mandatory characters italic):
  • black

  • white

  • blue

  • red

  • green

  • yellow

  • cyan

  • magenta

  • transparent

Available attributes (mandatory characters italic):
  • reverse

  • bold

  • underline

  • blink

3. Modes

Available modes are:

  • Status Mode (F1)

  • Playlist Mode (F2)

  • Medialib Mode (F3)

  • Stream Mode (F4)

  • Podcast Mode (F5) (disabled by default)

  • Playlist List Mode (F6) (disabled by default)

  • Logging Mode (F10)

  • Track Info Mode (this is entered in a different way: press i when the cursor is over a track in playlist or medialib mode)

A table with the mode specific key bindings is at the end of each section.

3.1. Status Mode

In this mode the previous track and the next two tracks are displayed in addition to more verbose information for the current track.

Table 4. Status mode key bindings
key binding action

r

refresh displayed data

g

increase rating of current track

b

decrease rating of current track

3.2. Playlist Mode

This mode is intended to control playback and to view and edit the current playlist. The key bindings are inspired by mplayer, vim and readline/emacs. It shows the current playlist. The currently played song is indicated by bold letters and the cursor positon by inverted colors (e.g. black on white). To (re-)move more than one track you can mark them by pressing space.

Table 5. Playlist mode key bindings
key binding action

enter

jump to track and start playing

j/k, Up-/Down-arrows

move cursor up/down

PageUp/PageDown

move cursor up/down on page

End

move cursor to the end of the list

Home

move cursor to the track currently played

i

open Track Info Mode for track under cursor

space

(un-)mark item

J/K

move item(s) up/down

x

remove item(s)

X, Ctrl-U

remove all items from the cursor to the top including the item under the cursor

D, Ctrl-K

remove all items from the cursor to the bottom including the item under the cursor

y

yank the currently selected tracks to the copy buffer

p

paste the contents of the copy buffer after the cursor

P

paste the contents of the copy buffer before the cursor

If no playlist items are marked the move/remove/yank is performed on the track under the cursor.

3.3. Medialib Mode

In this mode XMMS2’s medialib can be searched via collections. Tracks/albums can be appended to the current playlist and items can be removed from the medialib. For a table of the available key bindings have a look at the end of this section.

In this mode the first line of the multi window is an input field for the medialib query. When the query line is active the ">>" is displayed in inverted colors and the cursor is shown and you can input your query. At the moment no complex line editing functions are implemented: The cursor is always at the end of the line, backspace will delete the last character. Enter starts the query.

The query syntax is simple:

field:value [; field2:value2 ...]

Where field is a collection field (e.g. "artist" or "title" or "url") or "list"/"coll" to search for tracks in the specified play lists/collections. When using ":" as field-value separator the medialib is queried for all tracks having the given value string somewhere. Using "=" as separator queries for exact matches (but still case insensitive). If multiple ";"- separated field-value pairs are given, the search conditions are boolean anded.

The field string can be abbreviated:

Table 6. Possible medialib field string abbreviations

a

artist

al

album

t

title

tr

tracknr

g

genre

u

url

i

id

l

list

c

coll

Table 7. Examples for Medialib query strings
query string description

id:

search for all items in the media lib

a:adio

search for all items with "adio" in the artist’s name (e.g. Radiohead)

a:adio ; al:ain

search for all items with "adio" in the artist’s name and "ain" in the album’s title (e.g. Radiohead’s In Rainbows)

If a query was successful, the results will be shown sorted in a tree. The first nodes are the artists' names (spaces are stripped and the name is lower case to take care of badly tagged files). The second is the album name:

+-> artist 1
|       |
|       +-> album 1
|       |        |
|       |        +-> track 1
|       |        +-> track 2
|       |        ...
|       |
|       +-> album 2
|       ...
|
+-> artist 2
    ...

The tree can be navigated by the cursor keys and by h,j),k,l as known from Vim. To switch the focus between input line and the tree view use Tab. To add tracks or whole albums to the end of your current play list use a.

Table 8. Medialib mode key bindings
key binding action in input line action in tree view

enter

start a query

open/close tree node

cursor arrows

 — 

navigate tree

h,j,k,l

backspace

delete last character

go to parent node/close current node

i

 — 

open Track Info Mode for track under cursor

x

 — 

remove item (track or album) from media library

a

 — 

add current item (track or album) to play list

A

 — 

clear the playlist and add current item (track or album) to play list

y

 — 

yank the track/album to the copy buffer

Home,End

 — 

go to the first/last node of the tree

3.4. Stream Mode

This shows all medialib entries with urls not starting with file:// or smb://. This is useful for web radios where the artist and title tags in the medialib keep changing. Use enter or a to add the current entry to the play list or y to yank a stream to the copy buffer.

Table 9. Stream mode key bindings
key binding action

Enter, a

add to play list

y

yank to the copy buffer

i

open Track Info Mode

3.5. Podcast Mode

This mode allows you to listen to podcasts with XMMS2. You’ll need the feedparser Python module for this. To add a podcast URL it must be added in the configuration file (by default under $HOME/.config/xmms2/clients/kuechenstation.conf). To add multiple URLs seperate them by ,.

Multiple podcast URLs
[podcasts]
channels = http://first.podcast/feed.xml,http://second.podcast/feed2.xml

The podcasts are fetched when the mode is entered the first time. The entries are displayed in a tree. a adds the current entry’s URL to the play list.

Table 10. Podcast mode key bindings
key binding action

enter

open/close tree node

cursor arrows, h,j,k,l

navigate tree

backspace

go to parent node/close current node

r

refresh the podcasts

a

add current item to play list

A

add all items of current podcast to play list

t

add items frome the current podcast that were published at the same day as the current item. If a channel node is marked the newest items of this channel are added. (Mnemonic: today)

3.6. Playlist List Mode

Lists all playlist saved in xmms2.

Table 11. Playlist mode key bindings
key binding action

j/k, Up-/Down-arrows

move cursor up/down

a, Enter

replace active playlist with the one under the cursor

3.7. Logging Mode

Displays a list with the last log messages. No special key bindings are available.

3.8. Track Info Mode

This mode simply shows several informations for a media lib item. Any key exits and you’ll be returned to the previous view.