#
-# Copyright (C) 2006 OpenWrt.org
+# Copyright (C) 2007 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=lcd4linux
-PKG_VERSION:=0.10.0+cvs20051015
-PKG_RELEASE:=2
+PKG_REV:=847
+PKG_VERSION:=r$(PKG_REV)
+PKG_RELEASE:=3
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
-PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/l/lcd4linux/ \
- http://ftp.de.debian.org/debian/pool/main/l/lcd4linux/
-PKG_MD5SUM:=5b5ac629be4bb5c29104fb8f6b7fa444
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION).orig
+PKG_SOURCE:=$(PKG_NAME)-r$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://ssl.bulix.org/svn/lcd4linux/trunk/
+PKG_SOURCE_SUBDIR:=lcd4linux-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=$(PKG_REV)
+PKG_SOURCE_PROTO:=svn
include $(INCLUDE_DIR)/package.mk
some subsystems and displays it on an external liquid crystal display.
endef
+define Package/lcd4linux/conffiles
+/etc/lcd4linux.conf
+endef
+
# commas are interpreted by the $(call ...) macro, so define an intermediate variable holding our drivers spec
PKG_CONFIGURE_DRIVERS:=all,!PNG,!RouterBoard,!X11
CONFIGURE_ARGS += \
--without-x \
--with-drivers="$(PKG_CONFIGURE_DRIVERS)" \
- --with-plugins=wireless
+ --with-plugins=wireless \
define Build/Configure
- (cd $(PKG_BUILD_DIR); touch \
- configure.in \
- aclocal.m4 \
- Makefile.in \
- configure \
- stamp-h.in \
- config.h.in \
- );
- $(call Build/Configure/Default)
+ $(call Build/Configure/Default,)
+ $(call libtool_disable_rpath)
+endef
+
+define Build/Compile
+ $(MAKE) -C $(PKG_BUILD_DIR) all
+ $(call libtool_fixup_libdir,$(PKG_INSTALL_DIR))
+ $(MAKE) -C $(PKG_BUILD_DIR) DESTDIR="$(PKG_INSTALL_DIR)"
endef
define Package/lcd4linux/install
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/lcd4linux $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME) $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/etc
+ $(INSTALL_CONF) ./files/$(PKG_NAME).conf $(1)/etc/$(PKG_NAME).conf
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME)
endef
$(eval $(call BuildPackage,lcd4linux))
--- /dev/null
+# $Id: lcd4linux.conf.sample 759 2007-02-04 05:55:58Z michael $
+# $URL: https://ssl.bulix.org/svn/lcd4linux/trunk/lcd4linux.conf.sample $
+
+
+Variables {
+ tick 500
+ tack 100
+ minute 60000
+}
+
+Display G15 {
+ Driver 'G-15'
+ Font '6x8'
+ Contrast 10
+ Inverted 0
+ UInput '/dev/input/uinput'
+ SingleKeyPress 1
+}
+
+
+Display SerDispLib {
+ Driver 'serdisplib'
+ Port 'PAR:/dev/parports/0'
+ #Port '/dev/tts/0'
+ Model 'OPTREX323'
+ Options ''
+}
+
+
+Display Trefon {
+ Driver 'TREFON'
+ Size '16x2'
+ Backlight 1
+ Icons 1
+}
+
+
+Display LCD-Linux {
+ Driver 'LCD-Linux'
+ Size '20x2'
+ UseBusy 0
+}
+
+Display LCD2USB {
+ Driver 'LCD2USB'
+ Size '20x2'
+ Backlight 1
+ Icons 1
+}
+
+
+Display LCD2041 {
+ Driver 'MatrixOrbital'
+ Model 'LCD2041'
+ Port '/dev/tts/0'
+ Speed 19200
+ Contrast 160
+}
+
+Display LK202 {
+ Driver 'MatrixOrbital'
+ Model 'LK202-24-USB'
+ Port '/dev/tts/USB0'
+ Speed 19200
+ Contrast 256/2
+}
+
+Display LK204 {
+ Driver 'MatrixOrbital'
+ Model 'LK204-24-USB'
+ Port '/dev/usb/tts/0'
+# Port '/dev/tts/0'
+ Speed 19200
+ Contrast 256/2
+}
+
+
+Display MI240 {
+ Driver 'MilfordInstruments'
+ Model 'MI240'
+ Port '/dev/tts/0'
+ Speed 19200
+}
+
+
+Display CW12232 {
+ Driver 'Cwlinux'
+ Model 'CW12232'
+ Port '/dev/usb/tts/0'
+ Speed 19200
+ Brightness 2
+ Icons 1
+}
+
+
+Display CF631 {
+ Driver 'Crystalfontz'
+ Model '631'
+ Port '/dev/tts/USB0'
+ Speed 115200
+ Contrast 95
+ Backlight 50
+ Icons 1
+}
+
+Display CF632 {
+ Driver 'Crystalfontz'
+ Model '632'
+ Port '/dev/tts/0'
+ Speed 19200
+ Icons 1
+}
+
+Display CF633 {
+ Icons 1
+ Driver 'Crystalfontz'
+ Model '633'
+ Port '/dev/tts/0'
+ Speed 19200
+ Contrast 16
+ Backlight 50
+}
+
+Display CF635 {
+ Icons 1
+ Driver 'Crystalfontz'
+ Model '635'
+ Port '/dev/ttyUSB0'
+ Speed 115200
+ Contrast 100
+ Backlight 128
+}
+
+Display Curses {
+ Driver 'Curses'
+ Size '20x6'
+}
+
+# generic HD44780 display (LCD4Linux wiring)
+Display HD44780-generic {
+ Driver 'HD44780'
+ Model 'generic'
+ Port '/dev/parports/0'
+ Size '8x2'
+ asc255bug 0
+ GPOs 8
+ Wire {
+ RW 'GND'
+ RS 'AUTOFD'
+ ENABLE 'STROBE'
+ ENABLE2 'GND'
+ GPO 'INIT'
+ POWER 'GND'
+ }
+}
+
+# generic HD44780 display (WinAmp wiring)
+Display HD44780-winamp {
+ Driver 'HD44780'
+ Model 'generic'
+ UseBusy 1
+ Port '/dev/parports/0'
+ Size '20x4'
+ asc255bug 1
+ Wire {
+ RW 'AUTOFD'
+ RS 'INIT'
+ ENABLE 'STROBE'
+ ENABLE2 'GND'
+ GPO 'GND'
+ POWER 'GND'
+ }
+ Timing {
+ # fuzz timings by value (100 = no change)
+ fuzz 100
+ # low-level communication [ns]
+ CY 1000 # Enable cycle time
+ PW 450 # Enable pulse width
+ AS 140 # Address setup time
+ AH 20 # Address hold time
+ # HD44780 execution timings [us]
+ INIT1 4100 # first init sequence: 4.1 msec
+ INIT2 100 # second init sequence: 100 usec
+ EXEC 80 # normal execution time
+ WRCG 120 # CG RAM Write
+ CLEAR 2250 # Clear Display
+ HOME 2250 # Return Cursor Home
+ ONOFF 2250 # Display On/Off Control
+ # GPO timing [ns]
+ GPO_ST 20 # 74HCT573 set-up time
+ GPO_PW 230 # 74HCT573 enable pulse width
+ # Power supply timing [ms]
+ POWER 500 # power-on delay
+ }
+}
+
+# HD44780 display 4-Bit mode
+Display HD44780-4bit {
+ Driver 'HD44780'
+ Model 'generic'
+ Port '/dev/parports/0'
+ Size '16x1'
+ Bits 4
+ UseBusy 0
+ asc255bug 0
+ Wire {
+ RW 'GND'
+ RS 'DB4'
+ ENABLE 'DB6'
+ GPO 'GND'
+ }
+}
+
+# Dual-HD44780 display from Pollin
+Display WDC2704M {
+ Driver 'HD44780'
+ Model 'generic'
+ Controllers 2
+ UseBusy 1
+ Port '/dev/parports/0'
+ Size '27x4'
+ Wire {
+ RW 'AUTOFD'
+ RS 'INIT'
+ ENABLE 'STROBE'
+ ENABLE2 'SLCTIN'
+ GPO 'GND'
+ POWER 'GND'
+ }
+}
+
+# HD44780 display from www.kernelconcepts.de
+Display HD44780-kernelconcepts {
+ Driver 'HD44780'
+ Model 'HD66712'
+ UseBusy 1
+ Port '/dev/parports/0'
+ Size '20x4'
+ Wire {
+ RW 'AUTOFD'
+ RS 'INIT'
+ ENABLE 'STROBE'
+ ENABLE2 'GND'
+ GPO 'GND'
+ POWER 'GND'
+ }
+}
+
+Display picoLCD {
+ Driver 'picoLCD'
+ Size '20x2'
+ Contrast 0
+ Backlight 1
+ Icons 1
+}
+
+Display SC1602D {
+ Driver 'HD44780'
+ Port '/dev/parports/0'
+ Bits '8'
+ Size '16x2'
+ asc255bug 0
+ Icons 1
+ Wire {
+ RW 'GND'
+ RS 'AUTOFD'
+ ENABLE 'STROBE'
+ GPO 'INIT'
+ POWER 'GND'
+ }
+}
+
+
+Display LCM-162 {
+ Driver 'HD44780'
+ Model 'LCM-162'
+# Bus 'parport'
+ Port '/dev/parports/0'
+ Size '16x2'
+ UseBusy 1
+ asc255bug 0
+ Icons 1
+}
+
+
+Display HD44780-I2C {
+ Driver 'HD44780'
+ Model 'generic'
+ Bus 'i2c'
+ Port '/dev/i2c-0'
+ Device '70'
+ Bits '4'
+ Size '20x4'
+ asc255bug 0
+ Icons 1
+ Wire {
+ RW 'DB5'
+ RS 'DB4'
+ ENABLE 'DB6'
+ GPO 'GND'
+ }
+}
+
+
+Display LCDTerm {
+ Driver 'LCDTerm
+ Port '/dev/tts/0'
+ Speed 19200
+ Size '20x4'
+ Icons 1
+}
+
+Display SimpleLCD {
+ Driver 'SimpleLCD'
+ Port '/dev/tts/0'
+ Speed 1200
+ Options 0
+ Size '20x2'
+}
+
+Display BA63 {
+ Driver 'WincorNixdorf'
+ Model 'BA63'
+ Port '/dev/tts/0'
+# Port '/dev/tts/USB0'
+ Speed 9600
+ BarChar 219
+ SelfTest 0
+}
+
+Display M50530-24x8 {
+ Driver 'M50530'
+ Port '/dev/parports/0'
+# Port '0x378'
+ Size '24x8'
+ Font '5x7'
+ Duty 2
+ Wire.RW 'INIT'
+ Wire.EX 'STROBE'
+ Wire.IOC1 'SLCTIN'
+ Wire.IOC2 'AUTOFD'
+ Wire.GPO 'GND'
+ UseBusy 1
+ Timing.fuzz 100
+}
+
+
+Display CT20x4 {
+ Driver 'Beckmann+Egle'
+ Model 'CT20x4'
+ Port '/dev/tts/0'
+# Size '16x2'
+# Contrast 7
+# Backlight 1
+ Icons 1
+}
+
+
+Display USBLCD {
+ Driver 'USBLCD'
+# Port '/dev/lcd0'
+ Port 'libusb'
+ Size '20x4'
+ asc255bug 1
+ Icons 1
+}
+
+
+Display BWCT {
+ Driver 'BWCT'
+ Size '20x4'
+ Contrast 220
+ asc255bug 1
+ Icons 1
+}
+
+
+Display T6963-240x64 {
+ Driver 'T6963'
+ Port '/dev/parports/0'
+ Size '240x64'
+ DualScan 0
+ Cell 6
+ Wire.CE 'STROBE'
+ Wire.CD 'SLCTIN'
+ Wire.RD 'AUTOFD'
+ Wire.WR 'INIT'
+ Timing.fuzz 120
+ Font '6x8'
+}
+
+Display T6963-240x128 {
+ Driver 'T6963'
+ Port '/dev/parports/0'
+ Size '240x128'
+ DualScan 0
+ Cell 6
+ Wire.CE 'STROBE'
+ Wire.CD 'SLCTIN'
+ Wire.RD 'AUTOFD'
+ Wire.WR 'INIT'
+ Timing.fuzz 120
+ Font '6x8'
+}
+
+Display T6963-240x128D {
+ Driver 'T6963'
+ Port '/dev/parports/0'
+ Size '240x128'
+ DualScan 1
+ Cell 6
+ Wire.CE 'STROBE'
+ Wire.CD 'SLCTIN'
+ Wire.RD 'AUTOFD'
+ Wire.WR 'INIT'
+ Timing.fuzz 120
+ Font '6x8'
+}
+
+
+Display LPH7508 {
+ Driver 'LPH7508'
+ Port '/dev/parports/0'
+ Font '6x8'
+ Contrast 15
+ Inverted 0
+}
+
+Display LPH7508-serdisplib {
+ Driver 'serdisplib'
+ Port 'PAR:/dev/parports/0'
+ Model 'LPH7508'
+}
+
+Display ctinclud {
+ Driver 'serdisplib'
+ Port 'USB:7c0/1501'
+ Model 'CTINCLUD'
+ Options ''
+ Inverted 0
+}
+
+Display XWindow {
+ Driver 'X11'
+ Size '120x32'
+ Font '5x8'
+ Pixel '4+1'
+ Gap '-1x-1'
+ Border 20
+# Foreground '#000000'
+# Background '#80d000'
+# Halfground '#70c000'
+ Foreground '000000cc'
+ Background '00000022'
+ Basecolor '80d000'
+}
+
+Display Image {
+ Driver 'Image'
+# Format 'PPM'
+ Format 'PNG'
+ Size '120x32'
+ Font '6x8'
+ Pixel '4+1'
+ Gap '-1x-1'
+ Border 20
+# Foreground '#000000'
+# Background '#80d000'
+# Halfground '#70c000'
+ Foreground '000000cc'
+ Background '00000022'
+ Basecolor '80d000'
+}
+
+#Plugin KVV {
+# StationID '12_701'
+# Refresh 30
+# Proxy 'igate'
+# Port 8080;
+#}
+
+Plugin Seti {
+ Directory '/root/setiathome-3.08.i686-pc-linux-gnu'
+}
+
+
+Plugin MySQL {
+ server 'gsmlandia.com' # if none, localhost assumed
+ port 3306 # if none, MySQL default assumed
+ user 'lcd4linux' # if none, lcd4linux unix owner assumed
+ password 'lcd4linux' # if none, empty password assumed
+ database 'lcd4linux' # MUST be specified
+}
+
+Plugin Pop3 {
+ server1 'localhost'
+ port1 110
+ user1 'michael'
+ password1 'secret'
+}
+
+
+Widget OS {
+ class 'Text'
+ expression '*** '.uname('sysname').' '.uname('release').' ***'
+ width 20
+ align 'M'
+ style 'bold'
+ speed 50
+ update tick
+}
+
+Widget CPU {
+ class 'Text'
+ expression uname('machine')
+ prefix 'CPU '
+ width 9
+ align 'L'
+ style test::onoff(7)>0?'bold':'norm'
+ update tick
+}
+
+
+Widget CPUinfo {
+ class 'Text'
+ expression cpuinfo('model name')
+ prefix ''
+ width 20
+ align 'M'
+ speed 100
+ update tick
+}
+
+
+Widget RAM {
+ class 'Text'
+ expression meminfo('MemTotal')/1024
+ postfix ' MB RAM'
+ width 11
+ precision 0
+ align 'R'
+ update tick
+}
+
+Widget Busy {
+ class 'Text'
+ expression proc_stat::cpu('busy', 500)
+ prefix 'Busy'
+ postfix '%'
+ width 9
+ precision 1
+ align 'R'
+ update tick
+}
+
+Widget BusyBar {
+ class 'Bar'
+ expression proc_stat::cpu('busy', 500)
+ expression2 proc_stat::cpu('system', 500)
+ length 10
+ direction 'E'
+ update tack
+}
+
+Widget Load {
+ class 'Text'
+ expression loadavg(1)
+ prefix 'Load'
+ postfix loadavg(1)>1.0?'!':' '
+ width 10
+ precision 1
+ align 'R'
+ update tick
+}
+
+Widget LoadBar {
+ class 'Bar'
+ expression loadavg(1)
+ max 2.0
+ length 10
+ direction 'E'
+ update tack
+}
+
+
+Widget Disk {
+ class 'Text'
+ # disk.[rw]blk return blocks, we assume a blocksize of 512
+ # to get the number in kB/s we would do blk*512/1024, which is blk/2
+ # expression (proc_stat::disk('.*', 'rblk', 500)+proc_stat::disk('.*', 'wblk', 500))/2
+ # with kernel 2.6, disk_io disappeared from /proc/stat but moved to /proc/diskstat
+ # therefore you have to use another function called 'diskstats':
+ expression diskstats('hd.', 'read_sectors', 500) + diskstats('hd.', 'write_sectors', 500)
+ prefix 'disk'
+ postfix ' '
+ width 10
+ precision 0
+ align 'R'
+ update tick
+}
+
+Widget DiskBar {
+ class 'Bar'
+ #expression proc_stat::disk('.*', 'rblk', 500)
+ #expression2 proc_stat::disk('.*', 'wblk', 500)
+ # for kernel 2.6:
+ expression diskstats('hd.', 'read_sectors', 500)
+ expression2 diskstats('hd.', 'write_sectors', 500)
+ length 14
+ direction 'E'
+ update tack
+}
+
+Widget Eth0 {
+ class 'Text'
+ expression (netdev('eth0', 'Rx_bytes', 500)+netdev('eth0', 'Tx_bytes', 500))/1024
+ prefix 'eth0'
+ postfix ' '
+ width 10
+ precision 0
+ align 'R'
+ update tick
+}
+
+Widget Eth0Bar {
+ class 'Bar'
+ expression netdev('eth0', 'Rx_bytes', 500)
+ expression2 netdev('eth0', 'Tx_bytes', 500)
+ length 14
+ direction 'E'
+ update tack
+}
+
+Widget PPP {
+ class 'Text'
+ expression (ppp('Rx:0', 500)+ppp('Tx:0', 500))
+ prefix 'PPP'
+ width 9
+ precision 0
+ align 'R'
+ update tick
+}
+
+Widget Temp {
+ class 'Text'
+ expression i2c_sensors('temp_input3')*1.0324-67
+ prefix 'Temp'
+ width 9
+ precision 1
+ align 'R'
+ update tick
+}
+
+Widget TempBar {
+ class 'Bar'
+ expression i2c_sensors('temp_input3')*1.0324-67
+ min 40
+ max 80
+ length 10
+ direction 'E'
+ update tack
+}
+
+Widget MySQLtest1 {
+ class 'Text'
+ expression MySQL::query('SELECT id FROM table1')
+ width 20
+ align 'R'
+ prefix 'MySQL test:'
+ update minute
+}
+
+Widget MySQLtest2 {
+ class 'Text'
+ expression MySQL::status()
+ width 20
+ align 'M'
+ prefix 'Status: '
+ update minute
+}
+
+Widget Uptime {
+ class 'Text'
+ expression uptime('%d days %H:%M:%S')
+ width 20
+ align 'R'
+ prefix 'Up '
+ update 1000
+}
+
+
+# debugging widgets
+
+Widget BarTest {
+ class 'Bar'
+ # test::bar(barno,maxval,startval,delta) - move a test value between 0 and max.
+ # delta= step to change value by each time it's read.
+ # barno - ten different test bar values can be set up, with barno=0..9
+ # if delta=0, just returns the value of bar n instead of changing it.
+ expression test::bar(0,30,25,1)
+ expression2 test::bar(1,30,0,1)
+ length 8
+ # max 50
+ direction 'E'
+ update 10
+}
+
+Widget BarTestVal {
+ class 'Text'
+ expression test::bar(0,100,50,0)
+ prefix 'Test '
+ width 9
+ update 200
+}
+
+Widget LightningTest {
+ class 'icon'
+ speed 500
+ visible test::onoff(0)
+ bitmap {
+ row1 '...***'
+ row2 '..***.'
+ row3 '.***..'
+ row4 '.****.'
+ row5 '..**..'
+ row6 '.**...'
+ row7 '**....'
+ row8 '*.....'
+ }
+}
+
+
+# Icons
+
+Widget Heartbeat {
+ class 'Icon'
+ speed 800
+ Bitmap {
+ Row1 '.....|.....'
+ Row2 '.*.*.|.*.*.'
+ Row3 '*****|*.*.*'
+ Row4 '*****|*...*'
+ Row5 '.***.|.*.*.'
+ Row6 '.***.|.*.*.'
+ Row7 '..*..|..*..'
+ Row8 '.....|.....'
+ }
+}
+
+Widget EKG {
+ class 'Icon'
+ speed 50
+ Bitmap {
+ Row1 '.....|.....|.....|.....|.....|.....|.....|.....'
+ Row2 '.....|....*|...*.|..*..|.*...|*....|.....|.....'
+ Row3 '.....|....*|...*.|..*..|.*...|*....|.....|.....'
+ Row4 '.....|....*|...**|..**.|.**..|**...|*....|.....'
+ Row5 '.....|....*|...**|..**.|.**..|**...|*....|.....'
+ Row6 '.....|....*|...*.|..*.*|.*.*.|*.*..|.*...|*....'
+ Row7 '*****|*****|****.|***..|**..*|*..**|..***|.****'
+ Row8 '.....|.....|.....|.....|.....|.....|.....|.....'
+ }
+}
+Widget Karo {
+ class 'Icon'
+ speed 200
+ Bitmap {
+ Row1 '.....|.....|.....|.....|..*..|.....|.....|.....'
+ Row2 '.....|.....|.....|..*..|.*.*.|..*..|.....|.....'
+ Row3 '.....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....'
+ Row4 '.....|..*..|.*.*.|*...*|.....|*...*|.*.*.|..*..'
+ Row5 '.....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....'
+ Row6 '.....|.....|.....|..*..|.*.*.|..*..|.....|.....'
+ Row7 '.....|.....|.....|.....|..*..|.....|.....|.....'
+ Row8 '.....|.....|.....|.....|.....|.....|.....|.....'
+ }
+}
+Widget Heart {
+ class 'Icon'
+ speed 250
+ Bitmap {
+ Row1 '.....|.....|.....|.....|.....|.....'
+ Row2 '.*.*.|.....|.*.*.|.....|.....|.....'
+ Row3 '*****|.*.*.|*****|.*.*.|.*.*.|.*.*.'
+ Row4 '*****|.***.|*****|.***.|.***.|.***.'
+ Row5 '.***.|.***.|.***.|.***.|.***.|.***.'
+ Row6 '.***.|..*..|.***.|..*..|..*..|..*..'
+ Row7 '..*..|.....|..*..|.....|.....|.....'
+ Row8 '.....|.....|.....|.....|.....|.....'
+ }
+}
+Widget Blob {
+ class 'Icon'
+ speed 250
+ Bitmap {
+ Row1 '.....|.....|.....'
+ Row2 '.....|.....|.***.'
+ Row3 '.....|.***.|*...*'
+ Row4 '..*..|.*.*.|*...*'
+ Row5 '.....|.***.|*...*'
+ Row6 '.....|.....|.***.'
+ Row7 '.....|.....|.....'
+ Row8 '.....|.....|.....'
+ }
+}
+Widget Wave {
+ class 'Icon'
+ speed 100
+ Bitmap {
+ Row1 '..**.|.**..|**...|*....|.....|.....|.....|.....|....*|...**'
+ Row2 '.*..*|*..*.|..*..|.*...|*....|.....|.....|....*|...*.|..*..'
+ Row3 '*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...'
+ Row4 '*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...'
+ Row5 '*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...'
+ Row6 '.....|.....|....*|...*.|..*..|.*..*|*..*.|..*..|.*...|*....'
+ Row7 '.....|.....|.....|....*|...**|..**.|.**..|**...|*....|.....'
+ Row8 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....'
+ }
+}
+Widget Squirrel {
+ class 'Icon'
+ speed 100
+ Bitmap {
+ Row1 '.....|.....|.....|.....|.....|.....'
+ Row2 '.....|.....|.....|.....|.....|.....'
+ Row3 '.....|.....|.....|.....|.....|.....'
+ Row4 '**...|.**..|..**.|...**|....*|.....'
+ Row5 '*****|*****|*****|*****|*****|*****'
+ Row6 '...**|..**.|.**..|**...|*....|.....'
+ Row7 '.....|.....|.....|.....|.....|.....'
+ Row8 '.....|.....|.....|.....|.....|.....'
+ }
+}
+
+Widget Lightning {
+ class 'icon'
+ speed 100
+ visible cpu('busy', 500)-50
+ bitmap {
+ row1 '...***'
+ row2 '..***.'
+ row3 '.***..'
+ row4 '.****.'
+ row5 '..**..'
+ row6 '.**...'
+ row7 '**....'
+ row8 '*.....'
+ }
+}
+
+Widget Rain {
+ class 'icon'
+ speed 200
+ bitmap {
+ row1 '...*.|.....|.....|.*...|....*|..*..|.....|*....'
+ row2 '*....|...*.|.....|.....|.*...|....*|..*..|.....'
+ row3 '.....|*....|...*.|.....|.....|.*...|....*|..*..'
+ row4 '..*..|.....|*....|...*.|.....|.....|.*...|....*'
+ row5 '....*|..*..|.....|*....|...*.|.....|.....|.*...'
+ row6 '.*...|....*|..*..|.....|*....|...*.|.....|.....'
+ row7 '.....|.*...|....*|..*..|.....|*....|...*.|.....'
+ row8 '.....|.....|.*...|....*|..*..|.....|*....|...*.'
+ }
+}
+
+Widget Timer {
+ class 'Icon'
+ speed 50
+ Bitmap {
+ Row1 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
+ Row2 '.***.|.*+*.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.+++.|.+*+.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|'
+ Row3 '*****|**+**|**++*|**+++|**++.|**++.|**+++|**+++|**+++|**+++|**+++|+++++|+++++|++*++|++**+|++***|++**.|++**.|++***|++***|++***|++***|++***|*****|'
+ Row4 '*****|**+**|**+**|**+**|**+++|**+++|**+++|**+++|**+++|**+++|+++++|+++++|+++++|++*++|++*++|++*++|++***|++***|++***|++***|++***|++***|*****|*****|'
+ Row5 '*****|*****|*****|*****|*****|***++|***++|**+++|*++++|+++++|+++++|+++++|+++++|+++++|+++++|+++++|+++++|+++**|+++**|++***|+****|*****|*****|*****|'
+ Row6 '.***.|.***.|.***.|.***.|.***.|.***.|.**+.|.*++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.++*.|.+**.|.***.|.***.|.***.|.***.|'
+ Row7 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
+ Row8 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
+
+
+ }
+}
+
+Widget Test {
+ class 'Text'
+ expression '1234567890123456789012345678901234567890'
+ width 40
+ foreground 'ff0000ff'
+}
+
+Widget Test1 {
+ class 'Text'
+ expression 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
+ width 40
+ align 'M'
+ speed 100
+}
+
+Widget Test2 {
+ class 'Text'
+ expression '1234567890abcdefghijklmnopqrstuvwxyz'
+ width 40
+ align 'M'
+ speed 150
+}
+
+Widget GPO_Val1 {
+ class 'Text'
+ expression LCD::GPO(1)
+ prefix 'GPO#1'
+ width 10
+ precision 0
+ align 'R'
+ update tick
+}
+
+Widget GPI_Val1 {
+ class 'Text'
+ expression LCD::GPI(1)
+ prefix 'GPI#1'
+ width 10
+ precision 0
+ align 'R'
+ update tick
+}
+
+Widget GPO_Val4 {
+ class 'Text'
+ expression LCD::GPO(4)
+ prefix 'GPO#4'
+ width 10
+ precision 0
+ align 'R'
+ update tick
+}
+
+Widget GPO_Test1 {
+ class 'GPO'
+ expression 255*test::onoff(1)
+ update 300
+}
+
+Widget GPO_Test255 {
+ class 'GPO'
+ expression test::bar(0,255, 0, 1)
+ update 100
+}
+
+Widget ImageTest {
+ class 'Image'
+ file 'tux.png'
+ update 1000
+ visible 1
+ inverted 0
+}
+
+Widget KVV {
+ class 'Text'
+ expression kvv::line(0).' '.kvv::station(0)
+ width 11
+
+ align 'L'
+ update tick
+ Foreground 'ffff00'
+ style 'bold'
+}
+
+Widget KVV_TIME {
+ class 'Text'
+ expression kvv::time_str(0)
+ width 2
+
+ align 'R'
+ update tick
+ foreground kvv::time(0) < 2 ? 'FF0000' : ( kvv::time(0) < 5 ? 'FFFF00' : '00FF00' )
+ style 'bold'
+}
+
+Layout Default {
+ Row1 {
+ Col1 'OS'
+ }
+ Row2 {
+ Col1 'CPU'
+ Col10 'RAM'
+ }
+ Row3 {
+ Col1 'Busy'
+ Col10 'Rain'
+ Col11 'BusyBar'
+ }
+ Row4 {
+ Col1 'Load'
+ Col11 'LoadBar'
+ }
+ Row5 {
+ Col1 'Disk'
+ Col11 'DiskBar'
+ }
+ Row6 {
+ Col1 'Eth0'
+ Col11 'Eth0Bar'
+ }
+}
+
+Layout TestLayer {
+ Row1 {
+ Col1 'OS'
+ }
+ Row2 {
+ Col1 'CPU'
+ Col10 'RAM'
+ }
+ Row3 {
+ Col1 'Busy'
+ Col10 'Rain'
+ Col11 'BusyBar'
+ }
+ Row4 {
+ Col1 'Load'
+ Col11 'LoadBar'
+ }
+ Row5 {
+ Col1 'Disk'
+ Col11 'DiskBar'
+ }
+ Row6 {
+ Col1 'Eth0'
+ Col11 'Eth0Bar'
+ }
+ Layer 2 {
+ X1.Y1 'ImageTest'
+ }
+}
+
+Layout TestImage {
+ Layer 2 {
+ X1.Y1 'ImageTest'
+ }
+}
+
+Layout L24x8 {
+ Row1 {
+ Col1 'Load'
+ Col11 'BusyBar'
+ }
+ Row2 {
+ }
+}
+
+Layout L8x2 {
+ Row1 {
+ Col1 'Busy'
+ }
+ Row2 {
+ Col1 'BarTest'
+ }
+}
+
+Layout L16x1 {
+ Row1 {
+ Col1 'Busy'
+ Col11 'BusyBar'
+ }
+}
+
+Layout L16x2 {
+ Row1 {
+ Col1 'Busy'
+ Col11 'BusyBar'
+ }
+ Row2 {
+ Col1 'Disk'
+ #Col11 'DiskBar'
+ Col11 'BarTest'
+ }
+}
+
+Layout L20x2 {
+ Row1 {
+ Col1 'CPUinfo'
+ }
+ Row2 {
+ Col1 'Busy'
+ Col11 'BusyBar'
+ }
+}
+
+Layout L40x2 {
+ Row1 {
+ Col1 'OS'
+ Col21 'Busy'
+ Col31 'BusyBar'
+ }
+ Row2 {
+ Col1 'CPU'
+ Col10 'RAM'
+ Col21 'Load'
+ Col31 'LoadBar'
+ }
+}
+
+Layout Test {
+ Row01.Col1 'Test1'
+ Row02.Col1 'Test1'
+ Row03.Col1 'Test1'
+ Row04.Col1 'Test1'
+ Row05.Col1 'Test1'
+ Row06.Col1 'Test1'
+ Row07.Col1 'Test1'
+ Row08.Col1 'Test1'
+ Row09.Col1 'Test1'
+ Row10.Col1 'Test1'
+ Row11.Col1 'Test1'
+ Row12.Col1 'Test1'
+ Row13.Col1 'Test1'
+ Row14.Col1 'Test1'
+ Row15.Col1 'Test1'
+ Row16.Col1 'Test1'
+ Row17.Col1 'Test1'
+ Row18.Col1 'Test1'
+ Row19.Col1 'Test1'
+ Row20.Col1 'Test1'
+ Row21.Col1 'Test1'
+ Row22.Col1 'Test1'
+ Row23.Col1 'Test1'
+ Row24.Col1 'Test1'
+}
+
+Layout Test2 {
+ Row01.Col1 'Test1'
+ #Row02.Col1 'Rain'
+ Row02.Col1 'Test2'
+ Row03.Col1 'Test1'
+ Row04.Col1 'Test2'
+ Row05.Col1 'Test1'
+ Row06.Col1 'Test2'
+ Row07.Col1 'Test1'
+ Row08.Col1 'Test2'
+}
+
+Layout TestGPO {
+ Row1.Col1 'GPO_Val1'
+ Row1.Col10 'GPI_Val1'
+ Row2.Col1 'GPO_Val4'
+ GPO1 'GPO_Test255'
+ GPO4 'GPO_Test1'
+}
+
+Layout TestIcons {
+ Row1.Col1 'Timer'
+ Row1.Col2 'Rain'
+ Row1.Col3 'Squirrel'
+ Row1.Col4 'Wave'
+ Row1.Col5 'Blob'
+ Row1.Col6 'Heart'
+ Row1.Col7 'Karo'
+ Row1.Col8 'EKG'
+}
+
+Layout testMySQL {
+ Row1 {
+ Col1 'MySQLtest1'
+ }
+ Row2 {
+ Col1 'MySQLtest2'
+ }
+}
+
+Layout Debug {
+ #Row09.Col1 'Test'
+ Row09.Col1 'Heartbeat'
+}
+
+
+
+#Display 'SerDispLib'
+#Display 'LCD-Linux'
+#Display 'LCD2041'
+#Display 'LK202'
+#Display 'LK204'
+#Display 'MI240'
+#Display 'CW12232'
+#Display 'HD44780-generic'
+#Display 'HD44780-WinAmp'
+#Display 'HD44780-4bit'
+#Display 'WDC2704M'
+#Display 'SC1602D'
+#Display 'LCM-162'
+#Display 'CF631'
+#Display 'CF632'
+#Display 'CF633'
+#Display 'Curses'
+#Display 'M50530-24x8'
+#Display 'LCDTerm'
+#Display 'SimpleLCD'
+#Display 'BA63'
+#Display 'CT20x4'
+#Display 'T6963-240x64'
+#Display 'T6963-240x128'
+#Display 'T6963-240x128D'
+#Display 'XWindow'
+#Display 'USBLCD'
+#Display 'BWCT'
+#Display 'Image'
+#Display 'Trefon'
+#Display 'LCD2USB'
+#Display 'LPH7508-serdisplib'
+#Display 'LPH7508'
+#Display 'ctinclud'
+Display 'picoLCD'
+
+#Layout 'Default'
+#Layout 'TestLayer'
+#Layout 'TestImage'
+#Layout 'L8x2'
+#Layout 'L16x1'
+#Layout 'L16x2'
+Layout 'L20x2'
+#Layout 'L40x2'
+#Layout 'Test'
+#Layout 'Test2'
+#Layout 'TestGPO'
+#Layout 'Debug'
+#Layout 'TestIcons'