User Tools

Site Tools


lcd4linux.conf
lcd4linux.conf
#-----------------------------------------------------------------------------------------------------------------------------------
#
# This my configuration file for lcd4linux (http://ssl.bulix.org/projects/lcd4linux/)
# and a hacked cheap AX206 picture frame (https://sourceforge.net/projects/dpf-ax/, https://forum.doozan.com/list.php?9)
# on a Helios 4 Open Source NAS running Armbian/Debian (https://wiki.kobol.io/).
#
# For lcd4linux widgets see http://ssl.bulix.org/projects/lcd4linux/wiki/Layout.
#
# You can always override layouts or displays defined here with 
#    lcd4linux [-Fv] -c "Display='$DRIVER'" -c "Layout='$LAYOUT'" 
# e.g.
#    lcd4linux -Fv -c "Display='XWindow'" -c "Layout='helios4'"
#
# This file needs a small helper script, mystatus.
# 
# Limitations:
# - lcd4linux doesn't like defining to many constants, be careful, don't uncomment all colors
# - there seems to be a maximum of active 'exec's you can have (core dumps otherwise)
#
# Heinz (kramski@web.de)
# https://cyli.org/nextcloud/index.php/s/qeBFawC42pCAQg7
#-----------------------------------------------------------------------------------------------------------------------------------
 
#-----------------------------------------------------------------------------------------------------------------------------------
# Global settings
#-----------------------------------------------------------------------------------------------------------------------------------
 
Layout 'helios4' 
# Layout 'helios4_compact' 
 
Display 'DPF'
 
