Display picoLCD {
    Driver   'picoLCDGraphic'
    Size     '256x64'
    Contrast  230
    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('/media/disk', 'bavail')*statfs('/media/disk', 'bsize'))/1024/1024);c='/ '.' '.a.'MB  /media/disk/ '.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'
