home *** CD-ROM | disk | FTP | other *** search
/ The Best of Windows 95.com 1996 September / WIN95_09962.iso / vrml / cp2b2x.exe / DATA.Z / ixset < prev    next >
Text File  |  1996-04-23  |  8KB  |  313 lines

  1. #!/bin/sh
  2. # the next line restarts using wish \
  3. exec wish "$0" "$@"
  4.  
  5. # ixset --
  6. # A nice interface to "xset" to change X server settings
  7. #
  8. # History :
  9. #   91/11/23 : pda@masi.ibp.fr, jt@ratp.fr : design
  10. #   92/08/01 : pda@masi.ibp.fr : cleaning
  11. #
  12. # @(#) ixset 1.6 95/09/07 11:13:17
  13.  
  14. #
  15. # Button actions
  16. #
  17.  
  18. proc quit {} {
  19.     destroy .
  20. }
  21.  
  22. proc ok {} {
  23.     writesettings
  24.     quit
  25. }
  26.  
  27. proc cancel {} {
  28.     readsettings
  29.     dispsettings
  30. }
  31.  
  32. # apply is just "writesettings"
  33.  
  34.  
  35. #
  36. # Read current settings
  37. #
  38.  
  39. proc readsettings {} {
  40.     global kbdrep ;    set kbdrep    "on"
  41.     global kbdcli ;    set kbdcli    0
  42.     global bellvol ;    set bellvol    100
  43.     global bellpit ;    set bellpit    440
  44.     global belldur ;    set belldur    100
  45.     global mouseacc ;    set mouseacc    "3/1"
  46.     global mousethr ;    set mousethr    4
  47.     global screenbla ;    set screenbla    "blank"
  48.     global screentim ;    set screentim    600
  49.     global screencyc ;    set screencyc    600
  50.  
  51.     set xfd [open "|xset q" r]
  52.     while {[gets $xfd line] > -1} {
  53.     set kw [lindex $line 0]
  54.  
  55.     case $kw in {
  56.         {auto}
  57.         {
  58.             set rpt [lindex $line 1]
  59.             if {[expr "{$rpt} == {repeat:}"]} then {
  60.             set kbdrep [lindex $line 2]
  61.             set kbdcli [lindex $line 6]
  62.             }
  63.         }
  64.         {bell}
  65.         {
  66.             set bellvol [lindex $line 2]
  67.             set bellpit [lindex $line 5]
  68.             set belldur [lindex $line 8]
  69.         }
  70.         {acceleration:}
  71.         {
  72.             set mouseacc [lindex $line 1]
  73.             set mousethr [lindex $line 3]
  74.         }
  75.         {prefer}
  76.         {
  77.             set bla [lindex $line 2]
  78.             set screenbla [expr "{$bla} == {yes} ? {blank} : {noblank}"]
  79.         }
  80.         {timeout:}
  81.         {
  82.             set screentim [lindex $line 1]
  83.             set screencyc [lindex $line 3]
  84.         }
  85.     }
  86.     }
  87.     close $xfd
  88.  
  89.     # puts stdout [format "Key REPEAT = %s\n" $kbdrep]
  90.     # puts stdout [format "Key CLICK  = %s\n" $kbdcli]
  91.     # puts stdout [format "Bell VOLUME = %s\n" $bellvol]
  92.     # puts stdout [format "Bell PITCH = %s\n" $bellpit]
  93.     # puts stdout [format "Bell DURATION = %s\n" $belldur]
  94.     # puts stdout [format "Mouse ACCELERATION = %s\n" $mouseacc]
  95.     # puts stdout [format "Mouse THRESHOLD = %s\n" $mousethr]
  96.     # puts stdout [format "Screen BLANCK = %s\n" $screenbla]
  97.     # puts stdout [format "Screen TIMEOUT = %s\n" $screentim]
  98.     # puts stdout [format "Screen CYCLE = %s\n" $screencyc]
  99. }
  100.  
  101.  
  102. #
  103. # Write settings into the X server
  104. #
  105.  
  106. proc writesettings {} {
  107.     global kbdrep kbdcli  bellvol bellpit belldur
  108.     global mouseacc mousethr  screenbla screentim screencyc
  109.  
  110.     set bellvol        [.bell.vol get]
  111.     set bellpit        [.bell.val.pit.entry get]
  112.     set belldur        [.bell.val.dur.entry get]
  113.  
  114.     if {[expr "{$kbdrep} == {on}"]} then {
  115.     set kbdcli    [.kbd.val.cli get]
  116.     } else {
  117.     set kbdcli    "off"
  118.     }
  119.  
  120.     set mouseacc    [.mouse.hor.acc.entry get]
  121.     set mousethr    [.mouse.hor.thr.entry get]
  122.  
  123.     set screentim    [.screen.val.le.tim.entry get]
  124.     set screencyc    [.screen.val.le.cyc.entry get]
  125.  
  126.     exec xset \
  127.     b $bellvol $bellpit $belldur \
  128.     c $kbdcli \
  129.     r $kbdrep \
  130.     m $mouseacc $mousethr \
  131.     s $screentim $screencyc \
  132.     s $screenbla
  133. }
  134.  
  135.  
  136. #
  137. # Sends all settings to the window
  138. #
  139.  
  140. proc dispsettings {} {
  141.     global kbdrep kbdcli  bellvol bellpit belldur
  142.     global mouseacc mousethr  screenbla screentim screencyc
  143.  
  144.     .bell.vol set $bellvol
  145.     .bell.val.pit.entry delete 0 end
  146.     .bell.val.pit.entry insert 0 $bellpit
  147.     .bell.val.dur.entry delete 0 end
  148.     .bell.val.dur.entry insert 0 $belldur
  149.  
  150.     .kbd.val.onoff [expr "{$kbdrep} == {on} ? {select} : {deselect}"]
  151.     .kbd.val.cli set $kbdcli
  152.  
  153.     .mouse.hor.acc.entry delete 0 end
  154.     .mouse.hor.acc.entry insert 0 $mouseacc
  155.     .mouse.hor.thr.entry delete 0 end
  156.     .mouse.hor.thr.entry insert 0 $mousethr
  157.  
  158.     .screen.val.rb.blank [expr "{$screenbla}=={blank} ? {select} : {deselect}"]
  159.     .screen.val.rb.pat   [expr "{$screenbla}!={blank} ? {select} : {deselect}"]
  160.     .screen.val.le.tim.entry delete 0 end
  161.     .screen.val.le.tim.entry insert 0 $screentim
  162.     .screen.val.le.cyc.entry delete 0 end
  163.     .screen.val.le.cyc.entry insert 0 $screencyc
  164. }
  165.  
  166.  
  167. #
  168. # Create all windows, and pack them
  169. #
  170.  
  171. proc labelentry {path text length} {
  172.     frame $path
  173.     label $path.label -text $text
  174.     entry $path.entry -width $length -relief sunken
  175.     pack $path.label -side left -expand y
  176.     pack $path.entry -side right -expand y
  177. }
  178.  
  179. proc createwindows {} {
  180.     #
  181.     # Buttons
  182.     #
  183.  
  184.     frame .buttons
  185.     button .buttons.ok        -command "ok"            -text "Ok"
  186.     button .buttons.apply    -command "writesettings"    -text "Apply"
  187.     button .buttons.cancel    -command "cancel"        -text "Cancel"
  188.     button .buttons.quit    -command "quit"            -text "Quit"
  189.  
  190.     pack .buttons.ok .buttons.apply .buttons.cancel .buttons.quit \
  191.         -side left -expand yes -pady 5
  192.  
  193.     #
  194.     # Bell settings
  195.     #
  196.  
  197.     frame .bell -relief raised -borderwidth 2
  198.     label .bell.label    -text "Bell Settings"
  199.     scale .bell.vol \
  200.         -from 0 -to 100 -length 200 -tickinterval 20 \
  201.         -label "Volume (%)" -orient horizontal
  202.  
  203.     frame .bell.val
  204.     labelentry .bell.val.pit "Pitch (Hz)"    6
  205.     labelentry .bell.val.dur "Duration (ms)" 6
  206.     pack .bell.val.pit -side left -padx 5
  207.     pack .bell.val.dur -side right -padx 5
  208.     pack .bell.label .bell.vol .bell.val -side top -expand yes
  209.  
  210.     #
  211.     # Keyboard settings
  212.     #
  213.  
  214.     frame .kbd -relief raised -borderwidth 2
  215.  
  216.     label .kbd.label -text "Keyboard Repeat Settings"
  217.  
  218.     frame .kbd.val
  219.     checkbutton .kbd.val.onoff \
  220.         -text "On" \
  221.         -onvalue "on" -offvalue "off" -variable kbdrep \
  222.         -relief flat
  223.     scale .kbd.val.cli \
  224.         -from 0 -to 100 -length 200 -tickinterval 20 \
  225.         -label "Click Volume (%)" -orient horizontal
  226.     pack .kbd.val.onoff -side left -expand yes -fill both
  227.     pack .kbd.val.cli -side left -expand yes
  228.  
  229.     pack .kbd.label -side top -expand yes
  230.     pack .kbd.val -side top -expand yes -pady 2 -fill x
  231.  
  232.     #
  233.     # Mouse settings
  234.     #
  235.  
  236.     frame .mouse -relief raised -borderwidth 2
  237.  
  238.     label .mouse.label -text "Mouse Settings"
  239.     frame .mouse.hor
  240.     labelentry .mouse.hor.acc "Acceleration" 3
  241.     labelentry .mouse.hor.thr "Threshold (pixels)" 3
  242.  
  243.     pack .mouse.hor.acc -side left
  244.     pack .mouse.hor.thr -side right
  245.  
  246.     pack .mouse.label -side top
  247.     pack .mouse.hor -side top -expand yes
  248.  
  249.     #
  250.     # Screen Saver settings
  251.     #
  252.  
  253.     frame .screen -relief raised -borderwidth 2
  254.  
  255.     label .screen.label -text "Screen-saver Settings"
  256.     frame .screen.val
  257.  
  258.     frame .screen.val.rb
  259.     radiobutton .screen.val.rb.blank \
  260.         -variable screenblank -text "Blank" -relief flat \
  261.         -value "blank" -variable screenbla
  262.     radiobutton .screen.val.rb.pat \
  263.         -variable screenblank -text "Pattern" -relief flat \
  264.         -value "noblank" -variable screenbla
  265.     pack .screen.val.rb.blank .screen.val.rb.pat -side top -pady 2 -anchor w
  266.     frame .screen.val.le
  267.     labelentry .screen.val.le.tim "Timeout (s)" 5
  268.     labelentry .screen.val.le.cyc "Cycle (s)" 5
  269.     pack .screen.val.le.tim .screen.val.le.cyc -side top -pady 2 -anchor e
  270.  
  271.     pack .screen.val.rb .screen.val.le -side left
  272.  
  273.     pack .screen.label -side top
  274.     pack .screen.val -side top -expand y
  275.  
  276.     #
  277.     # Main window
  278.     #
  279.  
  280.     pack .buttons -side top -fill both
  281.     pack .bell .kbd .mouse .screen -side top -fill both -ipady 5 -expand yes
  282.  
  283.     #
  284.     # Let the user resize our window
  285.     #
  286.     wm minsize . 10 10
  287. }
  288.  
  289. ##############################################################################
  290. # Main program
  291.  
  292. #
  293. # Listen what "xset" tells us...
  294. #
  295.  
  296. readsettings
  297.  
  298. #
  299. # Create all windows
  300. #
  301.  
  302. createwindows
  303.  
  304. #
  305. # Write xset parameters
  306. #
  307.  
  308. dispsettings
  309.  
  310. #
  311. # Now, wait for user actions...
  312. #
  313.