#!/bin/zsh -f VERSION='0.3.0' # Feb 18 2005 # Revised for 10.5 on December 30 2007 # Figure out where we are running this from: WeAreHere=$(dirname $0) # Define what the dialog should be like # Take a look at Pashua's Readme file for more info on the syntax ############################################################# ########## Interface ############################# ############################################################# # All of this gets put into a single variable called conf: conf=" # Set transparency: 0 is transparent, 1 is opaque tx.transparency=0.95 # Heavy metal overdose: # appearance=metal # Set window title tx.windowtitle = X11.app Customizations #img.type = image #img.path = "$(dirname $WeAreHere)"/Resources/zsh_on_osx.png #img.maxheight = 100 #################### # Introductory text: #################### tx.type=text tx.width = 1050 tx.text = X11.app Customization Assistant.[return][return]This interface assists the user in changing settings that govern the behavior of X11. The individual user can specify whether focus follows mouse behavior (emulating canonical X11 unix systems) should be set, whether the user should be warned on logout if X11 is running, whether X11 should be run as a dockless and menuless application in the background, as so forth. An option to restore all default behaviors is included.[return] # ############################################################### # # Ask if X11.app should be included in the Login startup items: # ############################################################### # # Define radiobuttons # rb.type = popup # rb.width = 300 # rb.label = Add X11.app to my Login startup items? # rb.option = Start X11 when I log in. # rb.option = Do not start X11 when I log in. # rb.option = Leave everything the way it is now. # rb.default = Leave everything the way it is now. ############################################################### # Ask if xterm should be started automatically: ############################################################### tx2.type=text tx2.width = 1050 tx2.text = X11.app starts an xterm every time X11.app starts up. If you find this behavior to be annoying, you can prevent xterm from starting automatically. # Define radiobuttons rb2.type = popup rb2.width = 300 rb2.label = Should xterm be started automatically? rb2.option = Prevent xterm from starting automatically. rb2.option = Restore xterm to starting automatically. rb2.option = Leave everything the way it is now. rb2.default = Leave everything the way it is now. ############################################################### # Ask if Warning for Quitting X11.app should be turned off: ############################################################### tx3.type=text tx3.width = 1050 tx3.text = X11.app has a 'quit alert' warning that pops up, preventing a clean logout. This can be turned off. # Define radiobuttons rb3.type = popup rb3.width = 300 rb3.label = Get rid of the popup Quit Alert for X11? rb3.option = Get rid of it. rb3.option = Restore it. rb3.option = Leave everything the way it is now. rb3.default = Leave everything the way it is now. ############################################################### # Ask if Focus Follows Mouse in X11.app should be turned on: ############################################################### tx4.type=text tx4.width = 1050 tx4.text = X11.app can be set to focus-follows-mouse and click-through behavior that is typical of standard X11 behavior. # Define radiobuttons rb4.type = popup rb4.width = 300 rb4.label = Use Focus Follows Mouse in X11? rb4.option = Turn on Focus Follows Mouse. rb4.option = Turn off Focus Follows Mouse. rb4.option = Leave everything the way it is now. rb4.default = Leave everything the way it is now. ############################################################### # Ask if X11.app should go Dockless: ############################################################### tx5.type=text tx5.width = 1050 tx5.text = X11.app can be launched silently and without any trace in the dock or menu bar. (If you do this you will lose the ability to use the X11 menu and will have to launch X11 apps from the command line only.) PLEASE SAVE any work in running X11 applications prior to answering yes, as we need to kill the X-server before starting. No need to do this if you anser Leave It Alone. # Define radiobuttons rb5.type = popup rb5.width = 300 rb5.label = Shall we make X11 Dockless (and Menuless)? rb5.option = Yes, make X11 Dockless. rb5.option = No, restore X11 to the Dock. rb5.option = Leave everything the way it is now. rb5.default = Leave everything the way it is now. # ############################################################### # # Ask if DISPLAY should be programmed to accommodate multiple # # simultaneous X11.app users: # ############################################################### # tx6.type=text # tx6.width = 1050 # tx6.text = Set DISPLAY variable to allow X-windows programs to run from Terminal.app and iTerm.app. Fast User Switching creates the problem of multiple simultaneous instances of X11.app running and how to find the appropriate DISPLAY value to assign to each. Choosing "Yes" solves this problem. # # # # Define radiobuttons # rb6.type = popup # rb6.width = 300 # rb6.label = Set up DISPLAY for single or multiple users of X11.app? # rb6.option = Yes, create the appropriate files. # rb6.option = No, leave everything the way it is now. # rb6.default = No, leave everything the way it is now. cn.type=cancelbutton cn.label=Cancel "; # end of conf pashua_run "$conf" ############################################################# ########## Begin Actual Program ########################### ############################################################# # Check to see if we are running 10.5 if [[ $(sw_vers -productVersion) < 10.5 ]]; then print "\e[1m $0 is incompatable with the X11 on < 10.5" print " Try invoking \"customize_x11_10.4\" \e[0m " return 420 else : # Good to go fi ######################################################## ######### Check for Apple's X11.app ########### ######################################################## # Find out if we have Apple's X11. If we don't, quit now. if [[ -d /usr/X11/X11.app ]];then PATH_TO_X11='/usr/X11/X11.app' elif [[ -d /usr/X11 && -d /Applications/Utilities/X11.app ]];then PATH_TO_X11='/Applications/Utilities/X11.app' else print "Can't locate Apple's X11.app" return 100 fi ######################################################## ### Nix the start up of an xterm on login? ########### ######################################################## if [[ $rb2 == 'Prevent xterm from starting automatically.' ]];then defaults write org.x.X11_launcher app_to_run /usr/X11/bin/xlsclients defaults write org.x.X11 app_to_run /usr/X11/bin/xlsclients print "To get the xterm back, issue" print "\e[1m defaults write org.x.X11_launcher app_to_run /usr/X11/bin/xterm \e[0m " print " and " print "\e[1m defaults write org.x.X11 app_to_run /usr/X11/bin/xterm \e[0m " elif [[ $rb2 == 'Restore xterm to starting automatically.' ]];then defaults write org.x.X11_launcher app_to_run /usr/X11/bin/xterm defaults write org.x.X11 app_to_run /usr/X11/bin/xterm fi ######################################################## ### Nix the Quit Alert warning on logout? ########### ######################################################## if [[ $rb3 == 'Get rid of it.' ]];then defaults write com.apple.x11 no_quit_alert true defaults write org.x.X11 no_quit_alert true defaults write org.x.X11_launcher no_quit_alert true print ""; print "writing 'no_quit_alert true' to com.apple.x11.plist" elif [[ $rb3 == 'Restore it.' ]];then defaults write com.apple.x11 no_quit_alert false defaults write org.x.X11 no_quit_alert false defaults write org.x.X11_launcher no_quit_alert false print ""; print "writing 'no_quit_alert false' to com.apple.x11.plist" else print ""; print "leaving com.apple.x11.plist alone" fi ######################################################## ### Restore canonical window focus behavior? ######## ######################################################## function change_ffm { defaults write com.apple.x11 wm_ffm $BOOL defaults write org.x.X11_launcher wm_ffm $BOOL defaults write org.x.X11 wm_ffm $BOOL defaults write com.apple.x11 wm_click_through -bool $BOOL defaults write org.x.X11_launcher wm_click_through -bool $BOOL defaults write org.x.X11 wm_click_through -bool $BOOL } if [[ $rb4 == 'Turn on Focus Follows Mouse.' ]];then BOOL='true' change_ffm BOOL='' elif [[ $rb4 == 'Turn off Focus Follows Mouse.' ]];then BOOL='false' change_ffm BOOL='' else BOOL='' print ""; print "leaving com.apple.x11.plist alone" fi ######################################################## ### Get rix of X11.app's Dock Icon and menu bar? ##### ######################################################## function RemoveDockIcon { killall X11 # Find the lenght of the file Info.plist lines=$( wc -l $PATH_TO_X11/Contents/Info.plist | awk '{ print $1 }' ) # Subtract two from this result twofewerlines=$((lines - 2)) # Get all but the last two lines of the file command head -n $twofewerlines $PATH_TO_X11/Contents/Info.plist >| /tmp/X11_Info.plist # Back up the original file sudo gzip -f $PATH_TO_X11/Contents/Info.plist # Append new lines to the end of the trunctated file command echo " LSUIElement" >> /tmp/X11_Info.plist command echo " 1 " >> /tmp/X11_Info.plist command echo " " >> /tmp/X11_Info.plist command echo " " >> /tmp/X11_Info.plist # copy it back sudo cp /tmp/X11_Info.plist $PATH_TO_X11/Contents/Info.plist } function RestoreDockIcon { killall X11 # Find the lenght of the file Info.plist lines=$( wc -l $PATH_TO_X11/Contents/Info.plist | awk '{ print $1 }' ) # Subtract two from this result twofewerlines=$((lines - 2)) # Get all but the last two lines of the file command head -n $twofewerlines $PATH_TO_X11/Contents/Info.plist >| /tmp/X11_Info.plist # Back up the original file sudo gzip -f $PATH_TO_X11/Contents/Info.plist # Append new lines to the end of the trunctated file command echo " LSUIElement" >> /tmp/X11_Info.plist command echo " 0 " >> /tmp/X11_Info.plist command echo " " >> /tmp/X11_Info.plist command echo " " >> /tmp/X11_Info.plist # copy it back sudo cp /tmp/X11_Info.plist $PATH_TO_X11/Contents/Info.plist } if [[ $rb5 == 'Yes, make X11 Dockless.' ]];then RemoveDockIcon print "X11 removed from the Dock." elif [[ $rb5 == 'No, restore X11 to the Dock.' ]]; then RestoreDockIcon print "X11 restored to the Dock." else print "Not changing X11's dock behavior." fi ############################################################################### # # DISPLAY variable in startup scripts for bash, zsh and tcsh # ############################################################################### print "\e[1m DO NOT set the DISPLAY environment variable for OS 10.5+ \e[0m ." ############ END #############################