Annotation of micropolis/src/tk/library/demos/ixset, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.