# the next line restarts using wish \
exec wish8.4
"$0" ${1+"$@"}
# A nice interface to "xset" to change X server settings
# 91/11/23 : pda@masi.ibp.fr, jt@ratp.fr : design
# 92/08/01 : pda@masi.ibp.fr : cleaning
# RCS: @(#) $Id: ixset,v 1.4 2001/11/05 10:13:53 dkf Exp $
.buttons.apply configure
-state disabled
.buttons.cancel configure
-state disabled
.buttons.apply configure
-state disabled
.buttons.cancel configure
-state disabled
global kbdrep
; set kbdrep
"on"
global kbdcli
; set kbdcli
0
global bellvol
; set bellvol
100
global bellpit
; set bellpit
440
global belldur
; set belldur
100
global mouseacc
; set mouseacc
"3/1"
global mousethr
; set mousethr
4
global screenbla
; set screenbla
"blank"
global screentim
; set screentim
600
global screencyc
; set screencyc
600
set xfd
[open
"|xset q" r
]
while {[gets
$xfd line
] > -1} {
if {[expr "{$rpt} == {repeat:}"]} then {
set kbdrep
[lindex
$line 2]
set kbdcli
[lindex
$line 6]
set bellvol
[lindex
$line 2]
set bellpit
[lindex
$line 5]
set belldur
[lindex
$line 8]
set mouseacc
[lindex
$line 1]
set mousethr
[lindex
$line 3]
set screenbla
[expr "{$bla} == {yes} ? {blank} : {noblank}"]
set screentim
[lindex
$line 1]
set screencyc
[lindex
$line 3]
# puts stdout [format "Key REPEAT = %s\n" $kbdrep]
# puts stdout [format "Key CLICK = %s\n" $kbdcli]
# puts stdout [format "Bell VOLUME = %s\n" $bellvol]
# puts stdout [format "Bell PITCH = %s\n" $bellpit]
# puts stdout [format "Bell DURATION = %s\n" $belldur]
# puts stdout [format "Mouse ACCELERATION = %s\n" $mouseacc]
# puts stdout [format "Mouse THRESHOLD = %s\n" $mousethr]
# puts stdout [format "Screen BLANCK = %s\n" $screenbla]
# puts stdout [format "Screen TIMEOUT = %s\n" $screentim]
# puts stdout [format "Screen CYCLE = %s\n" $screencyc]
# Write settings into the X server
global kbdrep kbdcli bellvol bellpit belldur
global mouseacc mousethr screenbla screentim screencyc
set bellvol
[.bell.vol get
]
set bellpit
[.bell.val.pit.entry get
]
set belldur
[.bell.val.dur.entry get
]
if {[expr "{$kbdrep} == {on}"]} then {
set kbdcli
[.kbd.val.cli get
]
set mouseacc
[.mouse.hor.acc.entry get
]
set mousethr
[.mouse.hor.thr.entry get
]
set screentim
[.screen.tim.entry get
]
set screencyc
[.screen.cyc.entry get
]
b
$bellvol $bellpit $belldur \
s
$screentim $screencyc \
# Sends all settings to the window
global kbdrep kbdcli bellvol bellpit belldur
global mouseacc mousethr screenbla screentim screencyc
.bell.val.pit.entry delete
0 end
.bell.val.pit.entry insert
0 $bellpit
.bell.val.dur.entry delete
0 end
.bell.val.dur.entry insert
0 $belldur
.kbd.val.onoff
[expr "{$kbdrep} == {on} ? {select} : {deselect}"]
.mouse.hor.acc.entry delete
0 end
.mouse.hor.acc.entry insert
0 $mouseacc
.mouse.hor.thr.entry delete
0 end
.mouse.hor.thr.entry insert
0 $mousethr
.screen.blank
[expr "{$screenbla}=={blank} ? {select} : {deselect}"]
.screen.pat
[expr "{$screenbla}!={blank} ? {select} : {deselect}"]
.screen.tim.entry delete
0 end
.screen.tim.entry insert
0 $screentim
.screen.cyc.entry delete
0 end
.screen.cyc.entry insert
0 $screencyc
# Create all windows, and pack them
proc labelentry
{path text length
{range
{}}} {
label
$path.label
-text $text
spinbox
$path.entry
-width $length -relief sunken \
-from [lindex
$range 0] -to [lindex
$range 1]
entry
$path.entry
-width $length -relief sunken
pack
$path.label
-side left
pack
$path.entry
-side right
-expand y
-fill x
button .buttons.ok
-default active
-command ok
-text "Ok"
button .buttons.apply
-default normal
-command apply
-text "Apply" \
button .buttons.cancel
-default normal
-command cancel
-text "Cancel" \
button .buttons.quit
-default normal
-command quit
-text "Quit"
pack .buttons.ok .buttons.apply .buttons.cancel .buttons.quit \
-side left
-expand yes -pady 5
bind .
<Return
> {.buttons.ok flash
; .buttons.ok invoke
}
bind .
<Escape
> {.buttons.quit flash
; .buttons.quit invoke
}
if {![string match .buttons
* %W
]} {
.buttons.apply configure
-state normal
.buttons.cancel configure
-state normal
if {![string match .buttons
* %W
]} {
Return
- Escape
- Tab
- *Shift
* {}
.buttons.apply configure
-state normal
.buttons.cancel configure
-state normal
labelframe .bell
-text "Bell Settings" -padx 1.5m
-pady 1.5m
-from 0 -to 100 -length 200 -tickinterval 20 \
-label "Volume (%)" -orient horizontal
labelentry .bell.val.pit
"Pitch (Hz)" 6 {25 20000}
labelentry .bell.val.dur
"Duration (ms)" 6 {1 10000}
pack .bell.val.pit
-side left
-padx 5
pack .bell.val.dur
-side right
-padx 5
pack .bell.vol .bell.val
-side top
-expand yes
labelframe .kbd
-text "Keyboard Repeat Settings" -padx 1.5m
-pady 1.5m
checkbutton .kbd.val.onoff \
-onvalue "on" -offvalue "off" -variable kbdrep \
-from 0 -to 100 -length 200 -tickinterval 20 \
-label "Click Volume (%)" -orient horizontal
pack .kbd.val.onoff
-side left
-fill x
-expand yes -padx {0 1m
}
pack .kbd.val.cli
-side left
-expand yes -fill x
-padx {1m
0}
pack .kbd.val
-side top
-expand yes -pady 2 -fill x
labelframe .mouse
-text "Mouse Settings" -padx 1.5m
-pady 1.5m
labelentry .mouse.hor.acc
"Acceleration" 5
labelentry .mouse.hor.thr
"Threshold (pixels)" 3 {1 2000}
pack .mouse.hor.acc
-side left
-padx {0 1m
}
pack .mouse.hor.thr
-side right
-padx {1m
0}
pack .mouse.hor
-side top
-expand yes
labelframe .screen
-text "Screen-saver Settings" -padx 1.5m
-pady 1.5m
radiobutton .screen.blank \
-variable screenblank
-text "Blank" -relief flat \
-value "blank" -variable screenbla
-anchor w
radiobutton .screen.pat \
-variable screenblank
-text "Pattern" -relief flat \
-value "noblank" -variable screenbla
-anchor w
labelentry .screen.tim
"Timeout (s)" 5 {1 100000}
labelentry .screen.cyc
"Cycle (s)" 5 {1 100000}
grid .screen.blank .screen.tim
-sticky e
grid .screen.pat .screen.cyc
-sticky e
grid configure .screen.blank .screen.pat
-sticky ew
pack .buttons
-side top
-fill both
pack .bell .kbd .mouse .screen
-side top
-fill both
-expand yes \
# Let the user resize our window
##############################################################################
# Listen what "xset" tells us...
# Now, wait for user actions...