#-----------------------------------------------------------------------------------------------------------------------------------
#
# 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'
}