|
|
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: #
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.