Variables {
 
    # These constants have an optional L_abel variant for display and an internal V_alue.
    # Filesystems
    V_FS1 '/'
    V_FS2 '/backup'
    V_FS3 '/nas'
    V_FS4 '/mufu'
 
    # Hard Drives
    V_HDD1 '/dev/sda'
    L_HDD1 'sda'
    V_HDD2 '/dev/sdb'
    L_HDD2 'sdb'
    V_HDD3 '/dev/sdc'
    L_HDD3 'sdc'
 
    # Net device
    V_LANDEV 'eth0'
 
    # timer ticks
    second 1000
    minute 60 * second
 
    # define some standard dimensions:
    linesize 53	# max line length, for status lines etc.
    width100 51	# full width after padding (border)
    width050 24 # 1/2 of full width
    width033 17	# 1/3 of full width
    width025 12	# 1/4 of full width
    width010  6	# 1/10 of full width
 
    # define some colors; see http://www.uize.com/examples/sortable-color-table.html
    # ToDo: use alpha channel
    # (lcd4linux doesn't like defining to many constants, be careful, don't uncomment all colors)
    # aliceblue	'f0f8ff'
    # antiquewhite	'faebd7'
    # aqua	'00ffff'
    # aquamarine	'7fffd4'
    # azure	'f0ffff'
    # beige	'f5f5dc'
    # bisque	'ffe4c4'
    # black	'000000'
    # blanchedalmond	'ffebcd'
    # blue	'0000ff'
    # blueviolet	'8a2be2'
    # brown	'a52a2a'
    # burlywood	'deb887'
    # cadetblue	'5f9ea0'
    # chartreuse	'7fff00'
    # chocolate	'd2691e'
    # coral	'ff7f50'
    # cornflowerblue	'6495ed'
    # cornsilk	'fff8dc'
    # crimson	'dc143c'
    # cyan	'00ffff'
    # darkblue	'00008b'
    # darkcyan	'008b8b'
    # darkgoldenrod	'b8860b'
    # darkgray	'a9a9a9'
    # darkgreen	'006400'
    # darkgrey	'a9a9a9'
    # darkkhaki	'bdb76b'
    # darkmagenta	'8b008b'
    # darkolivegreen	'556b2f'
    # darkorange	'ff8c00'
    # darkorchid	'9932cc'
    # darkred	'8b0000'
    # darksalmon	'e9967a'
    # darkseagreen	'8fbc8f'
    # darkslateblue	'483d8b'
    darkslategray	'2f4f4f'
    # darkslategrey	'2f4f4f'
    # darkturquoise	'00ced1'
    # darkviolet	'9400d3'
    # deeppink	'ff1493'
    # deepskyblue	'00bfff'
    # dimgray	'696969'
    # dimgrey	'696969'
    # dodgerblue	'1e90ff'
    # firebrick	'b22222'
    # floralwhite	'fffaf0'
    # forestgreen	'228b22'
    # fuchsia	'ff00ff'
    # gainsboro	'dcdcdc'
    ghostwhite	'f8f8ff'
    # gold	'ffd700'
    # goldenrod	'daa520'
    # gray	'808080'
    # green	'008000'
    # greenyellow	'adff2f'
    # grey	'808080'
    # honeydew	'f0fff0'
    # hotpink	'ff69b4'
    # indianred	'cd5c5c'
    # indigo	'4b0082'
    # ivory	'fffff0'
    # khaki	'f0e68c'
    # lavender	'e6e6fa'
    # lavenderblush	'fff0f5'
    # lawngreen	'7cfc00'
    # lemonchiffon	'fffacd'
    # lightblue	'add8e6'
    # lightcoral	'f08080'
    # lightcyan	'e0ffff'
    # lightgoldenrodyellow	'fafad2'
    # lightgray	'd3d3d3'
    # lightgreen	'90ee90'
    # lightgrey	'd3d3d3'
    # lightpink	'ffb6c1'
    # lightsalmon	'ffa07a'
    # lightseagreen	'20b2aa'
    lightskyblue	'87cefa'
    lightslategray	'778899'
    # lightslategrey	'778899'
    # lightsteelblue	'b0c4de'
    # lightyellow	'ffffe0'
    # lime	'00ff00'
    # limegreen	'32cd32'
    # linen	'faf0e6'
    # magenta	'ff00ff'
    # maroon	'800000'
    # mediumaquamarine	'66cdaa'
    # mediumblue	'0000cd'
    # mediumorchid	'ba55d3'
    # mediumpurple	'9370db'
    # mediumseagreen	'3cb371'
    # mediumslateblue	'7b68ee'
    # mediumspringgreen	'00fa9a'
    # mediumturquoise	'48d1cc'
    # mediumvioletred	'c71585'
    # midnightblue	'191970'
    # mintcream	'f5fffa'
    # mistyrose	'ffe4e1'
    # moccasin	'ffe4b5'
    # navajowhite	'ffdead'
    # navy	'000080'
    # oldlace	'fdf5e6'
    # olive	'808000'
    # olivedrab	'6b8e23'
    # orange	'ffa500'
    # orangered	'ff4500'
    # orchid	'da70d6'
    # palegoldenrod	'eee8aa'
    # palegreen	'98fb98'
    # paleturquoise	'afeeee'
    # palevioletred	'db7093'
    # papayawhip	'ffefd5'
    # peachpuff	'ffdab9'
    # peru	'cd853f'
    # pink	'ffc0cb'
    plum	'dda0dd'
    # powderblue	'b0e0e6'
    # purple	'800080'
    # red	'ff0000'
    # rosybrown	'bc8f8f'
    # royalblue	'4169e1'
    # saddlebrown	'8b4513'
    salmon	'fa8072'
    # sandybrown	'f4a460'
    # seagreen	'2e8b57'
    # seashell	'fff5ee'
    # sienna	'a0522d'
    silver	'c0c0c0'
    # skyblue	'87ceeb'
    # slateblue	'6a5acd'
    # slategray	'708090'
    # slategrey	'708090'
    # snow	'fffafa'
    # springgreen	'00ff7f'
    # steelblue	'4682b4'
    # tan	'd2b48c'
    # teal	'008080'
    # thistle	'd8bfd8'
    tomato	'ff6347'
    # turquoise	'40e0d0'
    # violet	'ee82ee'
    # wheat	'f5deb3'
    # white 'ffffff'
    # whitesmoke	'f5f5f5'
    # yellow	'ffff00'
    # yellowgreen	'9acd32'
 
    transparent 'ffffff00'
 
    # standard colors (standard style):
#    std_fg		ghostwhite
#    std_bg		    midnightblue
#    std_fg_bar0		'72a8f9'
#    std_fg_bar1		salmon
#    std_bg_bar		darkslategray
#    std_fg_inverse	darkslategray
#    std_bg_inverse	ghostwhite
#    std_fg_area		std_fg
#    std_bg_area		darkslategray
#    std_fg_debug	lightslategray
#    std_bg_debug	std_bg
 
    std_bg		ghostwhite
    std_fg		darkslategray
    std_fg_bar0		lightskyblue
    std_fg_bar1		plum
    std_bg_bar		silver
    std_fg_inverse	ghostwhite
    std_bg_inverse	darkslategray
    std_fg_area		std_fg
    std_bg_area		silver
    std_fg_debug	lightslategray
    std_bg_debug	std_bg
 
    # To be set later by timers:
    SyslogMsg 'Dummy'
    TopMsg 'Dummy'
}
 
