Welcome to the IPFire Wiki

This wiki is a community-maintained resource about everything there is to know about IPFire. Join us and help us improving it!

Looking for something?

Use the search and find answers to everything about IPFire. If you cannot find what you are looking for, join our community and talk to fellow IPFire users, developers and everybody else involved in the project.

IPFire Community

Differences in Revisions: Sample LCD4Linux Config File

»
Newer Revision
Wednesday at 8:34 pm
removed extra hash in Title
## Sample LCD4Linux Config File
# Sample LCD4Linux Config File
 
```
Driver 'Crystalfontz'
Model '634'
Port '/dev/ttyS0'
Speed 19200
Contrast 85
Backlight 20
Size '20x4'
Icons 1
}
 
Widget Time {
class 'Text'
expression strftime('%l:%M%p',time())
width 7
align 'L'
update minute
}
 
Widget OS {
class 'Text'
expression '*'.uname('sysname').' '.uname('release').'*'
width 20
align 'M'
speed 400
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 10
precision 0
align 'M'
update tick
}
 
Widget RAMFree {
class 'Text'
expression meminfo('MemFree')/1024
postfix 'MB F'
width 10
precision 0
align 'L'
update tick
}
 
Widget RAMUsed {
class 'Text'
expression meminfo('Active')/1024
postfix 'MB U'
width 10
precision 0
align 'R'
update tick
}
 
Widget Busy {
class 'Text'
expression proc_stat::cpu('busy', tock)
prefix 'Busy'
postfix '%'
width 10
precision 1
align 'R'
update tick
}
 
Widget Load {
class 'Text'
expression loadavg(1)
prefix 'Load'
postfix loadavg(1)>1.0?'!':' '
width 10
precision 1
align 'R'
update tick
}
 
Widget Disk {
class 'Text'
expression (proc_stat::disk('.*', 'rblk', tick) + proc_stat::disk('.*', 'wblk', tick))/2
prefix 'I/O'
width 10
precision 0
align 'R'
update tack
}
 
Widget red0 {
class 'Text'
expression (netdev('red0', 'Rx_bytes', tick)+netdev('red0', 'Tx_bytes', tick))/1024
prefix 'WAN'
postfix ' '
width 10
precision 0
align 'R'
update tick
}
 
Widget blue0 {
class 'Text'
expression (netdev('blue0', 'Rx_bytes', tick)+netdev('blue0', 'Tx_bytes', tick))/1024
prefix 'WIFI'
postfix ' '
width 10
precision 0
align 'R'
update tick
}
 
Widget green0 {
class 'Text'
expression (netdev('green0', 'Rx_bytes', tick)+netdev('green0', 'Tx_bytes', tick))/1024
prefix 'LAN'
postfix ' '
width 10
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 Uptime {
class 'Text'
expression uptime('%dD %H:%M')
width 12
align 'R'
prefix 'Up:'
update minute
}
 
Widget CoreNum {
class 'Text'
expression exec('cat /opt/pakfire/db/core/mine', 1000)
width 9
align 'R'
prefix 'Core: '
update minute
}
 
Layout Default {
Row1 {
Col1 'Time'
Col9 'Uptime'
}
Row2 {
Col1 'Load'
Col11 'Temp'
}
Row3 {
Col1 'red0'
Col11 'green0'
}
Row4 {
Col1 'blue0'
Col11 'CoreNum'
}
}
 
Display 'CF634'
 
Layout 'Default'
 
Variables {
tick 500
tack 100
tock 1000
minute 60000
hour 3600000
}
`
 
