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)
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:
- 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.
- 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.