Display dpf {
    driver 'DPF'
    port 'usb0'
    font '6x8'
    orientation 2
    backlight 4
    foreground std_fg
    background std_bg
    basecolor std_bg
}
 
Display XWindow {
    driver 'X11'
    size '320x240'
    font '6x8'
#    pixel '2+1'
    pixel '2+0'
    gap '0x0'
    foreground std_fg
    background std_bg
    basecolor std_bg
}
 
Display Image {
    driver 'Image'
    format 'PNG'
    size '320x240'
    font '6x8'
    pixel '2+0'
    gap '0x0'
    foreground std_fg
    background std_bg
    basecolor std_bg
}
 
#-----------------------------------------------------------------------------------------------------------------------------------
# Widgets
#-----------------------------------------------------------------------------------------------------------------------------------
 
Widget System {
    class 'Text'
    expression uname('nodename') . (netinfo::ipaddr(V_LANDEV) ? '  ' . netinfo::ipaddr(V_LANDEV)  : '')  . '  ' . uname('machine') . '  ' . uname('release') 
    width linesize
    align 'C'
    background std_bg_inverse
    foreground std_fg_inverse
}
 
Widget Time {
    class 'Text' 
    expression strftime('%a, %d.%m.%Y  %H:%M:%S', time()) . '  Up: ' . uptime('%d days %H:%M:%S')
    width linesize   
    align 'C'
    update 1 * second
    background std_bg_inverse
    foreground std_fg_inverse
}
 
Widget CPU {
    class 'Text'
    expression proc_stat::cpu('busy', 1 * second)
    prefix 'CPU'
    postfix '%'
    width width033
    precision 1
    align 'R'
    background transparent
    update 1 * second
}
 
Widget CPUTemp {
    class 'Text'
    expression exec('cat /sys/class/thermal/thermal_zone0/temp', 10 * second) / 1000
    postfix '°C'
    width 5
    precision 0
    align 'R'
    background transparent
    update 10 * second
}
 
Widget CPUBar {
    class 'Bar'
    expression proc_stat::cpu('busy', 1 * second)
    expression2 proc_stat::cpu('system', 1 * second)
    length width050 
    direction 'E'
    update 1 * second
    background std_bg_bar
    barcolor0 std_fg_bar0
    barcolor1 std_fg_bar1
}
 
Widget Load {
    class 'Text'
    expression loadavg(1)
    postfix loadavg(1) > 2.0 ? '!' : ''
    prefix 'Load'
    width width050
    precision 1
    align 'R'
    background transparent
    update 1 * second
}
 
Widget LoadBar {
    class 'Bar'
    expression loadavg(1) - 1
    expression2 loadavg(2) - 1
    max 4.0
    length width050
    direction 'E'
    update 1 * second
    background std_bg_bar
    barcolor0 std_fg_bar0
    barcolor1 std_fg_bar1
}
 
Widget Disk {
    class 'Text'
    expression (diskstats('sd[a-z]$', 'read_sectors', 1 * second) + diskstats('sd[a-z]$', 'write_sectors', 1 * second)) / 2 / 1024
    prefix 'Disk I/O'
    postfix ' MB/s'
    width width050
    precision 1
    align 'R'
    background transparent
    update 1 * second
}
 
Widget DiskBar {
    class 'Bar'
    expression  diskstats('sd[a-z]$', 'read_sectors',  1 * second) / 2 / 1024
    expression2 diskstats('sd[a-z]$', 'write_sectors', 1 * second) / 2 / 1024
    length width050
    direction 'E'
    update 1 * second
    background std_bg_bar
    barcolor0 std_fg_bar0
    barcolor1 std_fg_bar1
}
 
