#!../blt_wish -f if [file exists ../library] { set blt_library ../library } blt_bitmap define blt.0 {{40 40} { 00 00 00 00 00 00 fc 07 00 00 00 04 08 00 00 00 04 04 00 00 00 e4 03 00 00 00 64 fe 07 00 00 64 02 04 00 00 e4 03 04 00 00 64 7e 02 00 00 64 1a 02 00 00 e4 1b 01 00 00 04 1a 01 00 00 04 1a 01 00 00 fc 1b 02 00 00 0c 1a 02 00 00 0c 02 04 00 00 0c 02 f4 03 80 ed fe 07 04 e0 0c 00 20 09 10 0c 00 00 12 10 0c 00 00 10 30 00 00 00 19 d0 03 00 00 14 b0 fe ff ff 1b 50 55 55 55 0d e8 aa aa aa 16 e4 ff ff ff 2f f4 ff ff ff 27 d8 ae aa bd 2d 6c 5f d5 67 1b bc f3 7f d0 36 f8 01 10 cc 1f e0 45 8e 92 0f b0 32 41 43 0b d0 cf 3c 7c 0d b0 aa c2 ab 0a 60 55 55 55 05 c0 ff ab aa 03 00 00 fe ff 00 00 00 00 00 00} } blt_bitmap define blt.1 {{40 40} { 00 00 00 00 00 00 fc 07 00 00 00 04 08 00 00 00 04 04 00 00 00 e4 ff 0f 00 00 64 06 08 00 00 64 06 08 00 00 e4 ff 04 00 00 64 36 04 00 00 64 36 02 00 00 e4 37 02 00 00 04 34 02 00 00 04 34 04 00 00 fc 35 04 00 00 0c 04 08 00 00 0c 04 08 00 00 0c fc ef 03 80 ed 01 00 04 e0 0c 00 20 09 10 0c 00 00 12 10 0c 00 00 10 30 00 00 00 19 d0 03 00 00 14 b0 fe ff ff 1b 50 55 55 55 0d e8 aa aa aa 16 e4 ff ff ff 2f f4 ff ff ff 27 d8 ae aa bd 2d 6c 5f d5 67 1b bc f3 7f d0 36 f8 01 10 cc 1f e0 45 8e 92 0f b0 32 41 43 0b d0 cf 3c 7c 0d b0 aa c2 ab 0a 60 55 55 55 05 c0 ff ab aa 03 00 00 fe ff 00 00 00 00 00 00} } blt_bitmap define blt.2 {{40 40} { 00 00 00 00 00 00 fc 0f 00 00 00 04 10 00 00 00 04 10 00 00 00 e4 fb 3f 00 00 64 0e 20 00 00 64 0e 20 00 00 e4 fb 13 00 00 64 ce 10 00 00 64 ce 08 00 00 e4 cb 08 00 00 04 c8 08 00 00 04 c8 10 00 00 fc cf 10 00 00 0c 08 20 00 00 0c 08 20 00 00 0c f8 bf 03 80 ed 03 00 04 e0 0c 00 20 09 10 0c 00 00 12 10 0c 00 00 10 30 00 00 00 19 d0 03 00 00 14 b0 fe ff ff 1b 50 55 55 55 0d e8 aa aa aa 16 e4 ff ff ff 2f f4 ff ff ff 27 d8 ae aa bd 2d 6c 5f d5 67 1b bc f3 7f d0 36 f8 01 10 cc 1f e0 45 8e 92 0f b0 32 41 43 0b d0 cf 3c 7c 0d b0 aa c2 ab 0a 60 55 55 55 05 c0 ff ab aa 03 00 00 fe ff 00 00 00 00 00 00} } blt_bitmap define blt.3 {{40 40} { 00 00 00 00 00 00 fc 0f 00 00 00 04 f0 ff 00 00 04 00 80 00 00 e4 03 80 00 00 64 d6 4f 00 00 64 16 43 00 00 e4 13 23 00 00 64 16 23 00 00 64 16 23 00 00 e4 13 43 00 00 04 70 43 00 00 04 00 80 00 00 fc 0f 80 00 00 0c f0 ff 00 00 0c 00 00 00 00 0c f8 ff 03 80 ed 07 00 04 e0 0c 00 20 09 10 0c 00 00 12 10 0c 00 00 10 30 00 00 00 19 d0 03 00 00 14 b0 fe ff ff 1b 50 55 55 55 0d e8 aa aa aa 16 e4 ff ff ff 2f f4 ff ff ff 27 d8 ae aa bd 2d 6c 5f d5 67 1b bc f3 7f d0 36 f8 01 10 cc 1f e0 45 8e 92 0f b0 32 41 43 0b d0 cf 3c 7c 0d b0 aa c2 ab 0a 60 55 55 55 05 c0 ff ab aa 03 00 00 fe ff 00 00 00 00 00 00} } blt_bitmap define blt.4 {{40 40} { 00 00 00 00 00 00 fc ff ff 03 00 04 00 00 02 00 04 00 00 02 00 e4 33 3f 01 00 64 36 0c 01 00 64 36 8c 00 00 e4 33 8c 00 00 64 36 8c 00 00 64 36 0c 01 00 e4 f3 0d 01 00 04 00 00 02 00 04 00 00 02 00 fc ff ff 03 00 0c 00 00 00 00 0c 00 00 00 00 0c f8 ff 03 80 ed 07 00 04 e0 0c 00 20 09 10 0c 00 00 12 10 0c 00 00 10 30 00 00 00 19 d0 03 00 00 14 b0 fe ff ff 1b 50 55 55 55 0d e8 aa aa aa 16 e4 ff ff ff 2f f4 ff ff ff 27 d8 ae aa bd 2d 6c 5f d5 67 1b bc f3 7f d0 36 f8 01 10 cc 1f e0 45 8e 92 0f b0 32 41 43 0b d0 cf 3c 7c 0d b0 aa c2 ab 0a 60 55 55 55 05 c0 ff ab aa 03 00 00 fe ff 00 00 00 00 00 00} } set command { vmstat 1 } #set command { find ../.. -print } set animate(index) 0 set animate(interval) 200 #set animate(colors) { #ff8813 #ffaa13 #ffcc13 #ffff13 #ffcc13 #ffaa13 #ff8813 } blt_bitmap define blt.5 [blt_bitmap data blt.3] blt_bitmap define blt.6 [blt_bitmap data blt.2] blt_bitmap define blt.7 [blt_bitmap data blt.1] proc Animate {} { global animate if { [info commands .logo] != ".logo" } { set animate(index) 0 return } if { $animate(index) >= 0 } { .logo configure -bitmap blt.$animate(index) incr animate(index) if { $animate(index) >= 7 } { set animate(index) 0 } after $animate(interval) Animate } } proc GetStats { command varArr } { global $varArr set new [format "%s(update)" $varArr] set err [format "%s(errors)" $varArr] set out [format "%s(output)" $varArr] trace variable $new w DisplayStats eval "blt_bgexec \ -keepnewline \ -errorvar $err \ -updatevar $new \ $out $command" } proc DisplayStats { name1 name2 how } { upvar #0 $name1 arr .text insert end $arr($name2) set arr($name2) {} set textlen [expr int([.text index end])] scan [.vscroll get] "%s %s %s %s" total window first last if { $textlen > $total } { .text yview [expr $textlen-$window] } update idletasks } # # Do a quick test of the command to see how long the output is going to be # catch "exec [lindex $command 0]" output set output [split $output \n] set length [string length [lindex $output 0]] if { $length > 80 } { set length 110 } else { set length 80 } option add *text.yScrollCommand { .vscroll set } option add *text.relief sunken option add *text.width $length option add *text.height 10 option add *text.borderWidth 2 option add *vscroll.command { .text yview } option add *vscroll.minSlider 4p option add *quit.command { exit } option add *quit.text { quit } option add *stop.command { global results; set results(output) {} } option add *stop.text { stop } option add *logo.relief sunken option add *logo.padX 4 option add *title.text "Virtual Memory Statistics" option add *title.font -*-Helvetica-Bold-R-*-*-14-*-*-*-*-*-*-* set visual [winfo screenvisual .] if { $visual != "staticgray" && $visual != "grayscale" } { option add *text.background lightblue option add *text.foreground blue option add *quit.background red option add *quit.foreground white option add *stop.background yellow option add *stop.foreground navyblue option add *logo.background beige option add *logo.foreground brown } # Create widgets text .text scrollbar .vscroll button .quit button .stop label .logo label .title # Layout widgets in table blt_table . \ .title 0,0 -columnspan 4 -fill both \ .text 1,0 -columnspan 3 -fill both \ .vscroll 1,3 -fill y \ .logo 2,0 -anchor w -padx 10 -reqheight .6i -pady 4 \ .stop 2,1 -anchor e -reqwidth .75i -reqheight .3i \ .quit 2,2 -anchor e -reqwidth .75i -reqheight .3i blt_table column . configure { 1 2 } -width 1i blt_table column . configure { 3 } -resize none wm min . 0 0 # Start command using "results(output)" as the trigger variable set results(output) {} GetStats $command results Animate tkwait variable results(output) # Turn off animation puts stderr "Turning off vmstat (stderr=\"$results(errors)\")" set animate(index) -1