#!/bin/sh # the next line restarts using wish \ exec wish "$0" "$@" # Loops over the standard X cursors in and # changes the cursor to each one. Click Button1 or hit the spacebar to # go forward. Click Button3 or hit "b" to go backward. Hit "a" # to toggle autoloop mode. "q" (or Ctrl-C at shell) to quit. global curs C Max auto sleep_ms set auto 0 set sleep_ms 1000; # 1 sec. # read core cursor names: set Max "" set fh [open "/usr/include/X11/cursorfont.h" "r"] while {[gets $fh line] > -1} { if [regexp {[0-9][0-9]*$} $line n] { if [regexp {XC_([^ ]*)} $line foo cursor] { puts " $n: $cursor" if {$cursor != "num_glyphs"} { set curs($n) $cursor } else { set Max $n } } } } set C -2 if {$Max == ""} { set Max 154 } incr Max -2 proc do_cursor {forward} { global auto if {! $auto} { next_cursor $forward return } while {$auto} { next_cursor $forward after 500 update } } proc next_cursor {forward} { global curs C Max if {$forward} { incr C 2 } else { incr C -2 } if {$C < 0} { set C $Max; puts stdout "Looped backwards..." } if {$C > $Max} { set C 0; puts stdout "Repeating..." } .b1 config -cursor "$curs($C) black white" puts "$curs($C)" } proc toggle_auto {} { global auto if {$auto} { set auto 0 } else { set auto 1 } puts "auto mode: $auto" } proc auto_loop {} { } button .b1 -text "Woo Woo Woo" -pady 20 -font "9x15" \ -command "do_cursor 1"; bind . "do_cursor 1" bind . "do_cursor 1" bind . "do_cursor 0" bind . "do_cursor 0" bind . "toggle_auto; do_cursor 1" bind . {destroy .} pack .b1 -fill both -expand 1