Widget Netdev {
    class 'Text'
    expression (netdev(V_LANDEV, 'Rx_bytes', 1 * second) + netdev(V_LANDEV, 'Tx_bytes', 1 * second)) * 8 / 1024 / 1024
    prefix V_LANDEV
    postfix ' Mbit/s'
    width width050
    precision 1
    align 'R'
    background transparent
    update 1 * second    
}
 
Widget NetdevBar {
    class 'Bar'
    expression netdev(V_LANDEV, 'Rx_bytes', 1 * second) * 8 / 1024 / 1024
    expression2 netdev(V_LANDEV, 'Tx_bytes', 1 * second) * 8 / 1024 / 1024
    length width050
    direction 'E'
    update 1 * second
    background std_bg_bar
    barcolor0 std_fg_bar0
    barcolor1 std_fg_bar1
}
 
Widget Memory {
    class 'Text'
    expression floor((meminfo('MemTotal') - meminfo('MemFree')) / 1024) . '/' . floor((meminfo('MemTotal') / 1024))
    prefix 'Memory'
    postfix ' MB'
    width width050
    align 'R'
    background transparent
    update 1 * second    
}
 
Widget MemoryBar {
    class 'Bar'
    expression  meminfo('MemTotal') - meminfo('MemFree')
    expression2 meminfo('SwapTotal') - meminfo('SwapFree')
    max meminfo('MemTotal')
    length width050
    direction 'E'
    update 1 * second
    background std_bg_bar
    barcolor0 std_fg_bar0
    barcolor1 std_fg_bar1
}
 
#   Widget DVB {
#       class 'Text'
#       expression dvb('signal_strength') * 100
#       prefix 'DVB Signal'
#       postfix '%'
#       width width050
#       precision 1
#       align 'R'
#       update 1 * second 
#   }
#
#   Widget DVBBar {
#       class 'Bar'
#       expression dvb('signal_strength')
#   #    expression2 dvb('snr')
#       expression2 dvb('ber')
#       min 0
#       max 1
#       length width050
#       direction 'E'
#       update 1 * second
#       background std_bg_bar
#       barcolor0 std_fg_bar0
#       barcolor1 std_fg_bar1
#   }
 
Widget HDDStatus1 {
    class 'Text'
    expression substr(exec('/sbin/hdparm -C ' . V_HDD1, 10 * second), 29) 
    prefix L_HDD1 . ' ' 
    postfix ' ' . hddtemp(V_HDD1) . '°C' 
    width width050
    align 'R'
    update 10 * second
}
 
Widget HDDStatus2 {
    class 'Text'
    expression substr(exec('/sbin/hdparm -C ' . V_HDD2, 10 * second), 29)
    prefix L_HDD2 .' '
    postfix ' ' . hddtemp(V_HDD2) . '°C' 
    width width050
    align 'R'
    update 10 * second
}
 
Widget HDDStatus3 {
    class 'Text'
    expression substr(exec('/sbin/hdparm -C ' . V_HDD3, 10 * second), 29)
    prefix L_HDD3. ' '
    postfix ' ' . hddtemp(V_HDD3) . '°C' 
    width width050
    align 'R'
    update 10 * second
}
 
Widget FSSpace1 {
    class 'Text' 
    expression (statfs(V_FS1, 'blocks') - statfs(V_FS1, 'bavail')) * statfs(V_FS1, 'bsize') / 1024 / 1024 / 1024
    max floor(statfs(V_FS1, 'blocks') * statfs(V_FS1, 'bsize') / 1024 / 1024 / 1024)
    prefix V_FS1 
    postfix '/' . floor(statfs(V_FS1, 'blocks') * statfs(V_FS1, 'bsize') / 1024 / 1024 / 1024) . ' GB'
    width width050
    precision 0
    align 'R' 
    background transparent
    update 10 * second  
}
 
Widget FSSpace2 {
    class 'Text' 
    expression (statfs(V_FS2, 'blocks') - statfs(V_FS2, 'bavail')) * statfs(V_FS2, 'bsize') / 1024 / 1024 / 1024
    max floor(statfs(V_FS2, 'blocks') * statfs(V_FS2, 'bsize') / 1024 / 1024 / 1024)
    prefix V_FS2 
    postfix '/' . floor(statfs(V_FS2, 'blocks') * statfs(V_FS2, 'bsize') / 1024 / 1024 / 1024) . ' GB'
    width width050
    precision 0
    align 'R' 
    background transparent
    update 10 * second  
}
 
