aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>2004-01-15 04:29:45 +0000
committerreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>2004-01-15 04:29:45 +0000
commita94ba7634d312728e25f888ff252e7c8a731a578 (patch)
treebc9ce13f3aec367151da394ef48aa7be43c1c678
parent504656e9484752c9c0596f153f27089c1961f501 (diff)
downloadlcd4linux-a94ba7634d312728e25f888ff252e7c8a731a578.tar.gz
[lcd4linux @ 2004-01-15 04:29:45 by reinelt]
moved lcd4linux.conf.sample to *.old lcd4linux.conf.sample with new layout new plugins 'loadavg' and 'meminfo' text widget have pre- and postfix git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@311 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
-rw-r--r--Makefile.am2
-rw-r--r--Makefile.in14
-rw-r--r--lcd4linux.conf.sample399
-rw-r--r--lcd4linux.conf.sample.old323
-rw-r--r--plugin.c12
-rw-r--r--plugin_cpuinfo.c10
-rw-r--r--plugin_loadavg.c82
-rw-r--r--plugin_meminfo.c119
-rw-r--r--widget_text.c36
-rw-r--r--widget_text.h57
10 files changed, 719 insertions, 335 deletions
diff --git a/Makefile.am b/Makefile.am
index 3afc2ed..da198e3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -31,7 +31,9 @@ plugin_math.c \
plugin_string.c \
plugin_cfg.c \
plugin_uname.c \
+plugin_loadavg.c \
plugin_cpuinfo.c \
+plugin_meminfo.c \
plugin_i2c_sensors.c \
plugin_xmms.c \
system.c system.h \
diff --git a/Makefile.in b/Makefile.in
index 89fcd4a..4389cfc 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -106,7 +106,7 @@ lcd4linux_LDADD = @DRIVERS@ @DRVLIBS@
#remove next line for liblcd4linux
lcd4linux_DEPENDENCIES = @DRIVERS@
-lcd4linux_SOURCES = lcd4linux.c pid.c pid.h hash.c hash.h parser.c parser.h processor.c processor.h layout.c layout.h timer.c timer.h evaluator.c evaluator.h widget.c widget.h widget_text.c plugin.c plugin.h plugin_math.c plugin_string.c plugin_cfg.c plugin_uname.c plugin_cpuinfo.c plugin_i2c_sensors.c plugin_xmms.c system.c system.h isdn.c isdn.h wifi.c wifi.h mail.c mail.h seti.c seti.h battery.c battery.h dvb.c dvb.h filter.c filter.h exec.c exec.h expr.c expr.h mail2.c socket.c socket.h imon.c imon.h display.c display.h drv.c drv.h debug.c debug.h cfg.c cfg.h lock.c lock.h pixmap.c pixmap.h bar.c bar.h icon.c icon.h fontmap.c fontmap.h udelay.c udelay.h
+lcd4linux_SOURCES = lcd4linux.c pid.c pid.h hash.c hash.h parser.c parser.h processor.c processor.h layout.c layout.h timer.c timer.h evaluator.c evaluator.h widget.c widget.h widget_text.c plugin.c plugin.h plugin_math.c plugin_string.c plugin_cfg.c plugin_uname.c plugin_loadavg.c plugin_cpuinfo.c plugin_meminfo.c plugin_i2c_sensors.c plugin_xmms.c system.c system.h isdn.c isdn.h wifi.c wifi.h mail.c mail.h seti.c seti.h battery.c battery.h dvb.c dvb.h filter.c filter.h exec.c exec.h expr.c expr.h mail2.c socket.c socket.h imon.c imon.h display.c display.h drv.c drv.h debug.c debug.h cfg.c cfg.h lock.c lock.h pixmap.c pixmap.h bar.c bar.h icon.c icon.h fontmap.c fontmap.h udelay.c udelay.h
#liblcd4linux_la_DEPENDENCIES = @DRIVERS@
@@ -150,7 +150,8 @@ lcd4linux_OBJECTS = lcd4linux.$(OBJEXT) pid.$(OBJEXT) hash.$(OBJEXT) \
parser.$(OBJEXT) processor.$(OBJEXT) layout.$(OBJEXT) timer.$(OBJEXT) \
evaluator.$(OBJEXT) widget.$(OBJEXT) widget_text.$(OBJEXT) \
plugin.$(OBJEXT) plugin_math.$(OBJEXT) plugin_string.$(OBJEXT) \
-plugin_cfg.$(OBJEXT) plugin_uname.$(OBJEXT) plugin_cpuinfo.$(OBJEXT) \
+plugin_cfg.$(OBJEXT) plugin_uname.$(OBJEXT) plugin_loadavg.$(OBJEXT) \
+plugin_cpuinfo.$(OBJEXT) plugin_meminfo.$(OBJEXT) \
plugin_i2c_sensors.$(OBJEXT) plugin_xmms.$(OBJEXT) system.$(OBJEXT) \
isdn.$(OBJEXT) wifi.$(OBJEXT) mail.$(OBJEXT) seti.$(OBJEXT) \
battery.$(OBJEXT) dvb.$(OBJEXT) filter.$(OBJEXT) exec.$(OBJEXT) \
@@ -183,10 +184,11 @@ DEP_FILES = .deps/BeckmannEgle.P .deps/Crystalfontz.P .deps/Cwlinux.P \
.deps/imon.P .deps/isdn.P .deps/layout.P .deps/lcd4linux.P .deps/lock.P \
.deps/mail.P .deps/mail2.P .deps/parport.P .deps/parser.P .deps/pid.P \
.deps/pixmap.P .deps/plugin.P .deps/plugin_cfg.P .deps/plugin_cpuinfo.P \
-.deps/plugin_i2c_sensors.P .deps/plugin_math.P .deps/plugin_string.P \
-.deps/plugin_uname.P .deps/plugin_xmms.P .deps/processor.P .deps/seti.P \
-.deps/socket.P .deps/system.P .deps/timer.P .deps/udelay.P \
-.deps/widget.P .deps/widget_text.P .deps/wifi.P
+.deps/plugin_i2c_sensors.P .deps/plugin_loadavg.P .deps/plugin_math.P \
+.deps/plugin_meminfo.P .deps/plugin_string.P .deps/plugin_uname.P \
+.deps/plugin_xmms.P .deps/processor.P .deps/seti.P .deps/socket.P \
+.deps/system.P .deps/timer.P .deps/udelay.P .deps/widget.P \
+.deps/widget_text.P .deps/wifi.P
SOURCES = $(lcd4linux_SOURCES) $(EXTRA_lcd4linux_SOURCES)
OBJECTS = $(lcd4linux_OBJECTS)
diff --git a/lcd4linux.conf.sample b/lcd4linux.conf.sample
index e012f60..780876e 100644
--- a/lcd4linux.conf.sample
+++ b/lcd4linux.conf.sample
@@ -1,323 +1,76 @@
-#
-# /etc/lcd4linux.conf
-# configuration file for lcd4linux
-#
-# http://lcd4linux.sourceforge.net
-#
-# for the complete lcd4linux documentation please refer to
-# http://lcd4linux.sourceforge.net/manual.html
-
-
-# driver-specific options
-#
-# Display:
-# the name of a display driver
-#
-# every driver has its own configuration options
-# (e.g. 'Port', 'Speed', ...)
-# for a detailed description of every option which is
-# available for a specific driver please refer to
-# http://lcd4linux.sourceforge.net/display/main.html
-#
-#Display LCD2041
-#Port /dev/ttyS2
-#Speed 19200
-#Contrast 160
-#
-#Display HD44780
-#Port /dev/parport0
-#Size 24x2
-#Delay 503
-#
-#Display BLC100x
-#Port /dev/ttyS2
-#Type 20x4
-#
-#Display USBLCD
-#Port /dev/usb/usblcd
-#Size 20x4
-#
-#Display PalmPilot
-#Port /dev/ttyS2
-#Speed 4800
-#size 20x4
-#font 6x8
-#pixel 1+0
-#gap 0x0
-#border 2
-#
-#Display PPM
-#size 20x4
-#font 5x8
-#pixel 3+0
-#gap -1x-1
-#border 10
-#foreground \#102000
-#halfground \#70c000
-#background \#80d000
-#
-#Display PNG
-#size 20x4
-#font 5x8
-#pixel 2+0
-#gap -1x-1
-#border 5
-#foreground \#102000
-#halfground \#70c000
-#background \#80d000
-#
-#Display X11
-#size 20x5
-#font 5x8
-#pixel 1+0
-#gap -1x-1
-#border 1
-#foreground \#102000
-#halfground \#90c000
-#background \#a0d000
-#
-#Display Text
-#size 40x8
-#TextBar 1
-#
-#Display SIN
-#Port /dev/tty9
-
-
-# timing options - all values are milliseconds
-#
-# please note that starting with 0.9.11 the settings tick,
-# tack, tau are marked as obsolete and replaced by the
-# following ones:
-#
-# Tick.Text:
-# time between text updates - default is 500
-#
-# Tick.bar :
-# time between bar updates - default is 100
-#
-# Tick.icon:
-# time between icon updates - default is 100
-#
-# Tick.gpo :
-# time between gpo updates - default is 100
-#
-#Tick.Text 500
-#Tick.bar 100
-#Tick.icon 100
-#Tick.gpo 100
-
-
-# data-specific options
-#
-# Overload:
-# load average threshold and bar scaling
-#
-# SetiDir:
-# directory where seti@home stores its data files
-#
-# Battwarning:
-# flash bp-bar if running below Battwarning
-# I use: Row6 "Bat%bp%bs%bd$r10bp+bp"
-# which gives a nice flash effect - default is 10
-#
-Overload 2.0
-SetiDir /etc/setiathome
-#Battwarning 10
-
-
-# mail/news related options
-#
-# Mailbox[1..9]:
-# defines the mailbox for querying
-# the 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]
-# quering a plain (local) mbox file is achieved by giving
-# the full path/name to the mbox file
-# port defaults to 110 (pop3 query) and 143 (imap query)
-# 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 calculated.
-#
-# Delay_e[1..9]:
-# delay in seconds for querying Mailbox[1..9] - default is 5
-#
-# Newsrc:
-# path/name of your .newsrc file containing subscribed news
-# please note that authorization on newsservers is currently untested
-# user and pass may not contain a '/' with above syntax
-#
-#Mailbox1 /var/spool/mail/michi
-#Delay_e1 5
-#
-#Mailbox2 pop3:user:pass@machine
-#Delay_e2 20
-#
-#Mailbox3 imap4:user:pass@machine/folder
-#Delay_e3 20
-#
-#Mailbox4 nntp:server/at.linux
-#Delay_e4 120
-
-
-# temperature sensors
-#
-# Sensor[1..9]:
-# path to temperature file [1...9]
-#
-# Sensor[1..9]_min:
-# temperature where the corresponding bar starts
-#
-# Sensor[1..9]_max:
-# temperature where bar ends
-#
-# Sensor[1..9]_factor:
-# formula to calculate real temperature
-# (display_value=raw_value*factor+offset)
-# lookup these values in /etc/sensors.conf
-#
-# Sensor[1..9]_offset:
-# offset to calculate the real temperature
-#
-#Sensor1 /proc/sys/dev/sensors/as99127f-i2c-0-2d/temp1
-#Sensor1_min 30
-#Sensor1_max 50
-#
-#Sensor2 /proc/sys/dev/sensors/as99127f-i2c-0-2d/temp2
-#Sensor2_min 30
-#Sensor2_max 50
-#
-#Sensor3 /proc/sys/dev/sensors/as99127f-i2c-0-2d/temp3
-#Sensor3_min 30
-#Sensor3_max 50
-
-
-
-# plugins
-#
-# x[1..9]:
-# command to execute. predefined $PATH:
-# PATH=/usr/local/bin:/usr/bin:/bin
-# $X[1..9] is the result of command x[1..9] in environment
-#
-# Tick_x[1..9]:
-# delay in ticks (overrides Delay_x[1..9])
-#
-# Delay_x[1..9]:
-# delay in seconds - default is 1
-#
-# Max_x[1..9]:
-# max value for scaling bars - default is 100 (value should be numeric)
-#
-# Min_x[1..9]:
-# min value for bars - default is 0 (should be != Max_x[1..9])
-#
-#x1 tail -1 /var/log/messages
-#Tick_x1 10
-#Delay_x1 1
-#Max_x1 50
-#Min_x1 10
-#
-#x2 echo $X1 | cut -b25-
-
-
-# display options
-#
-# Row[1..9]:
-# text to display in row [1..9]
-#
-# the text to be displayed can contain specific directives which will
-# be replaced by the appropriate values or will create bars or icons.
-# for a detailed description of every possible directive please refer to
-# http://lcd4linux.sourceforge.net/manual.html or
-# /usr/share/doc/packages/lcd4linux/README.Rows
-#
-Row1 "Busy %cb%% $r14cs+cb"
-Row2 "Load%l1%L$r14l1"
-#
-#Row1 "$u3l1$u3cb$u3cs $u3mu$u3ma$u3ms $u3dr$u3dw $u3nr$u3nw $u3ii$u3io"
-#Row2 " "
-#Row3 " "
-#Row4 "CPU MEM IO IP"
-#
-#Row1 "*** %o %v ***"
-#Row2 "%p CPU %r MB RAM"
-#Row3 "Busy %cb%% $r10cs+cb"
-#Row4 "Load%l1%L$r10l1"
-#
-#Row1 "Load%l1%L$r10cs+cb"
-#Row2 "Disk%dm $R10dr+dw"
-#Row3 "Net %nm $R10nr+nw"
-#Row4 "ISDN%im $r10ii+io"
-#Row4 "DSL %tm $r10ti+to"
-#Row5 "Temp%s2°$r10s1+s2"
-#
-#Row5 %x1
-#Row6 %x2
-#
-#Row6 "Mails %e3/%u3"
-
-
-# icons
-#
-# Icons:
-# number of icons
-#
-# every icon you are 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<num>.Bitmap<row>:
-# bitmap row 'row' for icon 'num'
-#
-# for a detailed description of how to use icons please refer to
-# http://lcd4linux.sourceforge.net/display/main.html
-#
-#Icons 1
-#
-#Icon1.Bitmap1 .....
-#Icon1.Bitmap2 .*.*.
-#Icon1.Bitmap3 *****
-#Icon1.Bitmap4 *****
-#Icon1.Bitmap5 .***.
-#Icon1.Bitmap6 .***.
-#Icon1.Bitmap7 ..*..
-#Icon1.Bitmap8 .....
-
-
-# virtual rows
-#
-# Rows:
-# number of rows to use (maybe greater than your displays rows)
-#
-# Scroll:
-# number of rows to scroll
-#
-# Turn:
-# time in milliseconds between scrolling events
-#
-#Rows 10
-#Scroll 2
-#Turn 5000
-
-
-# general purpose outputs
-#
-# GPOs:
-# number of outputs to use
-#
-# GPO[1..max]:
-# token to use for GPO[1..max]
-#
-# the token should return a numeric value. If this value is greater
-# than zero the output will be enabled otherwise disabled.
-# please refer to the corresponding documentation under
-# http://lcd4linux.sourceforge.net/display/main.html to
-# find out if GPOs are supported with your display
+Display LK204 {
+ Driver 'MatrixOrbital'
+ Model 'LK204-24-USB'
+ Port '/dev/usb/tts/0'
+ Port '/dev/tts/0'
+ Speed 19200
+ Contrast 256/2
+}
+
+Widget OS {
+ class 'Text'
+ expression '*** '.uname('sysname').' '.uname('release').' ***'
+ width 20
+ align 'C'
+ update tick
+}
+
+Widget CPU {
+ class 'Text'
+ expression uname('machine')
+ postfix ' CPU'
+ width 10
+ align 'L'
+ update tick
+}
+
+
+Widget RAM {
+ class 'Text'
+ expression meminfo('MemTotal')/1024
+ postfix ' MB RAM'
+ width 5
+ precision 0
+ align 'R'
+ update tick
+}
+
+Widget Disk {
+ class 'text'
+ expression Pi
+ width 10
+ precision 2
+ align 'R'
+ update tick
+}
+
+
+Widget LAN {
+ class 'text'
+ expression "12.12345678"
+ width 10
+ precision 2
+ align 'M'
+ update tick
+ speed tack
+}
+
+
+Layout Default {
+ Row1 {
+ Col1 'OS'
+ }
+ Row02 {
+ Col1 'CPU'
+ Col10 'RAM'
+ }
+}
+
+Display 'LK204'
+Layout 'Default'
+
+
+Variables {
+ tick 500
+ tack 100
+}
diff --git a/lcd4linux.conf.sample.old b/lcd4linux.conf.sample.old
new file mode 100644
index 0000000..e012f60
--- /dev/null
+++ b/lcd4linux.conf.sample.old
@@ -0,0 +1,323 @@
+#
+# /etc/lcd4linux.conf
+# configuration file for lcd4linux
+#
+# http://lcd4linux.sourceforge.net
+#
+# for the complete lcd4linux documentation please refer to
+# http://lcd4linux.sourceforge.net/manual.html
+
+
+# driver-specific options
+#
+# Display:
+# the name of a display driver
+#
+# every driver has its own configuration options
+# (e.g. 'Port', 'Speed', ...)
+# for a detailed description of every option which is
+# available for a specific driver please refer to
+# http://lcd4linux.sourceforge.net/display/main.html
+#
+#Display LCD2041
+#Port /dev/ttyS2
+#Speed 19200
+#Contrast 160
+#
+#Display HD44780
+#Port /dev/parport0
+#Size 24x2
+#Delay 503
+#
+#Display BLC100x
+#Port /dev/ttyS2
+#Type 20x4
+#
+#Display USBLCD
+#Port /dev/usb/usblcd
+#Size 20x4
+#
+#Display PalmPilot
+#Port /dev/ttyS2
+#Speed 4800
+#size 20x4
+#font 6x8
+#pixel 1+0
+#gap 0x0
+#border 2
+#
+#Display PPM
+#size 20x4
+#font 5x8
+#pixel 3+0
+#gap -1x-1
+#border 10
+#foreground \#102000
+#halfground \#70c000
+#background \#80d000
+#
+#Display PNG
+#size 20x4
+#font 5x8
+#pixel 2+0
+#gap -1x-1
+#border 5
+#foreground \#102000
+#halfground \#70c000
+#background \#80d000
+#
+#Display X11
+#size 20x5
+#font 5x8
+#pixel 1+0
+#gap -1x-1
+#border 1
+#foreground \#102000
+#halfground \#90c000
+#background \#a0d000
+#
+#Display Text
+#size 40x8
+#TextBar 1
+#
+#Display SIN
+#Port /dev/tty9
+
+
+# timing options - all values are milliseconds
+#
+# please note that starting with 0.9.11 the settings tick,
+# tack, tau are marked as obsolete and replaced by the
+# following ones:
+#
+# Tick.Text:
+# time between text updates - default is 500
+#
+# Tick.bar :
+# time between bar updates - default is 100
+#
+# Tick.icon:
+# time between icon updates - default is 100
+#
+# Tick.gpo :
+# time between gpo updates - default is 100
+#
+#Tick.Text 500
+#Tick.bar 100
+#Tick.icon 100
+#Tick.gpo 100
+
+
+# data-specific options
+#
+# Overload:
+# load average threshold and bar scaling
+#
+# SetiDir:
+# directory where seti@home stores its data files
+#
+# Battwarning:
+# flash bp-bar if running below Battwarning
+# I use: Row6 "Bat%bp%bs%bd$r10bp+bp"
+# which gives a nice flash effect - default is 10
+#
+Overload 2.0
+SetiDir /etc/setiathome
+#Battwarning 10
+
+
+# mail/news related options
+#
+# Mailbox[1..9]:
+# defines the mailbox for querying
+# the 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]
+# quering a plain (local) mbox file is achieved by giving
+# the full path/name to the mbox file
+# port defaults to 110 (pop3 query) and 143 (imap query)
+# 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 calculated.
+#
+# Delay_e[1..9]:
+# delay in seconds for querying Mailbox[1..9] - default is 5
+#
+# Newsrc:
+# path/name of your .newsrc file containing subscribed news
+# please note that authorization on newsservers is currently untested
+# user and pass may not contain a '/' with above syntax
+#
+#Mailbox1 /var/spool/mail/michi
+#Delay_e1 5
+#
+#Mailbox2 pop3:user:pass@machine
+#Delay_e2 20
+#
+#Mailbox3 imap4:user:pass@machine/folder
+#Delay_e3 20
+#
+#Mailbox4 nntp:server/at.linux
+#Delay_e4 120
+
+
+# temperature sensors
+#
+# Sensor[1..9]:
+# path to temperature file [1...9]
+#
+# Sensor[1..9]_min:
+# temperature where the corresponding bar starts
+#
+# Sensor[1..9]_max:
+# temperature where bar ends
+#
+# Sensor[1..9]_factor:
+# formula to calculate real temperature
+# (display_value=raw_value*factor+offset)
+# lookup these values in /etc/sensors.conf
+#
+# Sensor[1..9]_offset:
+# offset to calculate the real temperature
+#
+#Sensor1 /proc/sys/dev/sensors/as99127f-i2c-0-2d/temp1
+#Sensor1_min 30
+#Sensor1_max 50
+#
+#Sensor2 /proc/sys/dev/sensors/as99127f-i2c-0-2d/temp2
+#Sensor2_min 30
+#Sensor2_max 50
+#
+#Sensor3 /proc/sys/dev/sensors/as99127f-i2c-0-2d/temp3
+#Sensor3_min 30
+#Sensor3_max 50
+
+
+
+# plugins
+#
+# x[1..9]:
+# command to execute. predefined $PATH:
+# PATH=/usr/local/bin:/usr/bin:/bin
+# $X[1..9] is the result of command x[1..9] in environment
+#
+# Tick_x[1..9]:
+# delay in ticks (overrides Delay_x[1..9])
+#
+# Delay_x[1..9]:
+# delay in seconds - default is 1
+#
+# Max_x[1..9]:
+# max value for scaling bars - default is 100 (value should be numeric)
+#
+# Min_x[1..9]:
+# min value for bars - default is 0 (should be != Max_x[1..9])
+#
+#x1 tail -1 /var/log/messages
+#Tick_x1 10
+#Delay_x1 1
+#Max_x1 50
+#Min_x1 10
+#
+#x2 echo $X1 | cut -b25-
+
+
+# display options
+#
+# Row[1..9]:
+# text to display in row [1..9]
+#
+# the text to be displayed can contain specific directives which will
+# be replaced by the appropriate values or will create bars or icons.
+# for a detailed description of every possible directive please refer to
+# http://lcd4linux.sourceforge.net/manual.html or
+# /usr/share/doc/packages/lcd4linux/README.Rows
+#
+Row1 "Busy %cb%% $r14cs+cb"
+Row2 "Load%l1%L$r14l1"
+#
+#Row1 "$u3l1$u3cb$u3cs $u3mu$u3ma$u3ms $u3dr$u3dw $u3nr$u3nw $u3ii$u3io"
+#Row2 " "
+#Row3 " "
+#Row4 "CPU MEM IO IP"
+#
+#Row1 "*** %o %v ***"
+#Row2 "%p CPU %r MB RAM"
+#Row3 "Busy %cb%% $r10cs+cb"
+#Row4 "Load%l1%L$r10l1"
+#
+#Row1 "Load%l1%L$r10cs+cb"
+#Row2 "Disk%dm $R10dr+dw"
+#Row3 "Net %nm $R10nr+nw"
+#Row4 "ISDN%im $r10ii+io"
+#Row4 "DSL %tm $r10ti+to"
+#Row5 "Temp%s2°$r10s1+s2"
+#
+#Row5 %x1
+#Row6 %x2
+#
+#Row6 "Mails %e3/%u3"
+
+
+# icons
+#
+# Icons:
+# number of icons
+#
+# every icon you are 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<num>.Bitmap<row>:
+# bitmap row 'row' for icon 'num'
+#
+# for a detailed description of how to use icons please refer to
+# http://lcd4linux.sourceforge.net/display/main.html
+#
+#Icons 1
+#
+#Icon1.Bitmap1 .....
+#Icon1.Bitmap2 .*.*.
+#Icon1.Bitmap3 *****
+#Icon1.Bitmap4 *****
+#Icon1.Bitmap5 .***.
+#Icon1.Bitmap6 .***.
+#Icon1.Bitmap7 ..*..
+#Icon1.Bitmap8 .....
+
+
+# virtual rows
+#
+# Rows:
+# number of rows to use (maybe greater than your displays rows)
+#
+# Scroll:
+# number of rows to scroll
+#
+# Turn:
+# time in milliseconds between scrolling events
+#
+#Rows 10
+#Scroll 2
+#Turn 5000
+
+
+# general purpose outputs
+#
+# GPOs:
+# number of outputs to use
+#
+# GPO[1..max]:
+# token to use for GPO[1..max]
+#
+# the token should return a numeric value. If this value is greater
+# than zero the output will be enabled otherwise disabled.
+# please refer to the corresponding documentation under
+# http://lcd4linux.sourceforge.net/display/main.html to
+# find out if GPOs are supported with your display
diff --git a/plugin.c b/plugin.c
index 6328ea9..4fc6de3 100644
--- a/plugin.c
+++ b/plugin.c
@@ -1,4 +1,4 @@
-/* $Id: plugin.c,v 1.11 2004/01/14 11:33:00 reinelt Exp $
+/* $Id: plugin.c,v 1.12 2004/01/15 04:29:45 reinelt Exp $
*
* plugin handler for the Evaluator
*
@@ -22,6 +22,12 @@
*
*
* $Log: plugin.c,v $
+ * Revision 1.12 2004/01/15 04:29:45 reinelt
+ * moved lcd4linux.conf.sample to *.old
+ * lcd4linux.conf.sample with new layout
+ * new plugins 'loadavg' and 'meminfo'
+ * text widget have pre- and postfix
+ *
* Revision 1.11 2004/01/14 11:33:00 reinelt
* new plugin 'uname' which does what it's called
* text widget nearly finished
@@ -107,7 +113,9 @@ int plugin_init_math (void);
int plugin_init_string (void);
int plugin_init_cfg (void);
int plugin_init_uname (void);
+int plugin_init_loadavg (void);
int plugin_init_cpuinfo (void);
+int plugin_init_meminfo (void);
int plugin_init_i2c_sensors (void);
int plugin_init_xmms (void);
@@ -118,7 +126,9 @@ int plugin_init (void)
plugin_init_string();
plugin_init_cfg();
plugin_init_uname();
+ plugin_init_loadavg();
plugin_init_cpuinfo();
+ plugin_init_meminfo();
// MR: segfaults here
// plugin_init_i2c_sensors();
plugin_init_xmms();
diff --git a/plugin_cpuinfo.c b/plugin_cpuinfo.c
index 60b0880..e9d4036 100644
--- a/plugin_cpuinfo.c
+++ b/plugin_cpuinfo.c
@@ -1,4 +1,4 @@
-/* $Id: plugin_cpuinfo.c,v 1.2 2004/01/14 11:33:00 reinelt Exp $
+/* $Id: plugin_cpuinfo.c,v 1.3 2004/01/15 04:29:45 reinelt Exp $
*
* plugin for /proc/cpuinfo parsing
*
@@ -23,6 +23,12 @@
*
*
* $Log: plugin_cpuinfo.c,v $
+ * Revision 1.3 2004/01/15 04:29:45 reinelt
+ * moved lcd4linux.conf.sample to *.old
+ * lcd4linux.conf.sample with new layout
+ * new plugins 'loadavg' and 'meminfo'
+ * text widget have pre- and postfix
+ *
* Revision 1.2 2004/01/14 11:33:00 reinelt
* new plugin 'uname' which does what it's called
* text widget nearly finished
@@ -86,7 +92,7 @@ static void my_cpuinfo (RESULT *result, RESULT *arg1)
// strip leading blanks from key
while (isspace(*key)) *key++='\0';
// strip trailing blanks from key
- while (isspace(*--c)) *c='\0';
+ do *c='\0'; while (isspace(*--c));
// strip leading blanks from value
while (isspace(*val)) *val++='\0';
// strip trailing blanks from value
diff --git a/plugin_loadavg.c b/plugin_loadavg.c
new file mode 100644
index 0000000..2a78bcf
--- /dev/null
+++ b/plugin_loadavg.c
@@ -0,0 +1,82 @@
+/* $Id: plugin_loadavg.c,v 1.1 2004/01/15 04:29:45 reinelt Exp $
+ *
+ * plugin for load average
+ *
+ * Copyright 2003 Michael Reinelt <reinelt@eunet.at>
+ * Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+ *
+ * This file is part of LCD4Linux.
+ *
+ * LCD4Linux is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * LCD4Linux is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *
+ * $Log: plugin_loadavg.c,v $
+ * Revision 1.1 2004/01/15 04:29:45 reinelt
+ * moved lcd4linux.conf.sample to *.old
+ * lcd4linux.conf.sample with new layout
+ * new plugins 'loadavg' and 'meminfo'
+ * text widget have pre- and postfix
+ *
+ */
+
+/*
+ * exported functions:
+ *
+ * int plugin_init_loadavg (void)
+ * adds functions for load average
+ *
+ */
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#include "debug.h"
+#include "plugin.h"
+
+
+static void my_loadavg (RESULT *result, RESULT *arg1)
+{
+ int nelem, index;
+ double loadavg[3];
+
+ nelem=getloadavg(loadavg, 3);
+ if (nelem<0) {
+ error ("getloadavg() failed!");
+ SetResult(&result, R_STRING, "");
+ return;
+ }
+
+ index=R2N(arg1);
+ if (index<1 || index>nelem) {
+ error ("loadavg(%d): index out of range!", index);
+ SetResult(&result, R_STRING, "");
+ return;
+ }
+
+ SetResult(&result, R_NUMBER, &(loadavg[index-1]));
+ return;
+
+}
+
+
+int plugin_init_loadavg (void)
+{
+ AddFunction ("loadavg", 1, my_loadavg);
+ return 0;
+}
+
diff --git a/plugin_meminfo.c b/plugin_meminfo.c
new file mode 100644
index 0000000..6115515
--- /dev/null
+++ b/plugin_meminfo.c
@@ -0,0 +1,119 @@
+/* $Id: plugin_meminfo.c,v 1.1 2004/01/15 04:29:45 reinelt Exp $
+ *
+ * plugin for /proc/meminfo parsing
+ *
+ * Copyright 2003 Michael Reinelt <reinelt@eunet.at>
+ * Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+ *
+ * This file is part of LCD4Linux.
+ *
+ * LCD4Linux is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * LCD4Linux is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *
+ * $Log: plugin_meminfo.c,v $
+ * Revision 1.1 2004/01/15 04:29:45 reinelt
+ * moved lcd4linux.conf.sample to *.old
+ * lcd4linux.conf.sample with new layout
+ * new plugins 'loadavg' and 'meminfo'
+ * text widget have pre- and postfix
+ *
+ */
+
+/*
+ * exported functions:
+ *
+ * int plugin_init_meminfo (void)
+ * adds functions to access /proc/meminfo
+ *
+ */
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <time.h>
+
+#include "debug.h"
+#include "plugin.h"
+#include "hash.h"
+
+
+static void my_meminfo (RESULT *result, RESULT *arg1)
+{
+ static HASH MemInfo = { 0, 0, NULL };
+
+ static time_t now=0;
+ char *key, *val;
+ int line;
+
+ // reread every second only
+ if (time(NULL)!=now) {
+ FILE *stream;
+
+ // destroy previous hash table
+ hash_destroy (&MemInfo);
+
+ stream=fopen("/proc/meminfo", "r");
+ if (stream==NULL) {
+ error ("fopen(/proc/meminfo) failed: %s", strerror(errno));
+ SetResult(&result, R_STRING, "");
+ return;
+ }
+
+ line=0;
+ while (!feof(stream)) {
+ char buffer[256];
+ char *c;
+ fgets (buffer, sizeof(buffer), stream);
+ c=strchr(buffer, ':');
+ if (c==NULL) continue;
+ key=buffer; val=c+1;
+ // strip leading blanks from key
+ while (isspace(*key)) *key++='\0';
+ // strip trailing blanks from key
+ do *c='\0'; while (isspace(*--c));
+ // strip leading blanks from value
+ while (isspace(*val)) *val++='\0';
+ // strip trailing blanks from value
+ for (c=val; *c!='\0';c++);
+ while (isspace(*--c)) *c='\0';
+ // skip lines that do not end with " kB"
+ if (*c=='B' && *(c-1)=='k' && *(c-2)==' ') {
+ // strip trailing " kB" from value
+ *(c-2)='\0';
+ // add entry to hash table
+ hash_set (&MemInfo, key, val);
+ }
+ }
+ fclose (stream);
+ time(&now);
+ }
+
+ key=R2S(arg1);
+ val=hash_get(&MemInfo, key);
+ if (val==NULL) val="";
+
+ SetResult(&result, R_STRING, val);
+}
+
+
+int plugin_init_meminfo (void)
+{
+ AddFunction ("meminfo", 1, my_meminfo);
+ return 0;
+}
+
diff --git a/widget_text.c b/widget_text.c
index 95401ed..5f91c5d 100644
--- a/widget_text.c
+++ b/widget_text.c
@@ -1,4 +1,4 @@
-/* $Id: widget_text.c,v 1.4 2004/01/14 11:33:00 reinelt Exp $
+/* $Id: widget_text.c,v 1.5 2004/01/15 04:29:45 reinelt Exp $
*
* simple text widget handling
*
@@ -21,6 +21,12 @@
*
*
* $Log: widget_text.c,v $
+ * Revision 1.5 2004/01/15 04:29:45 reinelt
+ * moved lcd4linux.conf.sample to *.old
+ * lcd4linux.conf.sample with new layout
+ * new plugins 'loadavg' and 'meminfo'
+ * text widget have pre- and postfix
+ *
* Revision 1.4 2004/01/14 11:33:00 reinelt
* new plugin 'uname' which does what it's called
* text widget nearly finished
@@ -136,7 +142,26 @@ void widget_text_update (void *Self)
WIDGET *W = (WIDGET*)Self;
WIDGET_TEXT *T = W->data;
RESULT result = {0, 0.0, NULL};
- char *value;
+ char *prefix, *postfix, *value;
+
+ // evaluate prefix
+ if (T->prefix!=NULL && strlen(T->prefix)>0) {
+ Eval(T->prefix, &result);
+ prefix=strdup(R2S(&result));
+ DelResult (&result);
+ } else {
+ prefix=strdup("");
+ }
+
+ // evaluate postfix
+ if (T->postfix!=NULL && *(T->postfix)!='\0') {
+ debug ("Eval_postfix(%s)", T->postfix);
+ Eval(T->postfix, &result);
+ postfix=strdup(R2S(&result));
+ DelResult (&result);
+ } else {
+ postfix=strdup("");
+ }
// evaluate expression
Eval(T->expression, &result);
@@ -171,6 +196,8 @@ void widget_text_update (void *Self)
snprintf (value, size+1, "%.*f", precision, number);
}
}
+
+ DelResult (&result);
// has value changed?
if (T->value == NULL || strcmp(T->value, value)!=0) {
@@ -190,7 +217,6 @@ void widget_text_update (void *Self)
free (value);
}
- DelResult (&result);
}
@@ -208,6 +234,10 @@ int widget_text_init (WIDGET *Self)
T=malloc(sizeof(WIDGET_TEXT));
memset (T, 0, sizeof(WIDGET_TEXT));
+ // get raw pre- and postfix (we evaluate it ourselves)
+ T->prefix = cfg_get_raw (section, "prefix", NULL);
+ T->postfix = cfg_get_raw (section, "prefix", NULL);
+
// get raw expression (we evaluate it ourselves)
T->expression = cfg_get_raw (section, "expression", "''");
diff --git a/widget_text.h b/widget_text.h
new file mode 100644
index 0000000..7d678e8
--- /dev/null
+++ b/widget_text.h
@@ -0,0 +1,57 @@
+/* $Id: widget_text.h,v 1.1 2004/01/15 04:29:45 reinelt Exp $
+ *
+ * simple text widget handling
+ *
+ * Copyright 2003,2004 Michael Reinelt <reinelt@eunet.at>
+ * Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+ *
+ * This file is part of LCD4Linux.
+ *
+ * LCD4Linux is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * LCD4Linux is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *
+ * $Log: widget_text.h,v $
+ * Revision 1.1 2004/01/15 04:29:45 reinelt
+ * moved lcd4linux.conf.sample to *.old
+ * lcd4linux.conf.sample with new layout
+ * new plugins 'loadavg' and 'meminfo'
+ * text widget have pre- and postfix
+ *
+ */
+
+
+#ifndef _WIDGET_TEXT_H_
+#define _WIDGET_TEXT_H_
+
+typedef enum { ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT, ALIGN_MARQUEE } ALIGN;
+
+typedef struct WIDGET_TEXT {
+ char *prefix; // label on the left side
+ char *postfix; // label on the right side
+ char *expression; // expression that delivers the value
+ char *value; // evaluated value from expression
+ char *buffer; // string with 'width+1' bytes allocated
+ int width; // field width
+ int precision; // number of digits after the decimal point
+ ALIGN align; // alignment: L, C, R, M(arquee)
+ int update; // update interval
+ int scroll; // marquee starting point
+ int speed; // marquee scrolling speed
+} WIDGET_TEXT;
+
+
+extern WIDGET_CLASS Widget_Text;
+
+#endif