327 lines
9.0 KiB
Plaintext
327 lines
9.0 KiB
Plaintext
.TH LCDd 8 "4 March 2002" LCDproc
|
|
.SH NAME
|
|
LCDd - LCDproc server daemon
|
|
.SH SYNOPSIS
|
|
.B LCDd
|
|
[\-hfiws]
|
|
[\-c <\fIconfig\fP>]
|
|
[\-d <\fIdriver\fP>]
|
|
[\-a <\fIaddr\fP>]
|
|
[\-p <\fIport\fP>]
|
|
[\-u <\fIuser\fP>]
|
|
[\-w <\fItime\fP>]
|
|
[\-r <\fIlevel\fP>]
|
|
.SH DESCRIPTION
|
|
LCDd is the server portion of LCDproc which listens to a certain port (normally 13666) and displays information on an LCD display. It works with several types
|
|
and sizes of displays.
|
|
.PP
|
|
As of version 0.4.3 of LCDproc most settings are configured through the LCDd configuration
|
|
file, which is normally /etc/LCDd.conf. Before running LCDd you should carefully read through
|
|
that file and modify everything neccessary according to your needs. Otherwise you might encounter
|
|
LCDd not running properly on your system.
|
|
.PP
|
|
To make full use of LCDd, a client such as lcdproc(1) is required.
|
|
.SH OPTIONS
|
|
Available
|
|
.I LCDd
|
|
options are:
|
|
.TP 8
|
|
.B \-h
|
|
Display this help screen
|
|
.TP 8
|
|
.B \-c <config>
|
|
Use a configuration file other than /etc/LCDd.conf
|
|
.TP 8
|
|
.B \-d <driver>
|
|
Add a driver to use (output only to first)
|
|
.TP 8
|
|
.B \-f
|
|
Run in the foreground
|
|
.TP 8
|
|
.B \-i
|
|
Disable showing of the main LCDproc server screen
|
|
.TP 8
|
|
.B \-w <waittime>
|
|
Time to pause at each screen (in seconds)
|
|
.TP 8
|
|
.B \-a <addr>
|
|
Network IP address to bind to
|
|
.TP 8
|
|
.B \-p <port>
|
|
Network port to listen for connections on
|
|
.TP 8
|
|
.B \-u <user>
|
|
User to run as
|
|
.TP 8
|
|
.B \-s
|
|
Output messages to syslog
|
|
.TP 8
|
|
.B \-r <level>
|
|
Report level (default=2)
|
|
.SS
|
|
Supported Drivers
|
|
Currently supported display drivers include:
|
|
.TP
|
|
.B CFontz (or CrystalFontz)
|
|
CrystalFontz LCD displays
|
|
.TP
|
|
.B curses (or ncurses)
|
|
Standard video display using the ncurses library
|
|
.TP
|
|
.B HD44780
|
|
Hitachi HD44780 LCD displays
|
|
.TP
|
|
.B BayRAD
|
|
EMAC BayRad displays
|
|
.TP
|
|
.B irmanin
|
|
IrMan infrared (input)
|
|
.TP
|
|
.B lircin
|
|
Infrared (input)
|
|
.TP
|
|
.B sli
|
|
Wirz SLI driver (unknown)
|
|
.TP
|
|
.B joy
|
|
Joystick driver (input)
|
|
.TP
|
|
.B MtxOrb (or MatrixOrbital)
|
|
Matrix Orbital displays (not Matrix Orbital GLK displays)
|
|
.TP
|
|
.B glk
|
|
Matrix Orbital GLK graphical LCD displays
|
|
.TP
|
|
.B LB216
|
|
LB216 LCD display
|
|
.TP
|
|
.B lcdm001 (or LCDM001)
|
|
kernelconcepts.de 20x4 serial LCD displays
|
|
.TP
|
|
.B text
|
|
Standard "hard-copy" text display
|
|
.TP
|
|
.B debug
|
|
Undocumented debug driver
|
|
.PP
|
|
Multiple drivers can be used simultaneously; thus, for example, a Matrix Orbital display (MtxOrb driver)
|
|
can be combined with an infrared driver (irmanin driver).
|
|
.SH INVOCATION
|
|
.TP
|
|
LCDd -d MtxOrb -d joy
|
|
As of version 0.4.3, driver parameters are read from a configuration file (default location /etc/LCDd.conf) rather than being passed on the command line as arguments.
|
|
The invocation example above will start LCDd with the Matrix Orbital driver and the Joystick input driver,
|
|
and attempt to load the driver parameters from the default configuration file.
|
|
.SH SERVER PROTOCOL
|
|
There is a basic sequence:
|
|
.TP 8
|
|
1. Open a TCP connection to the LCDd server port (usually 13666).
|
|
.TP 8
|
|
2. Say "hello"
|
|
.TP 8
|
|
3. The server will return some information on the type
|
|
of display available.
|
|
.TP 8
|
|
4. Define (and use) a new screen and its widgets.
|
|
.TP 8
|
|
5. Close the socket when done displaying data.
|
|
.PP
|
|
There are many commands for the LCDd server:
|
|
.TP 8
|
|
.B hello
|
|
This starts a client-server session with the LCDd server; the
|
|
server will return a data string detailing the type of display
|
|
and its size.
|
|
.TP 8
|
|
.B client_set [-name #id]
|
|
Set the client's name, etc.
|
|
.TP 8
|
|
.B screen_add #id
|
|
Add a new screen to the display.
|
|
.TP 8
|
|
.B screen_del #id
|
|
Remove a screen from the display.
|
|
.TP 8
|
|
.B screen_set \fI#id\fP [\fB-priority\fI number\fP] [\fB-name\fI "my_name"\fP] [\fB-duration\fI integer\fP] [\fB-wid\fI width\fP] [\fB-hgt\fI height\fP] [\fB-heartbeat\fI mode\fP]
|
|
Initialize a screen, or reset its data.
|
|
.TP 8
|
|
.B widget_add \fI#screen #id type\fR [\fB-in \fI#id\fR]
|
|
Add a widget to screen \fI#screen\fR.
|
|
.TP
|
|
.B widget_del \fI#screen #id\fR
|
|
Delete widget \fI#id\fR from screen \fI#screen\fR.
|
|
.TP
|
|
.B widget_set \fI#screen #id data\fR
|
|
Set the data used to define a particular widget \fI#id\fR on screen
|
|
\fI#screen\fR.
|
|
.SS
|
|
Heartbeat Modes
|
|
Valid heartbeat mode values (for the \fBscreen_set\fR command) are:
|
|
.TP
|
|
.BR on , " heart"
|
|
Display heart symbol.
|
|
.TP
|
|
.BR normal , " default"
|
|
Normal display.
|
|
.TP
|
|
.BR off , " none"
|
|
No heartbeat display.
|
|
.TP
|
|
.B slash
|
|
Display rotating slash display.
|
|
.SS
|
|
Priorities
|
|
Valid priority values (used in the \fBscreen_set\fR command) are as follows:
|
|
.TP
|
|
.B 0
|
|
This is rather extreme; \fIdon't do this!\fR
|
|
.TP
|
|
.B 1
|
|
Extremely important!
|
|
.TP
|
|
.B 16
|
|
Emergency priority
|
|
.TP
|
|
.B 32
|
|
Very high priority (important)
|
|
.TP
|
|
.B 64
|
|
High priority (normal)
|
|
.TP
|
|
.B 128
|
|
Normal (recommended)
|
|
.TP
|
|
.B 192
|
|
Low priority (normal)
|
|
.TP
|
|
.B 224
|
|
Very low priority (very unimportant)
|
|
.TP
|
|
.B 240
|
|
Extremely low priority
|
|
.TP
|
|
.B 255
|
|
This screen won't show up very much even if there are
|
|
no other screens queued...
|
|
.PP
|
|
An example of how to properly use priorities is as follows:
|
|
.PP
|
|
Imagine you're making an mp3 player for lcdproc. When the
|
|
song changes, it's nice to display the new name immediately.
|
|
So, you could set your screen's priority to 64, wait for
|
|
the server to display (or ignore) your screen, then set the
|
|
screen back to 128. This would cause the mp3 screen to
|
|
show up as soon as the one onscreen was finished, then
|
|
return to normal priority afterward.
|
|
.PP
|
|
Or, let's say your client monitors the health of hospital
|
|
patients. If one of the patients has a heart attack, you
|
|
could set the screen priority to 16 (emergency), and it
|
|
would be displayed immediately. It wouldn't even wait for
|
|
the previous screen to finish. Also, the display would stay
|
|
on screen most of the time until the user did something about it.
|
|
.PP
|
|
A priority of 1 would stay onscreen permanently, with
|
|
flashing lights and other visual cues if possible.
|
|
Using this priority is \fInot\fR recommended.
|
|
.PP
|
|
The duration can be either a positive number, or -1. A
|
|
positive number (greater than zero) indicates how many
|
|
display frames the screen should last. A 0 (zero) or -1 means
|
|
that the server should use "auto" duration, which is
|
|
probably a good idea. This will be
|
|
whatever the user wants. It defaults to 4 seconds (32
|
|
frames), or will be a calculated value for things such as scrollers.
|
|
.SS
|
|
Widget Types
|
|
Widgets can be any of the following:
|
|
.TP
|
|
.B string
|
|
A text string to display (as is).
|
|
.TP
|
|
.B hbar
|
|
A horizontal bar graph.
|
|
.TP
|
|
.B vbar
|
|
A vertical bar graph.
|
|
.TP
|
|
.B title
|
|
A title displayed across the top of the display, within a banner.
|
|
.TP
|
|
.B icon
|
|
A graphic icon.
|
|
.TP
|
|
.B scroller
|
|
A scrolling text display, scrolling either horizontally or vertically.
|
|
.TP
|
|
.B frame
|
|
A \fIcontainer\fR to contain other widgets, permitting them to be refered to
|
|
as a single unit. A widget is put inside a frame by using the -in \fI#id\fR
|
|
parameter, where \fI#id\fR refers to the id of the frame.
|
|
.PP
|
|
Widgets are drawn on the screen in the order they are created.
|
|
.SS Setting Widget Data
|
|
In the \fBwidget_set\fR command, the \fIdata\fR argument depends on which widget is being
|
|
set. Each widget takes a particular set of arguments which defines its form and behavior:
|
|
.TP
|
|
.B string
|
|
x y text
|
|
.TP
|
|
.B hbar
|
|
x y length_in_pixels
|
|
.TP
|
|
.B vbar
|
|
x y length_in_pixels
|
|
.TP
|
|
.B icon
|
|
x y binary_data
|
|
.TP
|
|
.B title
|
|
text
|
|
.TP
|
|
.B scroller
|
|
left top right bottom direction speed text
|
|
.sp
|
|
The \fItext\fR defined will scroll in the direction defined. Valid directions
|
|
are \fBh\fR (horizontal) and \fBv\fR (vertical). The speed defines how many
|
|
"movements" (or changes) will occur per frame. A positive number indicates
|
|
frames per movement; a negative number indicates movements per frame.
|
|
.TP
|
|
.B frame
|
|
left top right bottom wid hgt dir speed
|
|
.sp
|
|
Frames define a visible "box" on screen,
|
|
>from the (\fIleft\fR, \fItop\fR) corner to the
|
|
(\fIright\fR, \fIbottom\fR) corner. The actual data may be bigger,
|
|
and is defined as \fIwid\fR (width) by \fIhgt\fR (height); if it is
|
|
bigger, then the frame will scroll in the direction (\fIdir\fR)
|
|
and \fIspeed\fR defined.
|
|
.SH BUGS
|
|
If LCDd seems to quietly disappear upon invocation or other similar problems,
|
|
check the order of the options and the quoting involved. Some combinations
|
|
of options will be misread and thus fail.
|
|
.PP
|
|
Try using the -d option last.
|
|
.SH FILES
|
|
.na
|
|
.nf
|
|
\fB/etc/LCDd.conf\fR, LCDd default configuration file
|
|
.Sh SEE ALSO
|
|
.Xr lcdproc 1
|
|
.SH AUTHOR
|
|
LCDd was originally written by William Ferrell (wwf@splatwerks.org) and Scott Scriv
|
|
en (scriven@cs.colostate.edu).
|
|
|
|
Since that time various people have contributed to LCDproc.
|
|
|
|
The newest version of LCDd should be available from here as part of the lcdproc package:
|
|
|
|
http://lcdproc.omnipotent.net/
|
|
|
|
.SH LEGAL STUFF
|
|
The lcdproc package is released as "WorksForMe-Ware". In other words, it is free, kinda neat, and we don't guarantee that it will do anything in particular on any machine except the ones it was developed on.
|
|
.PP
|
|
It is technically released under the GNU GPL license (you should have received the file, "COPYING", with LCDproc) (also, look on http://www.fsf.org/ for more information), so you can distribute and use it for free -- but you must make the source code freely available to anyone who wants it.
|
|
.PP
|
|
For any sort of real legal information, read the GNU GPL (GNU General Public License). It's worth reading.
|