Widget FSSpace3 {
    class 'Text' 
    expression (statfs(V_FS3, 'blocks') - statfs(V_FS3, 'bavail')) * statfs(V_FS3, 'bsize') / 1024 / 1024 / 1024
    max floor(statfs(V_FS3, 'blocks') * statfs(V_FS3, 'bsize') / 1024 / 1024 / 1024)
    prefix V_FS3 
    postfix '/' . floor(statfs(V_FS3, 'blocks') * statfs(V_FS3, 'bsize') / 1024 / 1024 / 1024) . ' GB'
    width width050
    precision 0
    align 'R' 
    background transparent
    update 10 * second  
}
 
Widget FSSpace4 {
    class 'Text' 
    expression (statfs(V_FS4, 'blocks') - statfs(V_FS4, 'bavail')) * statfs(V_FS4, 'bsize') / 1024 / 1024 / 1024
    max floor(statfs(V_FS4, 'blocks') * statfs(V_FS4, 'bsize') / 1024 / 1024 / 1024)
    prefix V_FS4 
    postfix '/' . floor(statfs(V_FS4, 'blocks') * statfs(V_FS4, 'bsize') / 1024 / 1024 / 1024) . ' GB'
    width width050
    precision 0
    align 'R' 
    background transparent
    update 10 * second  
}
 
Widget FSSpaceBar1 {
    class 'Bar'
    expression statfs(V_FS1, 'blocks') - statfs(V_FS1, 'bfree')
    expression2 statfs(V_FS1, 'blocks') - statfs(V_FS1, 'bavail')
    max statfs(V_FS1, 'blocks')
    length width050
    direction 'E'
    update 10 * second
    background std_bg_bar
    barcolor0 std_fg_bar0
    barcolor1 std_fg_bar1
}
 
Widget FSSpaceBar2 {
    class 'Bar'
    expression statfs(V_FS2, 'blocks') - statfs(V_FS2, 'bfree')
    expression1 statfs(V_FS2, 'blocks') - statfs(V_FS2, 'bavail')
    max statfs(V_FS2, 'blocks')
    length width050
    direction 'E'
    update 10 * second
    background std_bg_bar
    barcolor0 std_fg_bar0
    barcolor1 std_fg_bar1
}
 
Widget FSSpaceBar3 {
    class 'Bar'
    expression statfs(V_FS3, 'blocks') - statfs(V_FS3, 'bfree')
    expression2 statfs(V_FS3, 'blocks') - statfs(V_FS3, 'bavail')
    max statfs(V_FS3, 'blocks')
    length width050
    direction 'E'
    update 10 * second
    background std_bg_bar
    barcolor0 std_fg_bar0
    barcolor1 std_fg_bar1
}
 
Widget FSSpaceBar4 {
    class 'Bar'
    expression statfs(V_FS4, 'blocks') - statfs(V_FS4, 'bfree')
    expression2 statfs(V_FS4, 'blocks') - statfs(V_FS4, 'bavail')
    max statfs(V_FS4, 'blocks')
    length width050
    direction 'E'
    update 10 * second
    background std_bg_bar
    barcolor0 std_fg_bar0
    barcolor1 std_fg_bar1
}
 
Widget ServicesTitle {
    class 'Text'
    expression 'Services'
    width width100
    align 'C'
    background std_bg_inverse
    foreground std_fg_inverse
}
 
Widget ApacheStatus {
    class 'Text'
    expression 'Apache '
    width width050  
    postfix exec('/usr/local/bin/mystatus apache2', 10 * second)
    update 10 * second  
}
 
Widget BindDNSStatus {
    class 'Text'
    expression 'Bind DNS '
    width width050  
    postfix exec('/usr/local/bin/mystatus bind9', 10 * second)
    update 10 * second  
}
 
Widget DDClientStatus {
    class 'Text'
    expression 'DDClient '
    width width050  
    postfix exec('/usr/local/bin/mystatus ddclient', 10 * second)
    update 10 * second 
}
 
Widget DHCPStatus {
    class 'Text'
    expression 'DHCP '
    width width050  
    postfix exec('/usr/local/bin/mystatus isc-dhcp-server', 10 * second)
    update 10 * second 
}
 
