====== USAGE ======
lcd4linux -h
* print version number and a small help text, then exit
lcd4linux -l
* list available drivers
lcd4linux [[:-c|key=val]] [[:-F]] [[:-f|config-file]] [[:-o|output]] [[:-q]] [[:-v]]
* run lcd4linux
* overwrite entries from the config-file with '-c'
* do not fork and detach with '-F'
* use configuration from 'config-file' instead of /etc/lcd4linux.conf
* write picture to 'output' (raster driver only)
* suppress startup splash screen with '-q'
* generate info messages with '-v'
* generate debugging messages with '-vv'
* debug socket traffic too, with '-vvv'
----
====== DIAGNOSTICS ======
lcd4linux on foreground writes (depending on level) to stdout or stderr. The Text-Driver has ist's own diagnostics window.
Started in the background (the default), lcd4linux uses your syslog daemon for logging. Facility is USER, levels are ERR, INFO and DEBUG.
----
====== SUPPORTED DISPLAYS ======
See the [[:Displays|Displays page]] for information on supported displays and their configuration.
----
====== CONFIGURATION ======
The configuration file (default: /etc/lcd4linux.conf) has a very simple format: Every line consists of a key and a value, seperated by whitespace (blanks or tabs). Values can contain whitespace, and can be enclosed in single or double quotes. A key must not contain whitespace. Keys are NOT case-sensitive. Order doesn't matter. Empty lines and all text on a line after a '#' will be ignored. If you want to use '#' in a value (think of X11-colors), you have to quote it with a backslash.
Because of security reasons (the configuration may contain usernames/passwords for mail accounts) the config file is assured to be:
* file is a normal file (or /dev/null)
* file owner is owner of program
* file is not accessible by group
* file is not accessible by other
So if you run lcd4linux as root, /etc/lcd4linux.conf has to be:
chmod 600
chown root.root
The configuration file contains information for different modules of lcd4linux:
===== General options: =====
**Quiet**: Omit startup splash screen (same as commandline option '-q') Default: 0
===== Timing options: =====
until 0.9.10, timing was controlled with the following entries:\\\
**tick**: time in milliseconds between bar updates\\\
**tack**: time in milliseconds between text updates (text can be updated less often than bars, so you get a smooth bar display and readable text)\\\
**tau**: time constant (in milliseconds) for damping function (not used by now)\\\
starting with 0.9.11, these settings are obsolete, and replaced by the following entries:\\\
**Tick.Text**: time in milliseconds between text updates (text can be updated less often than bars, so you get a smooth bar display and readable text). Default: 500 msec\\\
**Tick.bar**: time in milliseconds between bar updates. Default: 100 msec\\\
**Tick.icon**: time in milliseconds between icon updates (especially animated icons can be updated more oftan than text or bars to get a smooth display. Note that an icon updated does not require a data collection, and therefore does not consume too much CPU time). Default: 100 msec\\\
**Tick.gpo**: time in milliseconds between gpo updates. Default: 100 msec\\\
===== Data-specific options: =====
**overload**: load average threshold and bar scaling. The %L token (see below) displays a '!' instead of a blank if the current load average exceeds this value. Load bars are scaled by this value (load=overload gives 100%)\\\
**battwarning**: [[:to|be documented]] (Default: 10)\\\
**SetiDir**: directory where seti@home stores its data files\\\
**Wifi.interface**: interface used for data collection (default: "wlan0") \\\
===== Temperature sensors: =====
**sensor1**: path to the 1st temperature file (e.g. /proc/sys/dev/sensors/w83781d-isa-0290/temp1) it is important that you use the isa sensors, because the i2c sensors are very slow! \\\
**sensor1_min**: temperature where the corresponding bar starts \\\
**sensor1_max**: temperature where bar ends \\\
**sensor1_factor**, **sensor1_offset**: formula to calculate real temperature: //display_value=raw_value*factor+offset// (lookup the values in your sensors.conf!) \\\
**sensor[[:2..9]]_min**, **_max**, **_factor, _offset**: entries for the 2nd to 9th temperature sensor \\\
== Plugins: ==
**x1**: command to execute PATH=/usr/local/bin:/usr/bin:/bin $X1...$X8 is result of command 1..8 in environment\\\
**Tick_x1**: delay in ticks (overrides delay_x)\\\
**Delay_x1**: delay in seconds (default 1) \\\
**Max_x1**: max value for bars (default 100) \\\
**Min_x1**: min value for bars (default 0) \\\
**x2..9**, **Tick_x2..9**, **Delays_x2..9**, **Max_x2..9**, **Min_x2..9**: entries for plugin 2..9 \\\
===== Mail/News: =====
**Mailbox1**: The option string may be a plain mbox file or a pop3/imap4/nntp server string with the following format: \\\
//pop3:[[:user[:pass]]@]machine[[::port]]// \\\
//imap4:[[:user[:pass]]@]machine[[::port]][[::dir]]// \\\
//nntp:[[:user[:pass]]@]machine[[::port]][[::dir]]// \\\
Port defaults to 110 and 143 respectively. \\\
If /dir is not given, INBOX is assumed. \\\
If dir is given for nntp: it should be a valid group name with '.' separating items \\\
If dir is not given for nntp: all/unread news of subscribed groups from Newsrc are calcualted. \\\
**Delay_e1**: delay in seconds for querying the Mailbox !#1 (default 5) \\\
**Mailbox2..9**, **Delay_e2..9**: entries for Mailboxes 2..9 \\\
**Newsrc**: path/name of your .newsrc file containing subscribed news \\\
Note: authorization on newsservers is untested. \\\
Note: user and pass may not contain a '/' with above syntax, I hope that's ok. \\\
===== Driver-specific options: =====
**Display**: the name of a display driver\\\
every driver has its own configuration options (e.g. 'Port', 'Speed', ...)\\\
See the [[:Displays|Displays page]] for information on supported displays and their configuration.
===== Display options: =====
**row1**: Text to display in row 1 \\\
**row[[:2..max]]**: Text to display in other rows \\\
The text to be displayed can contain specific directives, which will be replaced by the appropriate values, or will create bars or icons:
**\nnn** will write the ASCII-character nnn (octal) \\\
**%token** will be replaced by the value of token \\\
**%%** will write a '%' \\\
**%$** will write a '$' \\\
**%&** will write a '&' \\\
**$[[:+]]** will create a bar with the specified direction and length (in characters) with the value of token. \\\
If the driver supports dual bars, you can specify the second value with '+token'. \\\
direction can be 'l' (left), 'r' (right), 'u' (up) or 'd'(down). \\\
If you specify the direction in upper case, a logarithmic bar will be created. \\\
Note that the space occupied by a bar always grows from left to right or from top to bottom, regardless of the direction! \\\
**$t,** will create a time series bar. The data are displayed like '$u', but are shifted every second 1 pixel to the left. Currently only displays based on the pixel-driver support this bar type.
**&** will draw the icon num at this position. For the definition of an icons see below...
===== Icons: =====
From 0.9.11 lcd4linux can display icons, and even animate them. If you want a 'heartbeat', that's what you're looking for!\\\
The icon definition consists of two parts: The number of icons you want to control, and a bitmap for each icon:\\\
**Icons**: number of icons
Keep in mind that every icon you're reserving here is no longer available for bars! As most displays have only eight user-defineable characters, and a dual-bar needs at least five of them, you should not use more than 3 icons in parallel with bars...
**Icon.Bitmap**: bitmap row row for icon num
this looks far too complicated. Lets explain it with some examples:
Icon1.Bitmap1 .....
Icon1.Bitmap2 .*.*.
Icon1.Bitmap3 *****
Icon1.Bitmap4 *****
Icon1.Bitmap5 .***.
Icon1.Bitmap6 .***.
Icon1.Bitmap7 ..*..
Icon1.Bitmap8 .....
We define the bitmap of a simple (not animated) icon here. Usually an icon has the same size than a character, 5 columns and 8 rows here. The bitmap is defined with two characters, a '.' (dot) for 'pixel not set' and a '*' (asterisk) for 'pixel set'.
Now for an animated icon:
Icon2.Bitmap1 .....|.....
Icon2.Bitmap2 .*.*.|.*.*.
Icon2.Bitmap3 *****|*.*.*
Icon2.Bitmap4 *****|*...*
Icon2.Bitmap5 .***.|.*.*.
Icon2.Bitmap6 .***.|.*.*.
Icon2.Bitmap7 ..*..|..*..
Icon2.Bitmap8 .....|.....
It's that simple! Just append the second bitmap with a '|' (pipe) character, and you're done! lcd4linux will automatically loop through all bitmaps.
Your animation can consist of as many bitmaps as you like:
Icon3.Bitmap1 .....|.....|.....|.....|..*..|.....|.....|.....
Icon3.Bitmap2 .....|.....|.....|..*..|.*.*.|..*..|.....|.....
Icon3.Bitmap3 .....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....
Icon3.Bitmap4 .....|..*..|.*.*.|*...*|.....|*...*|.*.*.|..*..
Icon3.Bitmap5 .....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....
Icon3.Bitmap6 .....|.....|.....|..*..|.*.*.|..*..|.....|.....
Icon3.Bitmap7 .....|.....|.....|.....|..*..|.....|.....|.....
Icon3.Bitmap8 .....|.....|.....|.....|.....|.....|.....|.....
===== Virtual Rows: =====
**Rows**: number of rows to use (may be greater than your display's rows) \\\
**Scroll**: number of rows to scroll \\\
**Turn**: number of milliseconds between scrolling events \\\
===== General Purpose Outputs: =====
**GPOs**: number of outputs to use \\\
**GPO1**: Token to use for GPO !#1. The token should return a numeric value, if this value is greater then zero, the output will be enabled, otherwise disabled \\\
**GPO[[:2..max]]**: Token to be used for other GPO's \\\
===== Tokens: =====
**o** operating system name ('Linux') \\\
**v** operating system release ('2.0.38') \\\
**p** processor ('i686') \\\
**r** total amount of memory installed (MB) \\\
**mt** total memory from /proc/meminfo (kB) \\\
**mu** used memory (kB) \\\
**mf** free memory (kB) \\\
**ms** shared memory (kB) \\\
**mb** buffers (kB) \\\
**mc** page cache (kB) \\\
**ma** application memory (kB) = used - buffer - cache \\\
**l1** load average for the past 1 minute \\\
**l2** load average for the past 5 minutes \\\
**l3** load average for the past 15 minutes \\\
**L** '!' if load > overload (from config) \\\
**cu** percentage of CPU in user mode \\\
**cn** percentage of CPU in niced tasks \\\
**cs** percentage of CPU in system mode \\\
**cb** percentage of CPU busy (=100-idle) \\\
**ci** percentage of CPU idle \\\
**dr** disk blocks read \\\
**dw** disk blocks written \\\
**dt** disk blocks total (read+write) \\\
**dm** disk blocks max (read, write) \\\
**nr** network bytes received \\\
**nw** network bytes transmitted \\\
**nt** network bytes total (receive+transmit) \\\
**nm** network bytes max (receive, transmit) \\\
**ii** ISDN bytes received \\\
**io** ISDN bytes sent \\\
**it** ISDN bytes total (received+send) \\\
**im** ISDN bytes max (received, send) \\\
**ic** ISDN connected (0=offline, 1=online) \\\
**ti** PPP bytes received \\\
**to** PPP bytes sent \\\
**tt** PPP bytes total (received+send) \\\
**tm** PPP bytes max (received, send) \\\
**s1** temperature of sensor 1 \\\
**s2** temperature of sensor 2 (up to s9) \\\
**bp** battery percentage (APM by now) \\\
**bs** battery status ('=' = online, '+' = charging, '-' discharging) \\\
**bd** battery duration in s{econds}, m{ins}, h{ours} or d{ays} \\\
**hc** seti@home % completed \\\
**ht** seti@home time spent on workunit \\\
**wl** WIFI link \\\
**ws** WIFI signal level \\\
**wn** WIFI noise \\\
**e*** mails in mailbox 1-9, total mail \\\
**u*** mails in mailbox 1-9, unseen mail \\\
**x*** output of command 1-9 \\\
Please have a look at [[:Sample_09|lcd4linux.conf.sample]], where you can find examples of all options and their usage.
----