summaryrefslogtreecommitdiffstats
path: root/minikrebs
diff options
context:
space:
mode:
Diffstat (limited to 'minikrebs')
-rw-r--r--minikrebs/lazorcam/doc/lazorcam_druck.svg231
-rw-r--r--minikrebs/oncology/Makefile23
-rw-r--r--minikrebs/oncology/config/full.conf572
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 &quot;Blinkend&quot; in den</tspan><tspan
+ sodipodi:role="line"
+ x="58.57143"
+ y="786.48553"
+ id="tspan3017"
+ style="font-size:20px"> Zustand &quot;durchgängig Leuchtend&quot; 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 -&gt; Open Network Stream -&gt;</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'
+ }
+}