Layout manager
One of the more obscure features of the jukebox client is the layout manager, it governs the placement of widgets inside the jukebox window.

The default layout string looks like this:

v(-Menu, 
  V( v(-Volume, +Queue, -Buttons),
     H( B( S(+Info) ),
        B( +Artists, +Collections, 
           +Styles, S(+Favourites),
           +Playlists)
      )
   ),
  -Status)
Some other (at least marginally useful) examples:
gjuke --layout='
  v(-Menu,
    V(h(-StandaloneVolume,+Queue),
      B(+Playlists,+Artists,S(+Info))),
   -Status)'
A Queue window with a volume control to the left, and a notebook with your playlists, all artists and object information widgets

gjuke --layout='+Favourites'
gjuke --layout='v(-Menu,+Queue)'
Start two jukebox clients, one with your favourites, and one with the queue widget and the menu.

Drag object from the favourite list to the queue widget to play them.

If you are somewhat familiar with C (or lisp, or any other language that uses nested parantheses) you can probably figure out what this means using the following information:

Widgets
- means that the widget should not be expanded, and + means that it should expand to fill all available space.
Menu
The menubar. It is a good ide to add this widget, since the context menues depends on it.

Volume
The normal volumecontrol, containes one or more volume sliders (for the main volume, song volume, right/left balance and possibly back/front balance)

StandaloneVolume
The main volume control only, oriented in a vertical instead of horizontal direction.

Queue
The Queue Window

Buttons
The buttonbar, as configured from the preferences panel

Info
The informational window. This should be placed in a scrolled window.

Artists
The list of artists

Collections
The list of collections

Styles
The list of styles

Favourites
Your favourites. Should be places in a scrolled window.

Playlists
Your playlists

Status
Status bar

/path/to/file.pike
Useful if you have created any widgets on your own. The specified file will be compiled and then instantiated with the 'config' object as the single argument. Use this and Luke.db to write your widget. The config object provides several signals and methods for the widget programmer.
Containers

v( .. contents .. )
Create a new verticaly oriented group of widgets. The widgets specified by 'contents' will be added below each other.

h( .. contents .. )
Create a new horizontally oriented group of widgets. The widgets specified by 'contents' will be added to the right of each other.

V( .. contents .. )
Create a new vertically paned pair of widgets.
You can only have two children with this container type, the topmost and bottommost. There will be a draggable separator between them.

H( .. contents .. )
Create a new horizontaly paned pair of widgets.
You can only have two children with this container type, the leftmost and rightmost. There will be a draggable separator between them.

S( .. contents .. )
Create a new scrolled window, with a vertical scrollbar.
You can only have one children with this container type, and it can only be scrolled vertically.

s( .. contents .. )
Create a new scrolled window.
You can only have one children with this container type.

B( .. contents .. )
Create a new notebook.
Each child will be added on their own page in the notebook.