diff options
Diffstat (limited to 'minikrebs')
| -rw-r--r-- | minikrebs/lazorcam/doc/lazorcam_druck.svg | 231 | ||||
| -rw-r--r-- | minikrebs/oncology/Makefile | 23 | ||||
| -rw-r--r-- | minikrebs/oncology/config/full.conf | 572 | 
3 files changed, 826 insertions, 0 deletions
| diff --git a/minikrebs/lazorcam/doc/lazorcam_druck.svg b/minikrebs/lazorcam/doc/lazorcam_druck.svg new file mode 100644 index 00000000..4f376059 --- /dev/null +++ b/minikrebs/lazorcam/doc/lazorcam_druck.svg @@ -0,0 +1,231 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg +   xmlns:dc="http://purl.org/dc/elements/1.1/" +   xmlns:cc="http://creativecommons.org/ns#" +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" +   xmlns:svg="http://www.w3.org/2000/svg" +   xmlns="http://www.w3.org/2000/svg" +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" +   width="744.09448" +   height="524.40942" +   id="svg2" +   version="1.1" +   inkscape:version="0.48.3.1 r9886" +   sodipodi:docname="lazorcam_druck.svg"> +  <defs +     id="defs4"> +    <filter +       id="filter3162" +       inkscape:menu-tooltip="Draws a black outline around" +       inkscape:menu="ABCs" +       inkscape:label="Black outline" +       color-interpolation-filters="sRGB"> +      <feGaussianBlur +         id="feGaussianBlur3164" +         stdDeviation="2" +         in="SourceAlpha" +         result="result0" /> +      <feComposite +         id="feComposite3166" +         in2="result0" +         result="result3" +         operator="arithmetic" +         in="SourceGraphic" +         k2="1" +         k3="10" /> +      <feComposite +         id="feComposite3168" +         in2="result3" +         k2="1" +         operator="in" +         in="result3" +         result="result4" /> +    </filter> +  </defs> +  <sodipodi:namedview +     id="base" +     pagecolor="#ffffff" +     bordercolor="#666666" +     borderopacity="1.0" +     inkscape:pageopacity="0.0" +     inkscape:pageshadow="2" +     inkscape:zoom="0.7" +     inkscape:cx="540.90757" +     inkscape:cy="337.03064" +     inkscape:document-units="px" +     inkscape:current-layer="layer2" +     showgrid="false" +     showguides="true" +     inkscape:guide-bbox="true" +     inkscape:window-width="1364" +     inkscape:window-height="747" +     inkscape:window-x="0" +     inkscape:window-y="19" +     inkscape:window-maximized="0"> +    <sodipodi:guide +       orientation="1,0" +       position="58.571429,342.14286" +       id="guide3033" /> +    <sodipodi:guide +       orientation="1,0" +       position="169.70563,528.30978" +       id="guide3069" /> +  </sodipodi:namedview> +  <metadata +     id="metadata7"> +    <rdf:RDF> +      <cc:Work +         rdf:about=""> +        <dc:format>image/svg+xml</dc:format> +        <dc:type +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> +      </cc:Work> +    </rdf:RDF> +  </metadata> +  <g +     inkscape:groupmode="layer" +     id="layer2" +     inkscape:label="Layer"> +    <rect +       style="fill:#f9f9f9;fill-opacity:1;filter:url(#filter3162)" +       id="rect3116" +       width="747.14288" +       height="525.71429" +       x="0.71427059" +       y="0.12369233" /> +  </g> +  <g +     inkscape:label="Layer 1" +     inkscape:groupmode="layer" +     id="layer1" +     transform="translate(0,-527.95273)"> +    <text +       xml:space="preserve" +       style="font-size:73.84999847px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" +       x="372.04724" +       y="618.20862" +       id="text2985" +       sodipodi:linespacing="125%"><tspan +         sodipodi:role="line" +         id="tspan2987" +         x="372.04724" +         y="618.20862">LAZORCAM</tspan></text> +    <text +       xml:space="preserve" +       style="font-size:25px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" +       x="58.57143" +       y="710.2193" +       id="text3001" +       sodipodi:linespacing="125%"><tspan +         sodipodi:role="line" +         id="tspan3003" +         x="58.57143" +         y="710.2193">Boot: </tspan><tspan +         sodipodi:role="line" +         x="58.57143" +         y="736.48553" +         id="tspan3011" +         style="font-size:20px">- Lazorcam hat Stom wenn die blaue LED leuchtet</tspan><tspan +         sodipodi:role="line" +         x="58.57143" +         y="761.48553" +         id="tspan3009" +         style="font-size:20px">- Wenn die LED vom Zustand "Blinkend" in den</tspan><tspan +         sodipodi:role="line" +         x="58.57143" +         y="786.48553" +         id="tspan3017" +         style="font-size:20px">  Zustand "durchgängig Leuchtend" gewechselt ist,</tspan><tspan +         sodipodi:role="line" +         x="58.57143" +         y="811.48553" +         id="tspan3019" +         style="font-size:20px">  ist der Bootvorgang abgeschlossen        </tspan></text> +    <text +       xml:space="preserve" +       style="font-size:25px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" +       x="372.37073" +       y="649.85162" +       id="text3005" +       sodipodi:linespacing="125%"><tspan +         sodipodi:role="line" +         id="tspan3007" +         x="372.37073" +         y="649.85162">Schaue dem Lazor beim Arbeiten zu</tspan></text> +    <text +       xml:space="preserve" +       style="font-size:25px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" +       x="76.428574" +       y="352.98083" +       id="text3021" +       sodipodi:linespacing="125%" +       transform="translate(0,527.95273)"><tspan +         sodipodi:role="line" +         id="tspan3023"></tspan></text> +    <text +       xml:space="preserve" +       style="font-size:25px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" +       x="58.57143" +       y="889.7276" +       id="text3035" +       sodipodi:linespacing="125%"><tspan +         sodipodi:role="line" +         x="58.57143" +         y="889.7276" +         id="tspan3065">Erreichbarkeit:</tspan><tspan +         sodipodi:role="line" +         x="58.57143" +         y="915.99384" +         id="tspan3049" +         style="font-size:20px">   HTTP: </tspan><tspan +         sodipodi:role="line" +         x="58.57143" +         y="940.99384" +         id="tspan3051" +         style="font-size:20px" /><tspan +         sodipodi:role="line" +         x="58.57143" +         y="965.99384" +         id="tspan3039" +         style="font-size:20px">   VLC: File -> Open Network Stream -></tspan></text> +    <text +       xml:space="preserve" +       style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" +       x="169.70563" +       y="915.99158" +       id="text3071" +       sodipodi:linespacing="125%"><tspan +         sodipodi:role="line" +         id="tspan3073" +         x="169.70563" +         y="915.99158">http://lazorcam.shack/</tspan></text> +    <flowRoot +       xml:space="preserve" +       id="flowRoot3075" +       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:25px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion +         id="flowRegion3077"><rect +           id="rect3079" +           width="91.923882" +           height="160.61426" +           x="11.111678" +           y="21.353456" /></flowRegion><flowPara +         id="flowPara3081"></flowPara></flowRoot>    <text +       xml:space="preserve" +       style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" +       x="169.70563" +       y="989.73273" +       id="text3087" +       sodipodi:linespacing="125%"><tspan +         sodipodi:role="line" +         id="tspan3089" +         x="169.70563" +         y="989.73273">http://lazorcam.shack/?action=stream</tspan><tspan +         sodipodi:role="line" +         x="169.70563" +         y="1014.7327" +         id="tspan3091" /></text> +  </g> +</svg> diff --git a/minikrebs/oncology/Makefile b/minikrebs/oncology/Makefile new file mode 100644 index 00000000..05d5c422 --- /dev/null +++ b/minikrebs/oncology/Makefile @@ -0,0 +1,23 @@ +build-deps: +	#punani -Ei libtool automake autoconf zlib1g-dev libssl-dev python-dev libc6 libusb-dev libibus-dev subversion libgd2-noxpm-dev libgd2-noxpm lcd4linux + +/usr/bin/lcd4linux: build-deps +	#punani -Ei lcd4linux +	sed -i 's/usr\/sbin\/lcd4linux/usr\/bin\/lcd4linux/g' /etc/init.d/lcd4linux  +	dpfhack_display/build-dpf-lcd4linux.sh +	make -C dpfhack_display/lcd4linux/ install + +lcd4linux_autostart: +	# service lcd4linux start +	# update-rc.d lcd4linux + +install:  /usr/bin/lcd4linux /etc/lcd4linux.conf lcd4linux_autostart +	# TODO this is debian only + +update: /etc/lcd4linux.conf +	service lcd4linux force-reload + +/etc/lcd4linux.conf: lcd4linux.conf +	chown krebs:krebs lcd4linux.conf +	chmod 600 lcd4linux.conf +	cp -a lcd4linux.conf /etc/lcd4linux.conf diff --git a/minikrebs/oncology/config/full.conf b/minikrebs/oncology/config/full.conf new file mode 100644 index 00000000..be16629d --- /dev/null +++ b/minikrebs/oncology/config/full.conf @@ -0,0 +1,572 @@ +Layout 'Krebs'
 +Display 'DPF'
 +
 +Variables {
 +    # Ticks:
 +    second 1000
 +    minute 60 * second
 +    
 +    # 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  5	# 1/10 of full width
 +
 +    # Colors:
 +    # ToDo: Alphakanal ausnutzen
 +    black     '000000'
 +    white     'ffffff'
 +    red       'ff0000'
 +    darkblue  '000066'
 +    lightgray 'b2b2b2'
 +    darkgray  '191919'
 +    barcolor0 '5f5fff'
 +    barcolor1 'ff5f5c'
 +
 +    # To be set later by timers:
 +    FileMsg 'Dummy'
 +}
 +
 +Display dpf {
 +   Driver 'DPF'
 +   Port 'usb0'
 +   Font '6x8'
 +   Foreground white
 +   Background darkblue
 +   Basecolor darkblue
 +}
 +
 +Widget System {
 +    class 'Text'
 +    expression '*** ' . uname('nodename') . ' '. netinfo::ipaddr('eth0') . ' ***'
 +    width linesize
 +    align 'C'
 +    update 0
 +    Background lightgray
 +    Foreground darkgray
 +}
 +
 +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 lightgray
 +    Foreground darkgray
 +}
 +
 +Widget Busy {
 +    class 'Text'
 +    expression proc_stat::cpu('busy', 0.5 * second)
 +    prefix 'Busy'
 +    postfix '%'
 +    width width050
 +    precision 1
 +    align 'R'
 +    update 0.5 * second
 +}
 +
 +Widget BusyBar {
 +    class 'Bar'
 +    expression proc_stat::cpu('busy', 0.5 * second)
 +    expression2 proc_stat::cpu('system', 0.5 * second)
 +    length width050 
 +    direction 'E'
 +    update 0.5 * second
 +    Background darkgray
 +    BarColor0 barcolor0 
 +    BarColor1 barcolor1 
 +}
 +
 +Widget Load {
 +    class 'Text'
 +    expression loadavg(1)
 +    prefix 'Load'
 +    postfix loadavg(1) > 1.0 ? '!' : ' '
 +    width width050
 +    precision 1
 +    align 'R'
 +    update 0.5 * second
 +#    Foreground loadavg(1) > 1.0 ? red : white
 +}
 +
 +Widget LoadBar {
 +    class 'Bar'
 +    expression loadavg(1)
 +    max 4.0
 +    length width050
 +    direction 'E'
 +    update 0.5 * second
 +    Background darkgray
 +    BarColor0 barcolor0 
 +    BarColor1 barcolor1 
 +}
 +
 +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', 0.5 * second)+proc_stat::disk('.*', 'wblk', 0.5 * second))/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('sd[a-z]$', 'read_sectors', 0.5 * second) + diskstats('sd[a-z]$', 'write_sectors', 0.5 * second)) / 2 / 1024
 +    prefix 'Disk'
 +    postfix ' MB/s'
 +    width width050
 +    precision 1
 +    align 'R'
 +    update 0.5 * second
 +}
 +
 +Widget DiskBar {
 +    class 'Bar'
 +    #expression  proc_stat::disk('.*', 'rblk', 0.5 * second)
 +    #expression2 proc_stat::disk('.*', 'wblk', 0.5 * second)
 +    # for kernel 2.6:
 +    expression  diskstats('sd[a-z]$', 'read_sectors',  0.5 * second) / 2 / 1024
 +    expression2 diskstats('sd[a-z]$', 'write_sectors', 0.5 * second) / 2 / 1024
 +    length width050
 +    direction 'E'
 +    update 0.5 * second
 +    Background darkgray
 +    BarColor0 barcolor0 
 +    BarColor1 barcolor1 
 +}
 +
 +Widget Eth0 {
 +    class 'Text'
 +    expression (netdev('eth0', 'Rx_bytes', 0.5 * second) + netdev('eth0', 'Tx_bytes', 0.5 * second)) / 1024
 +    prefix 'eth0'
 +    postfix ' KB/s'
 +    width width050
 +    precision 1
 +    align 'R'
 +    update 0.5 * second
 +}
 +
 +Widget Eth0Bar {
 +    class 'Bar'
 +    expression netdev('eth0', 'Rx_bytes', 0.5 * second) / 1024
 +    expression2 netdev('eth0', 'Tx_bytes', 0.5 * second) / 1024
 +    length width050
 +    direction 'E'
 +    update 0.5 * second
 +    Background darkgray
 +    BarColor0 barcolor0 
 +    BarColor1 barcolor1 
 +}
 +
 +Widget Eth0Traffic {
 +    class 'Text'
 +    expression (netdev('eth0', 'Rx_bytes', 0)+netdev('eth0', 'Tx_bytes', 0))/1024/1024/1024
 +    prefix 'Traffic:'
 +    postfix ' GB'
 +    width 21
 +    precision 3
 +    align 'R'
 +    update 10 * second
 +}
 +
 +Widget MemoryTitle {
 +    class 'Text'
 +    expression 'Memory/Swap'
 +    width width050
 +    align 'L'
 +    update 0
 +}
 +
 +Widget MemoryTotal {
 +    class 'Text'
 +    expression meminfo('MemTotal') / 1024
 +    prefix 'Memory Total '
 +    postfix ' MB'
 +    width width050
 +    precision 0
 +    align 'R'
 +    update 0
 +}
 +
 +Widget MemoryFree {
 +    class 'Text'
 +    expression (meminfo('MemFree') + meminfo('Cached')) / 1024
 +    prefix 'Memory Free '
 +    postfix ' MB'
 +    width width050
 +    precision 0
 +    align 'R'
 +    update 1 * second
 +}
 +
 +Widget MemorySwappedTotal {
 +    class 'Text'
 +    expression (meminfo('SwapTotal')) / 1024
 +    prefix 'Swap Total '
 +    postfix ' MB'
 +    width width050
 +    precision 0
 +    align 'R'
 +    update 1 * second
 +}
 +
 +Widget MemorySwappedFree {
 +    class 'Text'
 +    expression (meminfo('SwapTotal') - meminfo('SwapUsed')) / 1024
 +    prefix 'Swap Free''
 +    postfix ' MB'
 +    width width050
 +    precision 0
 +    align 'R'
 +    update 1 * second
 +}
 +
 +Widget MemorySwappedUsed {
 +    class 'Text'
 +    expression (meminfo('SwapTotal') - meminfo('SwapFree')) / 1024
 +    prefix 'Swap Used '
 +    postfix ' MB'
 +    width width050
 +    precision 0
 +    align 'R'
 +    update 1 * second
 +}
 +
 +Widget LoggedInTitle {
 +    class 'Text'
 +    expression 'Hosts in Krebs Darknet'
 +    width width050
 +    align 'L'
 +    update 0
 +}
 +
 +Widget LoggedIn {
 +    class 'Text' 
 +    expression exec('/krebs/oncology/bin/krebshostup')
 +    width width050
 +    align 'L' 
 +    update 300 * second 
 +}
 +
 +Widget FSSpaceTitle {
 +    class 'Text'
 +    expression 'Disk Space available'
 +    width width050
 +    align 'L'
 +    update 0
 +}
 +
 +Widget FSSpace1 {
 +    class 'Text' 
 +    expression statfs('/', 'bavail') * statfs('/', 'bsize') / 1024 / 1024 / 1024
 +    prefix '/ (Root FS)' 
 +    postfix ' GB'
 +    width width050
 +    precision 2
 +    align 'R' 
 +    update 10 * second  
 +}
 +
 +Widget HDDTempTitle {
 +    class 'Text'
 +    expression 'Disk Temperature°C'
 +    width width050
 +    align 'L'
 +    update 0
 +}
 +
 +Widget HDDTemp1 { 
 +    class 'Text' 
 +    expression hddtemp('/dev/sda') 
 +    width width010
 +    precision 1 
 +    align 'R' 
 +    update 10 * second 
 +}
 +
 +Widget HDDTemp2 { 
 +    class 'Text' 
 +    expression hddtemp('/dev/sdb') 
 +    width width010
 +    precision 1
 +    align 'R' 
 +    update 10 * second 
 +}
 +
 +Widget HDDTemp3 { 
 +    class 'Text' 
 +    expression hddtemp('/dev/sdc') 
 +    width width010
 +    precision 1
 +    align 'R' 
 +    update 10 * second 
 +}
 +
 +Widget ServicesTitle {
 +    class 'Text'
 +    expression 'Services'
 +    width width100
 +    align 'C'
 +    Background lightgray
 +    Foreground darkgray
 +}
 +
 +Widget ApacheStatus {
 +    class 'Text'
 +    expression 'Apache '
 +    width width050  
 +    postfix strstr(exec('/etc/init.d/apache2 status', 10 * second), 'running') > 0 ? 'up' : 'down!'
 +    update 10 * second  
 +}
 +
 +Widget BindDNSStatus {
 +    class 'Text'
 +    expression 'Bind DNS '
 +    width width050  
 +    postfix strstr(exec('/etc/init.d/bind9 status', 10 * second), 'running') > 0 ? 'up' : 'down!'
 +    update 10 * second  
 +}
 +
 +Widget MuninStatus {
 +    class 'Text'
 +    expression 'Monitoring '
 +    width width050  
 +    postfix strstr(exec('/etc/init.d/munin-node status', 10 * second), 'running') > 0 ? 'up' : 'down!'
 +    update 10 * second  
 +}
 +
 +Widget MiniDLNAStatus {
 +    class 'Text'
 +    expression 'MiniDLNA '
 +    width width050  
 +    postfix strstr(exec('/etc/init.d/minidlna status', 10 * second), 'running') > 0 ? 'up' : 'down!'
 +    update 10 * second  
 +}
 +
 +Widget MySQLStatus {
 +    class 'Text'
 +    expression 'MySQL '
 +    width width050  
 +    postfix strstr(exec('/sbin/status mysql', 10 * second), 'running') > 0 ? 'up' : 'down!'
 +    update 10 * second  
 +}
 +
 +Widget MythTVStatus {
 +    class 'Text'
 +    expression 'MythTV Backend '
 +    width width050  
 +    postfix strstr(exec('/sbin/status mythtv-backend', 10 * second), 'running') > 0 ? 'up' : 'down!'
 +    update 10 * second 
 +}
 +
 +Widget PostfixStatus {
 +    class 'Text'
 +    expression 'Postfix '
 +    width width050  
 +    postfix strstr(exec('/etc/init.d/postfix status', 10 * second), 'not running') > 0 ? 'down!' : 'up'
 +    update 10 * second  
 +}
 +
 +Widget ProFTPStatus {
 +    class 'Text'
 +    expression 'ProFTP '
 +    width width050  
 +    postfix strstr(exec('/etc/init.d/proftpd status', 10 * second), 'not running') > 0 ? 'down!' : 'up'
 +    update 10 * second  
 +}
 +
 +Widget SambaStatus {
 +    class 'Text'
 +    expression 'Samba '
 +    width width050  
 +    postfix strstr(exec('/sbin/status smbd', 10 * second), 'running') > 0 ? 'up' : 'down!'
 +    update 10 * second  
 +}
 +
 +Widget SambaStatusDS {
 +    class 'Text'
 +    expression 'Samba '
 +    width width050  
 +    postfix strstr(exec('/etc/init.d/samba status', 10 * second), 'running') > 0 ? 'up' : 'down!'
 +    update 10 * second  
 +}
 +
 +Widget SSHStatus {
 +    class 'Text'
 +    expression 'SSH '
 +    width width050  
 +    postfix strstr(exec('/sbin/status ssh', 10 * second), 'running') > 0 ? 'up' : 'down!'
 +    update 10 * second  
 +}
 +
 +Widget SSHStatusDS {
 +    class 'Text'
 +    expression 'SSH '
 +    width width050  
 +    postfix strstr(exec('/etc/init.d/ssh status', 10 * second), 'running') > 0 ? 'up' : 'down!'
 +    update 10 * second  
 +}
 +
 +Widget SWRAIDStatus {
 +    class 'Text'
 +    expression 'SW RAID '
 +    width width050  
 +    postfix strstr(exec('cat /proc/mdstat', 10 * second), '[UUU]') > 0 ? 'up' : 'attention!'
 +    update 10 * second  
 +}
 +
 +Widget TwonkyStatus {
 +    class 'Text'
 +    expression 'Twonkymedia '
 +    width width050  
 +    postfix strstr(exec('/sbin/status twonkymedia', 10 * second), 'running') > 0 ? 'up' : 'down!'
 +    update 10 * second  
 +}
 +
 +Widget FileTitle {
 +    class 'Text'
 +    expression 'Syslog'
 +    width width100
 +    align 'C'
 +    Background lightgray
 +    Foreground darkgray
 +}
 +
 +Widget SetFileMsg {
 +    class 'Timer'
 +    expression FileMsg = exec('tail -n 1 /var/log/syslog', 2 * second)
 +    active 1
 +    update 2 * second  
 +}
 +
 +Widget File1 {
 +    class 'Text'
 +    expression substr(FileMsg, 0 * width100, width100)
 +    width width100
 +    align 'L'
 +    Background darkgray
 +    update 2 * second  
 +}
 +
 +Widget File2 {
 +    class 'Text'
 +    expression substr(FileMsg, 1 * width100, width100)
 +    width width100
 +    align 'L'
 +    Background darkgray
 +    update 2 * second  
 +}
 +
 +Widget File3 {
 +    class 'Text'
 +    expression substr(FileMsg, 2 * width100, width100)
 +    width width100
 +    align 'L'
 +    Background darkgray
 +    update 2 * second  
 +}
 +
 +Widget Weather1 {
 +    class 'Text'
 +    expression exec('/krebs/kachelmann/wetter', 10 * second)
 +    prefix 'Wetter:'
 +    width width100
 +    align 'L'
 +    Background darkgray
 +    update 10 * second  
 +}
 +Widget Bitcoin {
 +    class 'Text'
 +    expression exec('/krebs/btc/mtgox/ticker_text.sh', 10 * second)
 +    prefix 'BTC:   '
 +    width width100
 +    align 'L'
 +    Background darkgray
 +    update 30 * second  
 +}
 +
 +Widget Stream {
 +    class 'Text'
 +    expression exec('/krebs/streams/streams status', 10 * second)
 +    #prefix 'Stream:'
 +    width width100
 +    align 'L'
 +    Background darkgray
 +    update 10 * second  
 +}
 +
 +Widget Debug {
 +    class 'Text'
 +    expression 'Serverdisplay - Krebs'
 +    width linesize   
 +    align 'C'
 +    Foreground lightgray
 +}
 +
 +Widget na {
 +    class 'Text'
 +    expression 'n/a'
 +    width 3   
 +    align 'L'
 +}
 +
 +Widget Bgnd {
 +    class 'Image'
 +    file '/krebs/cholerab/bling/krebs-v2_320x240.png'
 +    reload 0
 +    update 0
 +    inverted 0
 +    visible 1
 +}
 +
 +Layout Krebs {
 +    Row01.Col01 'System'
 +    Row02.Col01 'Time'
 +    Row04.Col02 'Busy'
 +    Row05.Col02 'BusyBar'
 +    Row07.Col02 'Load'
 +    Row08.Col02 'LoadBar'
 +    Row10.Col02 'Disk'
 +    Row11.Col02 'DiskBar'
 +    Row13.Col02 'Eth0'
 +    Row14.Col02 'Eth0Bar'
 +    Row15.Col02 'Eth0Traffic'
 +
 +    Row04.Col28 'MemoryTitle'
 +    Row05.Col29 'MemoryTotal'
 +    Row06.Col29 'MemoryFree'
 +    Row07.Col29 'MemorySwappedTotal'
 +    Row08.Col29 'MemorySwappedUsed'
 +    Row10.Col28 'LoggedInTitle'
 +    Row11.Col29 'LoggedIn'
 +    Row13.Col28 'FSSpaceTitle'
 +    Row14.Col29 'FSSpace1'
 +
 +    Row17.Col02 'ServicesTitle'
 +    #Row18.Col02 'BindDNSStatus'
 +    #Row19.Col02 'MuninStatus'
 +    Row18.Col02 'ApacheStatus'
 +    #Row21.Col02 'MiniDLNAStatus'
 +    #Row18.Col29 'PostfixStatus'
 +    #Row19.Col29 'ProFTPStatus'
 +    #Row20.Col29 'SambaStatusDS'
 +    Row18.Col29 'SSHStatusDS'
 +
 +    Row19.Col02 'Weather1'
 +    Row21.Col02 'Bitcoin'
 +    Row23.Col02 'Stream'
 +
 +    Row25.Col02 'FileTitle'
 +    Row26.Col02 'File1'
 +    Row27.Col02 'File2'
 +    Row28.Col02 'File3'
 +
 +    Row30.Col01 'Debug'
 +
 +    Timer1 'SetFileMsg'
 +
 +    Layer 2 {
 +        X1.Y1 'Bgnd'
 +    }
 +}
 | 