Widget HddtempStatus {
    class 'Text'
    expression 'HDDTemp '
    width width050
    postfix exec('/usr/local/bin/mystatus hddtemp', 10 * second)
    update 10 * second
}
 
#Widget IWatchStatus {
#    class 'Text'
#    expression 'IWatch '
#    width width050  
#    postfix exec('/usr/local/bin/mystatus iwatch', 10 * second)
#    update 10 * second  
#}
 
#Widget LLTDStatus {
#    class 'Text'
#    expression 'LLTD Responder '
#    width width050  
#    postfix exec('/usr/local/bin/mystatus lld2d', 10 * second)
#    update 10 * second  
#}
 
#Widget LighttpdStatus {
#    class 'Text'
#    expression 'Lighttpd '
#    width width050  
#    postfix exec('/usr/local/bin/mystatus lighttpd', 10 * second)
#    update 10 * second  
#}
 
Widget MiniDLNAStatus {
    class 'Text'
    expression 'MiniDLNA '
    width width050  
    postfix exec('/usr/local/bin/mystatus minidlna', 10 * second)
    update 10 * second  
}
 
#Widget MotionStatus {
#    class 'Text'
#    expression 'Motion '
#    width width050  
#    postfix exec('/usr/local/bin/mystatus motion', 10 * second)
#    update 10 * second  
#}
 
Widget MySQLStatus {
    class 'Text'
    expression 'MySQL '
    width width050  
    postfix exec('/usr/local/bin/mystatus mysql', 10 * second)
    update 10 * second  
}
 
#Widget MythTVStatus {
#    class 'Text'
#    expression 'MythTV Backend '
#    width width050  
#    postfix exec('/usr/local/bin/mystatus mythtv-backend', 10 * second)
#    update 10 * second 
#}
 
Widget OpenVPNStatus {
    class 'Text'
    expression 'OpenVPN '
    width width050  
    postfix exec('/usr/local/bin/mystatus openvpn', 10 * second)
    update 10 * second  
}
 
Widget PostfixStatus {
    class 'Text'
    expression 'Postfix '
    width width050  
    postfix exec('/usr/local/bin/mystatus postfix', 10 * second)
    update 10 * second  
}
 
Widget ProFTPStatus {
    class 'Text'
    expression 'ProFTP '
    width width050  
    postfix exec('/usr/local/bin/mystatus proftpd', 10 * second)
    update 10 * second  
}
 
Widget SambaStatus {
    class 'Text'
    expression 'Samba '
    width width050  
    postfix exec('/usr/local/bin/mystatus smbd', 10 * second)
    update 10 * second  
}
 
Widget SSHStatus {
    class 'Text'
    expression 'SSH (' . exec('/usr/bin/who | /usr/bin/wc -l', 10 * second) . ' Users)'
    width width050  
    postfix exec('/usr/local/bin/mystatus ssh', 10 * second)
    update 10 * second  
}
 
Widget SWRAIDStatus {
    class 'Text'
    expression 'SW RAID '
    width width050  
    # postfix strstr(exec('/bin/cat /proc/mdstat', 10 * second), '[UUU]') > 0 ? 'up' : 'alarm!'
    postfix strstr(exec('/bin/cat /proc/mdstat', 10 * second), '[UU]') > 0 ? 'up' : 'alarm!'
    update 10 * second  
}
 
#Widget WebcamStatus {
#    class 'Text'
#    expression 'Webcam '
#    width width050  
#    postfix exec('/usr/local/bin/mystatus webcam', 10 * second)
#    update 10 * second  
#}
 
Widget WebminStatus {
    class 'Text'
    expression 'Webmin '
    width width050  
    postfix exec('/usr/local/bin/mystatus webmin', 10 * second)
    update 10 * second  
}
 
# the Syslog widgets may increase system load
Widget SyslogTitle {
    class 'Text'
    expression '/var/log/syslog'
    width width100
    align 'C'
    foreground std_fg_inverse
    background std_bg_inverse
}
 
Widget SetSyslogMsg {
    class 'Timer'
    expression SyslogMsg = exec('tail -n 1 /var/log/syslog', 4 * second)
    active 1
    update 10 * second  
}
 
