chiark / gitweb /
wip subproc
[chiark-tcl-applet.git] / example
diff --git a/example b/example
index b1a9c86..b9f1c64 100755 (executable)
--- a/example
+++ b/example
@@ -21,73 +21,8 @@ foreach b {1 3} {
 applet::setup-tooltip { puts VIS } { puts INVIS }
 applet::tooltip-set "line\nanother"
 
-fconfigure stdout -buffering line
-
-set status none
-
-proc destroying {} {
-    global status
-    puts "DESTROYING $status"
-    switch -exact $status {
-       none { }
-       old { }
-       default { kill $status; set status old }
-    }
-}
-
-proc ready {} {
-    global status
-    puts "READY $status"
-    switch -exact $status {
-       none {
-           run-child
-       }
-       old {
-           # wait for it to die
-       }
-       default {
-           error "unexpected state $status"
-       }
-    }
-    puts "READY-done $status"
-}
-
-set ratelimit 0
-
-proc run-child {} {
-    global status ratelimit
-
-    puts "RUN-CHILD $status"
-    set now [clock seconds]
-    lappend ratelimit $now
-    while {[lindex $ratelimit 0] < {$now - 10}} {
-       set ratelimit [lrange $ratelimit 1 end]
-    }
-    if {[llength $ratelimit] > 10} {
-       puts stderr "crashing repeatedly, quitting $ratelimit"
-       exit 127
-    }
-
-    set status none
-    set status [subproc::fork child-died {
-       execl xacpi-simple [list -into [winfo id .i.i.b.c]]
-    }]
-    puts "FORKED $status"
-}
-
-proc child-died {how how2} {
-    puts "DIED $how $how2"
-    global status
-    switch -exact $status {
-       old {
-           set status none
-           run-child
-       }
-       default {
-           set status none
-           innerwindow-resetup-required "child died"
-       }
-    }
+proc cmdline {id} {
+    return [list xacpi-simple -into $id]
 }
 
-applet::setup-subwindow 40 destroying ready
+applet::setup-subproc 40 cmdline