**lcd4linux.conf.sample:** 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 255 Icons 1 } Display CF632 { Driver 'Crystalfontz' Model '632' Port '/dev/tts/0' Speed 19200 Icons 1 } Display CF633 { Icons 4 Driver 'Crystalfontz' Model '633' Port '/dev/tts/0' Speed 19200 Contrast 16 Backlight 50 } # Pertelian x2040 display Display Pertelian { Driver 'Pertelian' Port '/dev/ttyUSB0' Size '20x4' Icons 1 Backlight 1 } Display Curses { Driver 'Curses' Size '20x6' } # generic HD44780 display (LCD4Linux wiring) Display HD44780-generic { Driver 'HD44780' Model 'generic' Port '/dev/parports/0' Size '20x4' Wire { RW 'GND' RS 'AUTOFD' ENABLE 'STROBE' ENABLE2 'GND' GPO 'GND' } } # generic HD44780 display (WinAmp wiring) Display HD44780-winamp { Driver 'HD44780' Model 'generic' UseBusy 1 Port '/dev/parports/0' Size '20x4' Wire { RW 'AUTOFD' RS 'INIT' ENABLE 'STROBE' ENABLE2 'GND' GPO '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' } } 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' } } 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 'WRAP1C-PCF8574' 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 M50530-24x8 { Driver 'M50530' Port '/dev/parport0' # Port '0x378' Size '24x8' Wire.EX 'STROBE' Wire.IOC1 'SELECT' Wire.IOC2 'AUTOFD' Wire.GPO 'INIT' } 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 '16x2' Contrast 30 asc255bug 1 Icons 1 } Display T6963-240x64 { Driver 'T6963' Port '/dev/parports/0' Size '240x64' Wire.CE 'STROBE' Wire.CD 'SELECT' Wire.RD 'AUTOFD' Wire.WR 'INIT' } Display XWindow { Driver 'X11' Size '120x32' Font '6x8' Pixel '4+1' Gap '-1x-1' Border 20 Foreground '#000000' Background '#80d000' Halfground '#70c000' } 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' } 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' speed 100 update tick } Widget CPU { class 'Text' expression uname('machine') prefix 'CPU ' width 9 align 'L' 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 10 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('temp3_input')*1.0324-67 prefix 'Temp' width 9 precision 1 align 'R' update tick } Widget TempBar { class 'Bar' expression i2c_sensors('temp3_input')*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 6 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 Test { class 'Text' expression '1234567890123456789012345678901234567890' #expression '|' width 40 } 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 L24x8 { Row1 { Col1 'Load' Col11 'BusyBar' } Row2 { } } Layout L16x2 { Row1 { Col1 'Busy' Col11 'BusyBar' } Row2 { Col1 'Disk' #Col11 'DiskBar' Col11 'BarTest' } # Row2 { # Col1 'Heartbeat' # Col2 'EKG' # Col3 'Karo' # Col4 'Heart' # Col5 'Blob' # Col6 'Wave' # Col7 'Squirrel' # } } Layout L20x2 { Row1 { Col1 'Busy' Col11 'BusyBar' } Row2 { Col1 'Load' Col11 'LoadBar' } } Layout Test { Row01.Col1 'Test' Row02.Col1 'Test' Row03.Col1 'Test' Row04.Col1 'Test' Row05.Col1 'Test' Row06.Col1 'Test' Row07.Col1 'Test' Row08.Col1 'Test' # Row09.Col1 'Test' # Row10.Col1 'Test' # Row11.Col1 'Test' # Row12.Col1 'Test' # Row13.Col1 'Test' # Row14.Col1 'Test' # Row15.Col1 'Test' # Row16.Col1 'Test' } Layout testMySQL { Row1 { Col1 'MySQLtest1' } Row2 { Col1 'MySQLtest2' } } #Display 'LK204' #Display 'MI240' #Display 'CW12232' #Display 'HD44780-20x4' #Display 'SC1602D' #Display 'LCM-162' #Display 'CF631' #Display 'CF632' #Display 'CF633' #Display 'Curses' Display 'M50530-24x8' #Display 'CT20x4' #Display 'T6963-240x64' #Display 'XWindow' #Display 'USBLCD' #Display 'BWCT' #Display 'Image' #Display 'Pertelian' Layout 'Default' #Layout 'L16x2' #Layout 'L20x2' #Layout 'Test' Variables { tick 500 tack 100 minute 60000 }