Widget Syslog1 {
    class 'Text'
    expression substr(SyslogMsg, 0 * width100, width100)
    width width100
    align 'L'
    foreground std_fg_area
    background std_bg_area
    update 10 * second  
}
 
Widget Syslog2 {
    class 'Text'
    expression substr(SyslogMsg, 1 * width100, width100)
    width width100
    align 'L'
    foreground std_fg_area
    background std_bg_area
    update 10 * second  
}
 
Widget Syslog3 {
    class 'Text'
    expression substr(SyslogMsg, 2 * width100, width100)
    width width100
    align 'L'
    foreground std_fg_area
    background std_bg_area
    update 10 * second  
}
 
Widget Syslog4 {
    class 'Text'
    expression substr(SyslogMsg, 3 * width100, width100)
    width width100
    align 'L'
    foreground std_fg_area
    background std_bg_area
    update 10 * second  
}
 
#   Widget TopTitle {
#       class 'Text'
#       expression 'USER       PID %CPU    VSZ     TIME COMMAND'
#       width width100
#       align 'L'
#       background std_bg_inverse
#       foreground std_fg_inverse
#   }
 
Widget SetTopMsg {
    class 'Timer'
    # ps output must be exactly with100 (51) characters wide, including \n
    # (the last field 's' ensures there are no shorter lines).
    # /bin/ps -e -o "user:8,pid:5,pcpu:4,vsize:6,cputime:8,comm:12,s:1" --cols 51 --sort -pcpu
    # mysql     1218  1.5 151696 00:03:26 mysqld       S
    expression TopMsg = exec('/bin/ps -e -o "user:8,pid:5,pcpu:4,vsize:6,cputime:8,comm:' . (width100 - 39) . ',s:1" --cols ' . width100 . ' --sort -pcpu | /usr/bin/tail -n"+2"  | /usr/bin/head -5', 4 * second)
    active 1
    update 4 * second  
}
 
Widget Top1 {
    class 'Text'
    expression substr(TopMsg, 0 * width100, width100)
    width width100
    align 'L'
    foreground std_fg_area
    background std_bg_area
    update 4 * second  
}
 
Widget Top2 {
    class 'Text'
    expression substr(TopMsg, 1 * width100, width100)
    width width100
    align 'L'
    foreground std_fg_area
    background std_bg_area
    update 4 * second  
}
 
Widget Top3 {
    class 'Text'
    expression substr(TopMsg, 2 * width100, width100)
    width width100
    align 'L'
    foreground std_fg_area
    background std_bg_area
    update 4 * second  
}
 
Widget Top4 {
    class 'Text'
    expression substr(TopMsg, 3 * width100, width100)
    width width100
    align 'L'
    foreground std_fg_area
    background std_bg_area
    update 4 * second  
}
 
Widget Top5 {
    class 'Text'
    expression substr(TopMsg, 4 * width100, width100)
    width width100
    align 'L'
    foreground std_fg_area
    background std_bg_area
    update 4 * second  
}
 
Widget Debug {
    class 'Text'
    # expression cfg('Layout')
    expression '$Revision: 1.19 $ -- DPF Driver by hackfin/superelchi'
    width linesize   
    align 'C'
    foreground std_fg_debug
    background std_bg_debug
}
 
Widget na {
    class 'Text'
    expression 'n/a'
    width 3   
    align 'L'
}
 
Widget Bgnd {
    class 'Image'
    file '/usr/local/share/pictures/background/helios4-logo-320x240.png'
    reload 0
    inverted 0
    visible 1
}
 
#   Widget SetWebcamImg {
#       class 'Timer'
#       expression exec('/usr/bin/curl http://localhost:8083?action=snapshot 2> /dev/null | /usr/bin/convert jpg:- /tmp/webcam.png; echo ', 5 * second)
#       active 1
#       update 5 * second  
#   }
#
#   widget Webcam {
#       class 'Image'
#       file '/tmp/webcam.png'
#       reload 1
#       update 5 * second
#       inverted 0
#       visible 1
#   }
 
#-----------------------------------------------------------------------------------------------------------------------------------
# Layouts
#-----------------------------------------------------------------------------------------------------------------------------------
 