## Sample LCD4Linux Config File for picoLCD 256x64 Sideshow
`
Driver 'picoLCDGraphic'
Size '256x64'
Contrast 200
Backlight 1
Inverted 1
Icons 1
}
 
Variables {
tick 500
tack 100
minute 60000
}
 
 
 
#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 'user'
# password1 'pass'
#}
 
 
Widget OS {
class 'Text'
expression '*** '.uname('sysname').' '.uname('release').' ***'
width 20
align 'M'
style 'bold'
speed 50
update tick
}
 
 
 
Widget HDDTemp {
class 'Text'
expression 'IDE Temp'.exec ('hddtemp /dev/sda | cut -f 3 -d :', 1000)
width 14
align 'L'
update 1000
}
 
Widget FSSpace {
class 'Text'
expression a=((statfs('/', 'bavail')*statfs('/', 'bsize'))/1024/1024);b=((statfs('/backup/', 'bavail')*statfs('/backup/', 'bsize'))/1024/1024);c='/ '.' '.a.'MB /backup/ '.b.' MB'
prefix 'Free Space:'
postfix ''
width 42
align 'M'
#precision 0
update 1000
}
 
 
Widget BottomTicker {
class 'Text'
expression uname('sysname').' '.uname('nodename').' '.uname('release').' '.uname('machine').' '.cpuinfo('model name')
#expression strftime('%A %d/%m %H:%M:%S',time()).' '.cpuinfo('model name').' '. uptime('%d days %H:%M:%S')
#expression strftime('%A %d/%m %H:%M:%S',time())
prefix ''
width 42
align 'M'
speed 1000
update tick
style 'bold'
}
 
#Widget CPU {
# class 'Text'
# expression uname('machine')
# prefix 'CPU '
# width 9
# align 'L'
# style test::onoff(7)>0?'bold':'norm'
# update tick
#}
 
 
Widget CPULabel {
class 'text'
expression 'CPU:'
width 4
align 'L'
style 'bold'
}
 
Widget CPU {
class 'Text'
expression proc_stat::cpu('busy', 500)
prefix ''
postfix '% '
width 5
precision 0
align 'R'
update tick
}
 
Widget CPUBar {
class 'Bar'
expression proc_stat::cpu('busy', 500)
expression2 proc_stat::cpu('system', 500)
length 10
min 1
max 100
direction 'E'
style 'H'
update tick
}
 
 
Widget RAMLabel {
class 'text'
expression 'RAM:'
width 4
align 'L'
style 'bold'
}
 
 
Widget RAMTotal {
class 'Text'
expression meminfo('MemTotal')/1024
postfix 'MB FREE'
width 11
precision 0
align 'L'
update tick
}
 
Widget RAMFree {
class 'Text'
expression meminfo('MemFree')/1024
prefix ''
postfix '/'
width 5
precision 0
align 'R'
update tick
}
 
Widget IDELabel {
class 'text'
expression 'IDE:'
width 4
align 'L'
style 'bold'
}
 
Widget IDEIn {
class 'text'
# In MB/s
expression (diskstats('sda', 'read_sectors', 500))/2048
prefix 'OUT '
postfix 'MB'
precision 2
align 'R'
width 10
update tick
}
 
Widget IDEOut {
class 'text'
# In MB/s
expression (diskstats('sda', 'write_sectors', 500))/2048
prefix 'IN '
postfix 'MB'
precision 2
align 'R'
width 10
update tick
}
 
Widget IDEBar {
class 'Bar'
expression diskstats('sda', 'read_sectors', 500)
expression2 diskstats('sda', 'write_sectors', 500)
length 14
direction 'E'
style 'H'
update tick
}
 
Widget ETHLabel {
class 'text'
expression 'ETH:'
width 4
align 'L'
style 'bold'
}
 
 
Widget ETHIn {
class 'Text'
expression (netdev('eth0', 'Rx_bytes', 500))/1024
prefix 'OUT'
postfix 'KB'
width 9
precision 0
align 'R'
update tick
}
 
Widget ETHOut {
class 'Text'
expression (netdev('eth0', 'Tx_bytes', 500))/1024
prefix 'IN'
postfix 'KB'
width 9
precision 0
align 'R'
update tick
}
 
Widget ETHBar {
class 'Bar'
expression netdev('eth0', 'Rx_bytes', 500)
expression2 netdev('eth0', 'Tx_bytes', 500)
length 14
direction 'E'
style 'H'
update tick
}
 
Widget Time {
class 'Text'
expression strftime('%a,%d/%m %H:%M:%S',time())
width 20
align 'Left'
update 1000
}
 
Widget Uptime {
class 'Text'
expression uptime('%d d %H:%M:%S')
width 21
align 'R'
prefix 'Uptime '
update 1000
}
 
 
#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('sda', 'read_sectors', 500) + diskstats('sda', 'write_sectors', 500)
# prefix ''
# postfix ' '
# width 7
# 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('sda', 'read_sectors', 500)
# expression2 diskstats('sda', 'write_sectors', 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
}
 
 
 
 
# 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 IOIcon {
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 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 GPO_picolcd {
class 'GPO'
expression test::onoff(1)
update 300
}
 
Widget CpuImage {
class 'Image'
file '/etc/picoLCDGraphic/Images/cpu_a.png'
update 1000
visible 1
inverted 0
reload 0
}
 
Widget HddImage {
class 'Image'
file '/etc/picoLCDGraphic/Images/hdd_a.png'
update 1000
visible 1
inverted 0
reload 0
}
 
Widget RamImage {
class 'Image'
file '/etc/picoLCDGraphic/Images/ram_a.png'
update 1000
visible 1
inverted 0
reload 0
}
 
Widget NetImage {
class 'Image'
file '/etc/picoLCDGraphic/Images/net_a.png'
update 1000
visible 1
inverted 0
reload 0
}
 
Widget FanImage {
class 'Image'
file '/etc/picoLCDGraphic/Images/fan_a.png'
update 1000
visible 1
inverted 0
reload 0
}
 
 
Layout picoLCD {
# Layer 1 {
# X0.Y0 'BandwidthImage'
# }
# Layer 1 {
# X0.Y0 'CpuImage'
# }
Row1 {
Col1 'CPULabel'
Col6 'CPU'
Col11 'CPUBar'
Col21 'RAMLabel'
Col26 'RAMFree'
Col31 'RAMTotal'
}
Row2 {
Col1 'IDELabel'
Col6 'IDEIn'
Col17 'IDEOut'
Col28 'IDEBar'
}
Row3 {
Col1 'FSSpace'
}
Row4 {
Col1 'ETHLabel'
Col6 'ETHIn'
Col17 'ETHOut'
Col28 'ETHBar'
}
Row7 {
Col1 'Time'
Col22 'Uptime'
}
 
Row8 {
Col1 'Uptime'
Col1 'BottomTicker'
}
#Layer 2 {
# X0.Y0 'ImageTest'
#}
 
#GPO1 'GPO_picolcd'
#GPO2 'GPO_picolcd'
#GPO8 'GPO_picolcd'
}
 
Display 'picoLCD'
Layout 'picoLCD'
```