--- WindowMaker/Defaults/WindowMaker.in +++ WindowMaker/Defaults/WindowMaker.in @@ -1,5 +1,6 @@ { SmoothWorkspaceBack = NO; + CirculateRaise = YES; PopupSwitchMenu = NO; MenuStyle = normal; DisableMiniwindows = NO; @@ -12,6 +13,8 @@ "~/GNUstep/Library/Icons", "#pkgdatadir#/Icons", "#pkgdatadir#/Pixmaps", + "/usr/X11R6/share/icons/png/hicolor/all", + "/usr/X11R6/share/icons/png/locolor/all", "/usr/X11R6/include/X11/pixmaps", "~/GNUstep/Library/WindowMaker/Pixmaps", "/usr/share/icons", @@ -23,6 +26,8 @@ "~/GNUstep/Library/WindowMaker/Backgrounds", "#pkgdatadir#/Pixmaps", "#pkgdatadir#/Backgrounds", + "/usr/X11R6/share/icons/png/hicolor/all", + "/usr/X11R6/share/icons/png/locolor/all", "/usr/X11R6/include/X11/pixmaps", "/usr/local/share/pixmaps", "/usr/share/pixmaps" @@ -31,7 +36,7 @@ IconSize = 64; FocusMode = manual; DisableWSMouseActions = NO; - MouseLeftButtonAction = SelectWindows; + MouseLeftButtonAction = OpenApplicationsMenu; MouseMiddleButtonAction = OpenWindowListMenu; MouseRightButtonAction = OpenApplicationsMenu; MouseWheelAction = None; --- dockit +++ dockit @@ -0,0 +1,247 @@ +#!/bin/sh +# Only run the following line once \ +exec wish -f $0 $@ + +########################################## +#Copyright 1998 Kenneth W. Persinger Jr. # +# Written for WindowMaker # +########################################## + + +# You can add the full path for Xprop here. +set xprop xprop + +############################### +# DO NOT EDIT BELOW THIS LINE # +############################### +global xprop; +global instance;set instance "" +global class;set class "" +global command; set command "" +global Version;set Version V1.2 + + + global Version + global instance + global class + global command + wm withdraw . + wm group . . + + toplevel .dockit -class Dockit + wm group .dockit .dockit + wm command .dockit "$argv0 $argv" + wm iconname .dockit "Dockit ${Version}" + wm protocol .dockit WM_DELETE_WINDOW {exit} + wm focusmodel .dockit passive + wm title .dockit "Dockit ${Version}" + wm geometry .dockit 309x157+440+412 + wm maxsize .dockit 1265 994 + wm minsize .dockit 1 1 + wm overrideredirect .dockit 0 + wm resizable .dockit 0 0 + wm deiconify .dockit + + label .dockit.msgbar \ + -anchor nw -borderwidth 1 -justify left -relief raised \ + -text "" + label .dockit.instlbl \ + -borderwidth 1 -relief raised -text Instance + label .dockit.cllbl \ + -borderwidth 1 -relief raised -text Class + label .dockit.comlbl \ + -borderwidth 1 -relief raised -text Command + entry .dockit.instent -textvariable instance + entry .dockit.clent -textvariable class + entry .dockit.coment -textvariable command + button .dockit.create \ + -padx 9 -pady 3 -text {Create Icon} -command {docreate} + button .dockit.exit \ + -padx 9 -pady 3 -text Quit -command exit + button .dockit.grab \ + -padx 9 -pady 3 -text Grab -command {dograb} + button .dockit.help \ + -padx 9 -pady 3 -text Help -command {dohelp} + ################### + # SETTING GEOMETRY + ################### + place .dockit.msgbar \ + -x 5 -y 120 -width 296 -height 33 -anchor nw -bordermode ignore + place .dockit.instlbl \ + -x 5 -y 5 -width 76 -height 23 -anchor nw -bordermode ignore + place .dockit.cllbl \ + -x 5 -y 30 -width 76 -height 23 -anchor nw -bordermode ignore + place .dockit.comlbl \ + -x 5 -y 55 -width 76 -height 23 -anchor nw -bordermode ignore + place .dockit.instent \ + -x 85 -y 5 -width 216 -height 22 -anchor nw -bordermode ignore + place .dockit.clent \ + -x 85 -y 30 -width 216 -height 22 -anchor nw -bordermode ignore + place .dockit.coment \ + -x 85 -y 55 -width 216 -height 22 -anchor nw -bordermode ignore + place .dockit.create \ + -x 5 -y 80 -width 77 -height 36 -anchor nw -bordermode ignore + place .dockit.exit \ + -x 230 -y 80 -width 72 -height 36 -anchor nw -bordermode ignore + place .dockit.grab \ + -x 80 -y 80 -width 77 -height 36 -anchor nw -bordermode ignore + place .dockit.help \ + -x 155 -y 80 -width 77 -height 36 -anchor nw -bordermode ignore +############ +# Bindings # +############ + bind all {message ""} + bind .dockit.instlbl {message "Instance name goes here. +(the 1st string of WM_CLASS)"} + bind .dockit.instent {message "Instance name goes here. +(the 1st string of WM_CLASS)"} + bind .dockit.cllbl {message "Class name goes here. +(the 2nd string of WM_CLASS)"} + bind .dockit.clent {message "Class name goes here. +(the 2nd string of WM_CLASS)"} + bind .dockit.comlbl {message "The command to execute goes here. +(all of WM_COMMAND)"} + bind .dockit.coment {message "The command to execute goes here. +(all of WM_COMMAND)"} + bind .dockit.create {message "Create you custom AppIcon."} + bind .dockit.exit {message "Exit Dockit!"} + bind .dockit.help {message "Help with creating AppIcons, +and for these commands."} + bind .dockit.grab {message "Grab AppInfo from a running App."} + + +################### +# Actual Code # +################### + +proc message {message} { + .dockit.msgbar configure -text $message +} + +proc docreate {} { + global Version + global instance + global class + global command + + if {$command == ""} { + tk_dialog .error "DockIt ${Version}: ERROR" \ + "You must supply a command line. Otherwise your icon would do nothing!" \ + "" "" "Doh!" + } else { + set insttmp $instance + set classtmp $class + set commandtmp $command + + if {$insttmp == ""} { set insttmp "dockit" } + if {$classtmp == ""} { set classtmp "DockedApp" } + + toplevel .$insttmp -class $classtmp + wm command .$insttmp "$commandtmp" + wm group .$insttmp .$insttmp + label .$insttmp.l1 -text " +Great! Your new App-Icon should be finished now. +once you have dragged it to the Dock, Click Finish. +If your Icon doesn't Dock, or does not appear, +Try again. If problems persist, see Dockit's Help." + button .$insttmp.b1 -text "Finish" -command "destroy .$insttmp" + pack .$insttmp.l1 + pack .$insttmp.b1 + wm title .$insttmp "Dockit ${Version}: Confirmation" + } +} + +proc dohelp {} { + global Version + +set HLPTXT { Dockit V1.2 + +General Info: + + Dockit is a tool designed to provide the ability to Dock + poorly coded programs within WindowMaker. + + This is not a 100% accurate solution. It was not designed to be. + It will however, generate a dockable icon 99% of the time. + for that other 1%, you will need to edit by hand. + +Troubleshooting: + +Error: 'window name starts with an upper-case letter': + + This is a limitation of Tcl/Tk. + window/pathnames cannot start with an uppercase letter. + This behavior is most noticable in Netscape's Navigator. + It's instance is 'Navigator' + A work-around to this limitation, is to double-define your App + settings. (ex:'navigator', and 'Navigator') + + +Error: couldn't execute "xprop": no such file or directory + + This means that /usr/X11R6/bin (or its equivilent) + is not defined in your path. + You must add this to your path. + + + +AppIcon does not appear as it should: + + This could happen for a number of reasons. + A: You have NoAppIcon defined for that particular App. + B: One word: El Ni~no + + + +App Closes, but Dots do not appear/ Cannot remove Icon from the Dock: + + This is the result of a VERY poorly coded App. + As far as WIndowMaker can tell, the program is still running. + The only real fix for this, is CTRL + ALT + BACKSPACE + +} + + + toplevel .userhelp -class Dockit + wm group .userhelp .dockit + wm iconname .userhelp "Dockit HELP" + wm focusmodel .userhelp passive + wm geometry .userhelp 456x635 + wm maxsize .userhelp 1265 1265 + wm minsize .userhelp 1 1 + wm overrideredirect .userhelp 0 + wm resizable .userhelp 1 1 + wm deiconify .userhelp + wm title .userhelp "Dockit ${Version}: HELP" + label .userhelp.text \ + -anchor nw -justify left -borderwidth 1 \ + -text $HLPTXT + place .userhelp.text \ + -x 0 -y 0 -anchor nw -bordermode ignore + + + +} + +proc dograb {} { + global xprop + global class + global instance + global command + + catch "open /tmp/xprop1 w+" m1 + exec ${xprop} >@ $m1 + seek $m1 0 + set tmpmsg [read $m1] + set tmpmsg [split $tmpmsg \n] + set tclass [lindex $tmpmsg [lsearch -glob $tmpmsg *WM_CLASS*]] + set tclass [split $tclass ,] + set class [string trim [lindex $tclass 1] \ \"] + set instance [string tolower [string trim [lindex [lindex $tclass 0] 2] \ \"]] + set tcom [lindex $tmpmsg [lsearch -glob $tmpmsg *WM_COMMAND*]] + set tcom [split [lindex $tcom 2] \,] + set tcom [split [join $tcom] \"] + set command [join [join $tcom]] + close $m1 +} + --- util/wmaker.inst.in +++ util/wmaker.inst.in @@ -312,42 +312,43 @@ } wmaker_found=0 -for xinit in .xinitrc .Xclients .xsession; do - test ! -f "$HOME/$xinit" && continue - res="`grep wmaker $HOME/$xinit`" - if test "x$res" != x; then - wmaker_found=1 - break - fi -done -if test $wmaker_found = 1; then - echo "Found Window Maker to already be your default window manager." - show_end_message - exit 0 -fi +#for xinit in .xinitrc .Xclients .xsession; do +# test ! -f "$HOME/$xinit" && continue +# res="`grep wmaker $HOME/$xinit`" +# if test "x$res" != x; then +# wmaker_found=1 +# break +# fi +#done + +#if test $wmaker_found = 1; then +# echo "Found Window Maker to already be your default window manager." +# show_end_message +# exit 0 +#fi trap "show_end_message;exit" 2 -echo -echo "Now the .xinitrc, .Xclients or .xsession script must be updated so that" -echo "it calls wmaker when you start an X session." -echo "Type the name of the file that must be changed (normally .xinitrc)." -echo "If the file already exists, it will be backed up with a .old.$DATE " -echo "extension" -echo "If you want to edit it by hand, hit -C now." -read file - -if test "x$file" = "x"; then - echo "Using .xinitrc as a default value" - file=.xinitrc -fi - -if [ -f $USERDIR/$file ]; then - mv $USERDIR/$file $USERDIR/$file.old.$DATE -fi +#echo +#echo "Now the .xinitrc, .Xclients or .xsession script must be updated so that" +#echo "it calls wmaker when you start an X session." +#echo "Type the name of the file that must be changed (normally .xinitrc)." +#echo "If the file already exists, it will be backed up with a .old.$DATE " +#echo "extension" +#echo "If you want to edit it by hand, hit -C now." +#read file + +#if test "x$file" = "x"; then +# echo "Using .xinitrc as a default value" +# file=.xinitrc +#fi + +#if [ -f $USERDIR/$file ]; then +# mv $USERDIR/$file $USERDIR/$file.old.$DATE +#fi -make_script $USERDIR/$file +# make_script $USERDIR/$file show_end_message