Layout helios4 {
    layer 1 {
        Row01.Col01 'System'
        Row02.Col01 'Time'
 
        Row04.Col02 'CPU'
        Row04.Col21 'CPUTemp'
        Row05.Col02 'CPUBar'
 
        Row07.Col02 'Load'
        Row08.Col02 'LoadBar'
 
        Row10.Col02 'Memory'
        Row11.Col02 'MemoryBar'
 
        Row13.Col02 'Netdev'
        Row14.Col02 'NetdevBar'
 
        Row04.Col29 'Disk'
        Row05.Col29 'DiskBar'
 
        Row07.Col29 'HDDStatus1'
        Row08.Col29 'HDDStatus2'
        Row09.Col29 'HDDStatus3'
 
        Row11.Col29 'FSSpace1'
        Row12.Col29 'FSSpace2'
        Row13.Col29 'FSSpace3'
        Row14.Col29 'FSSpace4'
 
        Row18.Col02 'ServicesTitle' # some are not set up yet
        Row19.Col02 'ApacheStatus'
        Row20.Col02 'DDClientStatus'
        Row21.Col02 'MySQLStatus'
        Row22.Col02 'HddtempStatus'
        Row23.Col02 'PostfixStatus'
        Row19.Col29 'MiniDLNAStatus'
        Row20.Col29 'SambaStatus' 
        Row21.Col29 'SSHStatus'  
        Row22.Col29 'SWRAIDStatus'
#        Row23.Col29 'WebminStatus'
 
        Row25.Col02 'SyslogTitle'
        Row26.Col02 'Syslog1'
        Row27.Col02 'Syslog2'
        Row28.Col02 'Syslog3'
        Row29.Col02 'Syslog4'
 
#        Row25.Col02 'TopTitle'
#        Row26.Col02 'Top1'
#        Row27.Col02 'Top2'
#        Row28.Col02 'Top3'
#        Row29.Col02 'Top4'
 
        Row30.Col01 'Debug'
    }
#    Layer 2 {
#        X1.Y1 'Bgnd'
#    }
 
    Timer1 'SetSyslogMsg'
#    Timer1 'SetTopMsg'
}
 
Layout helios4_compact {
    layer 1 {
        Row01.Col01 'System'
        Row02.Col01 'Time'
 
        Row04.Col02 'CPU'
        Row04.Col21 'CPUTemp'
 
        Row06.Col02 'Load'
 
        Row08.Col02 'Memory'
 
        Row10.Col02 'Netdev'
 
        Row12.Col02 'Disk'
 
        Row04.Col29 'FSSpace1'
        Row05.Col29 'FSSpace2'
        Row06.Col29 'FSSpace3'
        Row07.Col29 'FSSpace4'
 
        Row09.Col29 'HDDStatus1'
        Row10.Col29 'HDDStatus2'
        Row11.Col29 'HDDStatus3'
 
        Row14.Col02 'ApacheStatus'
        Row15.Col02 'DDClientStatus'
        Row16.Col02 'MySQLStatus'
        Row17.Col02 'HddtempStatus'
        Row18.Col02 'PostfixStatus'
        Row14.Col29 'MiniDLNAStatus'
        Row15.Col29 'SambaStatus' 
        Row16.Col29 'SSHStatus'  
        Row17.Col29 'SWRAIDStatus'
#        Row18.Col29 'WebminStatus'
 
        Row20.Col02 'Top1'
        Row21.Col02 'Top2'
        Row22.Col02 'Top3'
        Row23.Col02 'Top4'
        Row24.Col02 'Top5'
 
        Row26.Col02 'Syslog1'
        Row27.Col02 'Syslog2'
        Row28.Col02 'Syslog3'
        Row29.Col02 'Syslog4'
 
        Row30.Col01 'Debug'
    }
 
    Layer 2 {
#        X1.Y1 'Bgnd'
        Row04.Col02 'CPUBar'
        Row06.Col02 'LoadBar'
        Row08.Col02 'MemoryBar'
        Row10.Col02 'NetdevBar'
        Row12.Col02 'DiskBar'
 
        Row04.Col29 'FSSpaceBar1'
        Row05.Col29 'FSSpaceBar2'
        Row06.Col29 'FSSpaceBar3'
        Row07.Col29 'FSSpaceBar4'
    }
 
    Timer1 'SetSyslogMsg'
    Timer2 'SetTopMsg'
}
lcd4linux.conf.txt · Last modified: by steve