#!/bin/sh # the next line restarts using wish \ exec wish "$0" "$@" # TkOlwmProps (Version 0.21) # # Copyright (C) 2000 by T.Sato # # http://member.nifty.ne.jp/tsato/tkdeskset/ # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. set program_name "TkOlwmProps" set title "$program_name (Version 0.21)" set Xdefaults $env(HOME)/.Xdefaults set colors(normal) "black" set colors(disabled) "gray50" # set default parameters set lang "C" if { ! [ catch { kanji code "abc" } ] } { catch { set lang $env(LANG) } catch { set lang $env(LC_ALL) } catch { set lang $env(LC_MESSAGES) } set env(LC_MESSAGES) "C" } set make_backup 1 # For Japanese locale, translate messages to Japanese. # proc gettext msg { global lang Xdefaults if [ regexp {^ja_|^japanese|^ja$} $lang junk ] { switch -glob $msg { "Applying your changes *" \ { return "変更を適用すると \"$Xdefaults\" ファイルが書き換えられます。\ 適用しますか?" } "Do you want to load *" \ { return "変更した .Xdefaults ファイルを今読み込みますか?" } "Workspace:" \ { return "ワークスペース:" } "Window:" \ { return "ウィンドウ:" } "Background:" \ { return "バックグランド:" } "Foreground:" \ { return "フォアグランド:" } "Location:" \ { return "位置:" } "Top" \ { return "上" } "Bottom" \ { return "下" } "Left" \ { return "左" } "Right" \ { return "右" } "Flash Count:" \ { return "点滅の回数:" } "Drag-Right Distance (pixels):" \ { return "右への移動距離 (ピクセル):" } "SELECT Mouse Press:" \ { return "マウスの SELECT の押下:" } "Selects Default" \ { return "デフォルトの選択" } "Displays Menu" \ { return "メニューの表示" } "Mouse Acceleration:" \ { return "マウスのアクセラレーション:" } "Acceleration Threshold:" \ { return "アクセラレーションのしきい値:" } "Multi-Click Timeout (sec/10):" \ { return "多重クリックのタイムアウト (秒/10):" } "Mouse Buttons:" \ { return "マウスボタン:" } "Normal" \ { return "通常" } "Left Handed" \ { return "左手用" } "Beep:" \ { return "ブザー:" } "Always" \ { return "常に" } "Notices Only" \ { return "警告のみ" } "Never" \ { return "鳴らさない" } "Volume:" \ { return "音量:" } "Pitch:" \ { return "音の高さ:" } "Duration:" \ { return "音の長さ:" } "SCREEN SAVER" \ { return "スクリーン・セーバー" } "Screen Saver:" \ { return "スクリーン・セーバー:" } "Disable" \ { return "無効" } "Enable" \ { return "有効" } "Blank" \ { return "ブランク" } "Logo" \ { return "ロゴの表示" } "Timeout (minutes):" \ { return "タイムアウト (分)" } "ENERGY STAR (DPMS)" \ { return "省電力機能 (DPMS)" } "Energy Star:" \ { return "省電力機能:" } "Standby (minutes):" \ { return "スタンバイ (分):" } "Suspend (minutes):" \ { return "サスペンド (分):" } "Off (minutes):" \ { return "オフ (分):" } "Set Input Area:" \ { return "入力領域の設定:" } "Click SELECT" \ { return "SELECT のクリック" } "Move Pointer" \ { return "ポインタの移動" } "Threshold when Moving Windows*" \ { return "ウィンドウを画面の境界を超えて \n移動する際のしきい値:" } "Another Options:" \ { return "その他のオプション:" } "Raise Window when it is Focused" \ { return "フォーカスされた際にそのウィンドウを手前に出す" } "Raise Window when it is Resized" \ { return "大きさを変更された際にそのウィンドウを手前に出す" } "Raise Window when it is Moved" \ { return "移動された際にそのウィンドウを手前に出す" } "Keep Transient Window above its Owner" \ { return "一時的なウィンドウをその親で隠さない" } "Show Geometry when Moving Window" \ { return "ウィンドウの移動の際にその座標を表示する" } "Show Geometry when Resizing Window" \ { return "ウィンドウの大きさの変更の際にその大きさを表示する" } "Grab the Server while Menus are Up" \ { return "メニューが開かれている時にサーバーを占有する" } "Apply" \ { return "適用" } "Reset" \ { return "リセット" } "Category:" \ { return "カテゴリー:" } "Color" \ { return "色" } "Icons" \ { return "アイコン" } "Menus" \ { return "メニュー" } "Mouse Settings" \ { return "マウスの設定" } "Screen Saver" \ { return "スクリーン・セーバー" } "Beep" \ { return "ブザー" } "Miscellaneous" \ { return "その他" } default \ { return $msg } } } return $msg } ################################################################ # Read resource from the X server (when file = "| xrdb -q") # or resouce file. # If called as "parse_resources filename true", the resource # file will be updated to store settings on the panel. # proc parse_resources { file { update false } } { global opt dpms_available make_backup Xdefaults if { $update } { # set opt(*background) $opt(OpenWindows.Background) # set opt(*foreground) $opt(OpenWindows.Foreground) foreach s [ array names opt ] { set curopt($s) $opt($s) } if { $make_backup } { set make_backup false eval exec "cp $Xdefaults $Xdefaults.bak" } set out [ open $file.new w ] } set lines 0 set in [ open $file r ] while { 0 <= [ gets $in line ] } { if { ! [ string match "|*" $file ] } { # when reading from resource file, we may need to join lines while { [ regexp {\\$} $line ] } { if { 0 <= [ gets $in line2 ] } { append line "\n" $line2 } } } scan $line "%\[^:\]:%\[^\377\]" s1 s2 regsub {^(OpenWindows|olwm|olvwm)[.*]} $s1 "OpenWindows." s1 if { $update } { if { [ array names curopt $s1 ] != "" } { puts $out "$s1: $curopt($s1)" unset curopt($s1) } else { puts $out $line } } else { if { [ string match "OpenWindows.*" $line ] \ || [ string match "tkolwmprops.*" $line ] } { regsub "^\[ \t\]*" $s2 "" s2 regsub -nocase "^(true|yes|on)\[ \t\]*$" $s2 "true" s2 regsub -nocase "^(false|no|off)\[ \t\]*$" $s2 "false" s2 set opt($s1) $s2 } } incr lines } close $in if { $update } { foreach s [ array names curopt ] { if { $curopt($s) != "" } { puts $out "$s: $curopt($s)" } } close $out eval exec "mv $Xdefaults.new $Xdefaults" } catch { if { 0 < $opt(tkolwmprops.acceleration) } { eval exec "xset m [ expr int($opt(tkolwmprops.acceleration) * 10) ]/10 \ $opt(tkolwmprops.accelerationThreshold)" } } set t [ expr $opt(tkolwmprops.screenSaverTimeout) * 60 ] eval exec "xset s $t $t" switch $opt(tkolwmprops.screenSaver) { "disable" { eval exec "xset s off" } "blank" { eval exec "xset s blank" } "logo" { eval exec "xset s noblank" } } if { $dpms_available } { if { $opt(tkolwmprops.dpms) == "disable" } { eval exec "xset -dpms" } else { if { $opt(tkolwmprops.dpmsSuspend) < $opt(tkolwmprops.dpmsStandby) } { set opt(tkolwmprops.dpmsSuspend) $opt(tkolwmprops.dpmsStandby) } if { $opt(tkolwmprops.dpmsOff) < $opt(tkolwmprops.dpmsSuspend) } { set opt(tkolwmprops.dpmsOff) $opt(tkolwmprops.dpmsSuspend) } set t1 [ expr $opt(tkolwmprops.dpmsStandby) * 60 ] set t2 [ expr $opt(tkolwmprops.dpmsSuspend) * 60 ] set t3 [ expr $opt(tkolwmprops.dpmsOff) * 60 ] eval exec "xset +dpms dpms $t1 $t2 $t3" } } if { $opt(OpenWindows.Beep) == "never" } { eval exec "xset b off" } else { set t1 $opt(tkolwmprops.bellVolume) set t2 $opt(tkolwmprops.bellPitch) set t3 $opt(tkolwmprops.bellDuration) eval exec "xset b $t1 $t2 $t3" } switch $opt(tkolwmprops.leftHanded) { "false" { eval exec "echo pointer = default | xmodmap -" } "true" { set f [ open "| xmodmap -pp" ] if { 0 <= [ gets $f line ] } { scan $line "There are %d" buttons set cmd "echo pointer = 3 2 1" for { set i 4 } { $i <= $buttons } { incr i } { append cmd " $i" } append cmd " | xmodmap -" eval exec "$cmd" } close $f } } return $lines } # Reset settings on the panel. # proc reset {} { global Xdefaults opt dpms_available catch { unset opt } set opt(OpenWindows.WorkspaceColor) "" set opt(OpenWindows.WindowColor) "" set opt(OpenWindows.Background) "" set opt(OpenWindows.Foreground) "" set opt(OpenWindows.Beep) "always" set opt(tkolwmprops.acceleration) 0 set opt(tkolwmprops.accelerationThreshold) 0 set opt(tkolwmprops.leftHanded) "false" set opt(tkolwmprops.screenSaver) "logo" set opt(tkolwmprops.screenSaverTimeout) 10 set opt(tkolwmprops.dpms) "disable" set dpms_available "false" set f [ open "| xset q" r ] while { 0 <= [ gets $f line ] } { regsub {^ +} $line "" line if { [ scan $line "prefer blanking: %s" x ] } { if { $x } { set opt(tkolwmprops.screenSaver) "blank" } } elseif { [ scan $line "timeout: %s" x ] } { set opt(tkolwmprops.screenSaverTimeout) [ expr $x / 60 ] } elseif { [ scan $line "DPMS is %s" x ] } { set dpms_available "true" if { $x == "Enabled" } { set opt(tkolwmprops.dpms) "enable" } } elseif { [ scan $line "Standby: %s Suspend: %s Off: %s" x1 x2 x3 ] } { set opt(tkolwmprops.dpmsStandby) [ expr $x1 / 60 ] set opt(tkolwmprops.dpmsSuspend) [ expr $x2 / 60 ] set opt(tkolwmprops.dpmsOff) [ expr $x3 / 60 ] } elseif { [ scan $line "bell percent: %s bell pitch: %s bell duration: %s" x1 x2 x3 ] } { set opt(tkolwmprops.bellVolume) $x1 set opt(tkolwmprops.bellPitch) $x2 set opt(tkolwmprops.bellDuration) $x3 } } close $f if { $opt(tkolwmprops.screenSaverTimeout) <= 0 } { set opt(tkolwmprops.screenSaver) "disable" } if [ expr { [ parse_resources "| xrdb -q" ] == 0 } ] { if [ file readable $Xdefaults ] { parse_resources $Xdefaults } } refresh_colors set_sensitivity trace variable opt(tkolwmprops.screenSaver) w { set_sensitivity } trace variable opt(tkolwmprops.dpms) w { set_sensitivity } trace variable opt(OpenWindows.Beep) w { set_sensitivity } } # Apply settings on the panel. # .Xdefaults file will be updated, and new resouces will be loaded # to the X server. # proc apply {} { global opt Xdefaults if { [ tk_messageBox -title "TkOlwmProps - Confirm Apply" \ -type yesno -icon question \ -message [ gettext "Applying your changes will modify \"$Xdefaults\" file.\ Do you want to do this?" ] ] == "yes" } { parse_resources $Xdefaults "true" set load_now "false" set f [ open "| xrdb -q" r ] if { 0 <= [ gets $f line ] } { set load_now "true" } close $f if { $load_now == "false" } { if { [ tk_messageBox -title "TkOlwmProps - Load Xdefaults Now?" \ -type yesno -icon question \ -message [ gettext \ "Do you want to load the modified .Xdefaults file now?" ] ] == "yes" } { set load_now "true" } } if { $load_now } { eval exec "xrdb -merge $Xdefaults" } reset } } # Refresh color of the color buttons, if they are exist. # proc refresh_colors {} { global opt if [ winfo exists .form.ws_color ] { if { $opt(OpenWindows.WorkspaceColor) != "" } { .form.ws_color configure -bg $opt(OpenWindows.WorkspaceColor) } if { $opt(OpenWindows.WindowColor) != "" } { .form.win_color configure -bg $opt(OpenWindows.WindowColor) } if { $opt(OpenWindows.Background) != "" } { .form.bg_color configure -bg $opt(OpenWindows.Background) } if { $opt(OpenWindows.Foreground) != "" } { .form.fg_color configure -bg $opt(OpenWindows.Foreground) } } } proc set_sensitivity { { name 1 } { op 2 } { var 3 } } { global opt colors dpms_available if [ winfo exists .form.timeout_l ] { if { $opt(tkolwmprops.screenSaver) == "disable" } { .form.timeout_l configure -fg $colors(disabled) .form.timeout configure -fg $colors(disabled) -state disabled } else { .form.timeout_l configure -fg $colors(normal) .form.timeout configure -fg $colors(normal) -state normal } } if [ winfo exists .form.dpms_l ] { if { $dpms_available == "false" } { .form.dpms_l configure -fg $colors(disabled) .form.dpms.disable configure -fg $colors(disabled) -state disabled .form.dpms.enable configure -fg $colors(disabled) -state disabled } foreach w { standby suspend off } { set w_l $w append w_l "_l" if { $dpms_available == "false" || $opt(tkolwmprops.dpms) == "disable" } { .form.$w_l configure -fg $colors(disabled) .form.$w configure -fg $colors(disabled) -state disabled } else { .form.$w_l configure -fg $colors(normal) .form.$w configure -fg $colors(normal) -state normal } } } if [ winfo exists .form.beep_l ] { foreach w { bell_volume bell_pitch bell_duration } { set w_l $w append w_l "_l" if { $opt(OpenWindows.Beep) == "never" } { .form.$w_l configure -fg $colors(disabled) .form.$w configure -fg $colors(disabled) -state disabled } else { .form.$w_l configure -fg $colors(normal) .form.$w configure -fg $colors(normal) -state normal } } } } proc show_panel { { name 1 } { op 2 } { var 3 } } { global opt category set category1 $category foreach x { "Color" "Icons" "Menus" "Mouse Settings" \ "Screen Saver" "Beep" "Miscellaneous" } { if { $category == [ gettext $x ] } { set category1 $x } } if [ winfo exists .form ] { destroy .form } frame .form -borderwidth 2 -relief groove reset set row 0 switch -glob $category1 { "Color*" { label .form.ws_color_l -text [ gettext "Workspace:" ] button .form.ws_color -command { set color [ tk_chooseColor -initialcolor $opt(OpenWindows.WorkspaceColor) ] if { $color != "" } { set opt(OpenWindows.WorkspaceColor) $color refresh_colors } } grid .form.ws_color_l -sticky e -row $row grid .form.ws_color -row $row -column 1 incr row label .form.win_color_l -text [ gettext "Window:" ] button .form.win_color -command { set color [ tk_chooseColor -initialcolor $opt(OpenWindows.WindowColor) ] if { $color != "" } { set opt(OpenWindows.WindowColor) $color refresh_colors } } grid .form.win_color_l -sticky e -row $row grid .form.win_color -row $row -column 1 incr row label .form.bg_color_l -text [ gettext "Background:" ] button .form.bg_color -command { set color [ tk_chooseColor -initialcolor $opt(OpenWindows.Background) ] if { $color != "" } { set opt(OpenWindows.Background) $color refresh_colors } } grid .form.bg_color_l -sticky e -row $row grid .form.bg_color -row $row -column 1 incr row label .form.fg_color_l -text [ gettext "Foreground:" ] button .form.fg_color -command { set color [ tk_chooseColor -initialcolor $opt(OpenWindows.Foreground) ] if { $color != "" } { set opt(OpenWindows.Foreground) $color refresh_colors } } grid .form.fg_color_l -sticky e -row $row grid .form.fg_color -row $row -column 1 refresh_colors } "Icon*" { label .form.loc_l -text [ gettext "Location:" ] frame .form.loc radiobutton .form.loc.top -variable opt(OpenWindows.IconLocation) \ -value "top" -text [ gettext "Top" ] radiobutton .form.loc.bottom -variable opt(OpenWindows.IconLocation) \ -value "bottom" -text [ gettext "Bottom" ] radiobutton .form.loc.left -variable opt(OpenWindows.IconLocation) \ -value "left" -text [ gettext "Left" ] radiobutton .form.loc.right -variable opt(OpenWindows.IconLocation) \ -value "right" -text [ gettext "Right" ] grid .form.loc_l -sticky e -row $row grid .form.loc -row $row -column 1 pack .form.loc.top .form.loc.bottom .form.loc.left .form.loc.right -side left incr row label .form.flashcount_l -text [ gettext "Flash Count:" ] scale .form.flashcount -orient horizontal -length 150 -from 1 -to 20 \ -variable opt(OpenWindows.IconFlashCount) grid .form.flashcount_l -sticky e -row $row grid .form.flashcount -sticky w -row $row -column 1 } "Menu*" { label .form.drag_l -text [ gettext "Drag-Right Distance (pixels):" ] scale .form.drag -orient horizontal -length 150 -from 1 -to 50 \ -variable opt(OpenWindows.DragRightDistance) grid .form.drag_l -sticky e -row $row grid .form.drag -sticky w -row $row -column 1 incr row label .form.select_l -text [ gettext "SELECT Mouse Press:" ] frame .form.select radiobutton .form.select.default -variable opt(OpenWindows.SelectDisplaysMenu) \ -value "false" -text [ gettext "Selects Default" ] radiobutton .form.select.menu -variable opt(OpenWindows.SelectDisplaysMenu) \ -value "true" -text [ gettext "Displays Menu" ] pack .form.select.default .form.select.menu -side left grid .form.select_l -sticky e -row $row grid .form.select -sticky w -row $row -column 1 } "Mouse*" { if { $opt(tkolwmprops.acceleration) == 0 } { set opt(tkolwmprops.acceleration) 1 } if { $opt(tkolwmprops.accelerationThreshold) == 0 } { set opt(tkolwmprops.accelerationThreshold) 10 } label .form.accel_l -text [ gettext "Mouse Acceleration:" ] scale .form.accel -orient horizontal -length 150 -from 0.5 -to 10 -resolution 0.1 \ -variable opt(tkolwmprops.acceleration) grid .form.accel_l -sticky e -row $row grid .form.accel -sticky w -row $row -column 1 incr row label .form.accel_t_l -text [ gettext "Acceleration Threshold:" ] scale .form.accel_t -orient horizontal -length 150 -from 0 -to 25 \ -variable opt(tkolwmprops.accelerationThreshold) grid .form.accel_t_l -sticky e -row $row grid .form.accel_t -sticky w -row $row -column 1 incr row label .form.multi_l -text [ gettext "Multi-Click Timeout (sec/10):" ] scale .form.multi -orient horizontal -length 150 -from 2 -to 10 \ -variable opt(OpenWindows.MultiClickTimeout) grid .form.multi_l -sticky e -row $row grid .form.multi -sticky w -row $row -column 1 incr row label .form.vspace grid .form.vspace -sticky w -row $row incr row label .form.hand_l -text [ gettext "Mouse Buttons:" ] frame .form.hand radiobutton .form.hand.default -variable opt(tkolwmprops.leftHanded) \ -value "false" -text [ gettext "Normal" ] radiobutton .form.hand.menu -variable opt(tkolwmprops.leftHanded) \ -value "true" -text [ gettext "Left Handed" ] pack .form.hand.default .form.hand.menu -side left grid .form.hand_l -sticky e -row $row grid .form.hand -sticky w -row $row -column 1 } "Screen*" { label .form.saver_title -text [ gettext "SCREEN SAVER" ] -background white grid .form.saver_title -sticky we -row $row -columnspan 2 incr row label .form.saver_l -text [ gettext "Screen Saver:" ] frame .form.saver radiobutton .form.saver.disable -variable opt(tkolwmprops.screenSaver) \ -value "disable" -text [ gettext "Disable" ] radiobutton .form.saver.blank -variable opt(tkolwmprops.screenSaver) \ -value "blank" -text [ gettext "Blank" ] radiobutton .form.saver.logo -variable opt(tkolwmprops.screenSaver) \ -value "logo" -text [ gettext "Logo" ] pack .form.saver.disable .form.saver.blank .form.saver.logo -side left grid .form.saver_l -sticky e -row $row grid .form.saver -sticky w -row $row -column 1 incr row label .form.timeout_l -text [ gettext "Timeout (minutes):" ] scale .form.timeout -orient horizontal -length 150 -from 1 -to 60 \ -variable opt(tkolwmprops.screenSaverTimeout) grid .form.timeout_l -sticky e -row $row grid .form.timeout -sticky w -row $row -column 1 incr row label .form.vspace grid .form.vspace -sticky w -row $row incr row label .form.dpms_title -text [ gettext "ENERGY STAR (DPMS)" ] -background white grid .form.dpms_title -sticky we -row $row -columnspan 2 incr row label .form.dpms_l -text [ gettext "Energy Star:" ] frame .form.dpms radiobutton .form.dpms.disable -variable opt(tkolwmprops.dpms) \ -value "disable" -text [ gettext "Disable" ] radiobutton .form.dpms.enable -variable opt(tkolwmprops.dpms) \ -value "enable" -text [ gettext "Enable" ] pack .form.dpms.disable .form.dpms.enable -side left grid .form.dpms_l -sticky e -row $row grid .form.dpms -sticky w -row $row -column 1 incr row label .form.standby_l -text [ gettext "Standby (minutes):" ] scale .form.standby -orient horizontal -length 150 -from 1 -to 60 \ -variable opt(tkolwmprops.dpmsStandby) grid .form.standby_l -sticky e -row $row grid .form.standby -sticky w -row $row -column 1 incr row label .form.suspend_l -text [ gettext "Suspend (minutes):" ] scale .form.suspend -orient horizontal -length 150 -from 1 -to 60 \ -variable opt(tkolwmprops.dpmsSuspend) grid .form.suspend_l -sticky e -row $row grid .form.suspend -sticky w -row $row -column 1 incr row label .form.off_l -text [ gettext "Off (minutes):" ] scale .form.off -orient horizontal -length 150 -from 1 -to 60 \ -variable opt(tkolwmprops.dpmsOff) grid .form.off_l -sticky e -row $row grid .form.off -sticky w -row $row -column 1 } "Beep*" { label .form.beep_l -text [ gettext "Beep:" ] frame .form.beep radiobutton .form.beep.always -variable opt(OpenWindows.Beep) \ -value "always" -text [ gettext "Always" ] radiobutton .form.beep.notices -variable opt(OpenWindows.Beep) \ -value "notices" -text [ gettext "Notices Only" ] radiobutton .form.beep.never -variable opt(OpenWindows.Beep) \ -value "never" -text [ gettext "Never" ] pack .form.beep.always .form.beep.notices .form.beep.never -side left grid .form.beep_l -sticky e -row $row grid .form.beep -sticky w -row $row -column 1 incr row label .form.bell_volume_l -text [ gettext "Volume:" ] scale .form.bell_volume -orient horizontal -length 150 -from 1 -to 100 \ -variable opt(tkolwmprops.bellVolume) grid .form.bell_volume_l -sticky e -row $row grid .form.bell_volume -sticky w -row $row -column 1 incr row label .form.bell_pitch_l -text [ gettext "Pitch:" ] scale .form.bell_pitch -orient horizontal -length 150 -from 1 -to 5000 \ -variable opt(tkolwmprops.bellPitch) grid .form.bell_pitch_l -sticky e -row $row grid .form.bell_pitch -sticky w -row $row -column 1 incr row label .form.bell_duration_l -text [ gettext "Duration:" ] scale .form.bell_duration -orient horizontal -length 150 -from 1 -to 1000 \ -variable opt(tkolwmprops.bellDuration) grid .form.bell_duration_l -sticky e -row $row grid .form.bell_duration -sticky w -row $row -column 1 } "Misc*" { label .form.setinput_l -text [ gettext "Set Input Area:" ] frame .form.setinput radiobutton .form.setinput.always -variable opt(OpenWindows.SetInput) \ -value "select" -text [ gettext "Click SELECT" ] radiobutton .form.setinput.notices -variable opt(OpenWindows.SetInput) \ -value "followmouse" -text [ gettext "Move Pointer" ] pack .form.setinput.always .form.setinput.notices -side left grid .form.setinput_l -sticky e -row $row grid .form.setinput -sticky w -row $row -column 1 incr row label .form.edgemove_l \ -text [ gettext "Threshold when Moving Windows \nOver the Screen Edge:" ] \ -justify right scale .form.edgemove -orient horizontal -length 150 -from 0 -to 1000 \ -variable opt(OpenWindows.EdgeMoveThreshold) grid .form.edgemove_l -sticky e -row $row -pady 6m grid .form.edgemove -sticky w -row $row -column 1 incr row label .form.opts_l -text [ gettext "Another Options:" ] frame .form.opts checkbutton .form.opts.focus \ -text [ gettext "Raise Window when it is Focused" ] \ -variable opt(OpenWindows.AutoRaise) \ -onvalue true -offvalue false checkbutton .form.opts.resize \ -text [ gettext "Raise Window when it is Resized" ] \ -variable opt(OpenWindows.RaiseOnResize) \ -onvalue true -offvalue false checkbutton .form.opts.move \ -text [ gettext "Raise Window when it is Moved" ] \ -variable opt(OpenWindows.RaiseOnMove) \ -onvalue true -offvalue false checkbutton .form.opts.transient \ -text [ gettext "Keep Transient Window above its Owner" ] \ -variable opt(OpenWindows.KeepTransientsAbove) \ -onvalue true -offvalue false checkbutton .form.opts.movegeom \ -text [ gettext "Show Geometry when Moving Window" ] \ -variable opt(OpenWindows.ShowMoveGeometry) \ -onvalue true -offvalue false checkbutton .form.opts.resizegeom \ -text [ gettext "Show Geometry when Resizing Window" ] \ -variable opt(OpenWindows.ShowResizeGeometry) \ -onvalue true -offvalue false checkbutton .form.opts.servergrabs \ -text [ gettext "Grab the Server while Menus are Up" ] \ -variable opt(OpenWindows.ServerGrabs) \ -onvalue true -offvalue false pack .form.opts.focus .form.opts.resize .form.opts.move \ .form.opts.transient .form.opts.movegeom .form.opts.resizegeom \ .form.opts.servergrabs \ -side top -anchor w grid .form.opts_l -sticky ne -row $row grid .form.opts -sticky w -row $row -column 1 } } label .form.vspace2 grid .form.vspace2 -sticky w -row 998 frame .form.commands button .form.commands.apply -text [ gettext "Apply" ] -command { apply } button .form.commands.reset -text [ gettext "Reset" ] -command { reset } pack .form.commands.apply .form.commands.reset -side left -padx 3m grid .form.commands -row 999 -columnspan 999 pack .form -fill both -expand true -after .category -ipadx 4m -ipady 2m set_sensitivity } ################################################################ # The main routine. set no_window "false" while { 0 < [ llength $argv ] } { switch -- [ lindex $argv 0 ] { "-f" { set Xdefaults [ lindex $argv 1 ] set argv [ lreplace $argv 0 1 ] } "-l" { set no_window "true" set argv [ lreplace $argv 0 0 ] } default { puts "tkolwmprops: no such option: [ lindex $argv 0 ]" set argv [ lreplace $argv 0 0 ] } } } if { $no_window } { parse_resources $Xdefaults exit 0 } wm title . $title wm iconname . $program_name frame .category label .category.label -text [ gettext "Category:" ] tk_optionMenu .category.menu category \ [ gettext "Color" ] [ gettext "Icons" ] [ gettext "Menus" ] \ [ gettext "Mouse Settings" ] [ gettext "Screen Saver" ] \ [ gettext "Beep" ] [ gettext "Miscellaneous" ] trace variable category w { show_panel } pack .category.label .category.menu -side left pack .category -fill x -expand false -pady 2m show_panel