This is the mail archive of the cygwin-xfree@cygwin.com mailing list for the Cygwin XFree86 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Bug in startxwin.bat after installing with setup.exe in win98SE


--- Jehan <nahor@bravobrava.com> wrote:
> I forgot to check if the batch file already existed or not. Attached is 
> the corrected script.
> 
> 	Jehan
> > #!/bin/sh
> 
> BATCH_FILE=/usr/X11R6/bin/startxwin.bat
> 
> if [ ! -f ${BATCH_FILE} ]; then
> 
>   ################################
>   # First part of the batch file
>   cat << EOF > $BATCH_FILE
> @echo off
> SET DISPLAY=127.0.0.1:0.0
> 
> 
> REM 
> REM The path in the CYGWIN_ROOT environment variable assignment assume
> REM that Cygwin is installed in a directory called 'cygwin' in the root
> REM directory of the current drive.  You will only need to modify
> REM CYGWIN_ROOT if you have installed Cygwin in another directory.  For
> REM example, if you installed Cygwin in \foo\bar\baz\cygwin, you will
> need 
> REM to change \cygwin to \foo\bar\baz\cygwin.
> REM 
> REM This batch file will almost always be run from the same drive (and
> REM directory) as the drive that contains Cygwin/XFree86, therefore you
> will
> REM not need to add a drive letter to CYGWIN_ROOT.  For example, you do
> REM not need to change \cygwin to c:\cygwin if you are running this
> REM batch file from the C drive.
> REM 
> 
> EOF
> 
>   ################################
>   # Get the DOS path to cygwin
>   echo SET CYGWIN_ROOT=`cygpath -w /` >> $BATCH_FILE
>   
>   ################################
>   # Second part of the batch file
>   cat << EOF >> $BATCH_FILE
> 
> SET PATH=.;%CYGWIN_ROOT%\bin;%CYGWIN_ROOT%\usr\X11R6\bin;%PATH%
> 
> REM
> REM Cleanup after last run.
> REM
> 
> if not exist %CYGWIN_ROOT%\tmp\.X11-unix\X0 goto CLEANUP-FINISH
> attrib -s %CYGWIN_ROOT%\tmp\.X11-unix\X0
> del %CYGWIN_ROOT%\tmp\.X11-unix\X0
> 
> :CLEANUP-FINISH
> if exist %CYGWIN_ROOT%\tmp\.X11-unix rmdir %CYGWIN_ROOT%\tmp\.X11-unix
> 
> 
> REM
> REM Startup the X Server, the twm window manager, and an xterm.
> REM 
> REM Notice that the window manager and the xterm will wait for
> REM the server to finish starting before trying to connect; the
> REM error "Cannot Open Display: 127.0.0.1:0.0" is not due to the
> REM clients attempting to connect before the server has started, rather
> REM that error is due to a bug in some versions of cygwin1.dll.  Upgrade
> REM to the latest cygwin1.dll if you get the "Cannot Open Display"
> error.
> REM See the Cygwin/XFree86 FAQ for more information:
> REM http://xfree86.cygwin.com/docs/faq/
> REM
> REM The error "Fatal server error: could not open default font 'fixed'"
> is
> REM caused by using a DOS mode mount for the mount that the
> Cygwin/XFree86
> REM fonts are accessed through.  See the Cygwin/XFree86 FAQ for more 
> REM information:
> REM
>
http://xfree86.cygwin.com/docs/faq/cygwin-xfree-faq.html#q-error-font-eof
> REM
> 
> REM
> REM Use the /B switch only when we can positively confirm that the OS
> REM is Windows NT/2000.  Do not use the switch in any other case.  This
> REM should work fine, as it assumes we cannot use /B, except when a
> certain
> REM criterion is met.  A previous version of this batch file assumed
> that
> REM we could use /B, except when some criterion was met; needless to
> say,
> REM that didn't work.
> REM 
> 
> if "%OS%" == "Windows_NT" goto USE-B-SWITCH
> 
> REM Windows 95/98/Me
> echo startxwin.bat - Starting on Windows 95/98/Me
> 
> REM Startup the X Server.
> 
> start XWin
> 
> REM Startup an xterm, using bash as the shell.
> 
> run xterm -sl 1000 -sb -ms red -fg gray -bg black -e /usr/bin/bash
> 
> REM Startup the twm window manager.
> 
> run twm
> 
> goto END
> 
> 
> REM
> REM Use the /B switch.  This starts the specified process in the
> background;
> REM in other words, it does not cause a new Command Prompt window to be
> REM opened for each 'start' command.
> REM
> 
> :USE-B-SWITCH
> 
> REM Windows NT/2000
> echo startxwin.bat - Starting on Windows NT/2000
> 
> REM Startup the X Server.
> 
> start XWin
> 
> REM Startup an xterm, using bash as the shell.
> run xterm -sl 10000 -sb -ms red -fg gray -bg black -e /usr/bin/bash
> 
> REM Startup the twm window manager.
> 
> run twm
> 
> :END
> 
> 
> REM Set a background color to comply with FCC regulations :)
> 
> run xsetroot -solid aquamarine4
> EOF
> 
>   ################################
>   # Convert the file to dos format
>   # and update the permission
>   u2d $BATCH_FILE
>   chmod 755 $BATCH_FILE
> 
> fi

Jehan,

You still have the chicken-and-the egg issue.  How is a user going to
startxwin from a console window if /usr/X11R6/bin is not in their path? 
Obviously, if the user installs these packages, they want to be able to
access them.  The answer to this is to make 2 scripts that get installed
in the /etc/profile.d directory by the XFree86-base package.  One is for
the tcsh/csh users and the other is for the bash/ash/zsh users.  In these
two scripts we establish the following:

1)Add /usr/X11R6/bin to the $PATH
2)Resolve the new environmental CYGWIN_X_ROOT by using the method you
specified above.

Then have the various startxwin scripts employ CYGWIN_X_ROOT, but strip
the  PATH setting from them.  This way you avoid multiple instances of the
XFree directories in your path.  So what about the .bat file you say? 
Easy, just have it run bash - which then executes the xfree script in
/etc/profile.d, followed by the script startxwin.sh.  So my recommendation
is to examine the openssl.csh and openssl.sh scripts in /etc/profile.d for
some examples.  You can also look in /etc/profile.d on linux.

There are many reasons why I like this method, most all of them are state
above.  I think the main one that isn't stated is that it is nice to have
all the configuration stuff under /etc.

I know we have a difference of opinion when it come to Rootless mode, but
I'm sure you can see the logic in my proposal.  If you'd rather me write
up the scripts, then I will.  However, since it is your idea, I don't want
to steal your show.

Cheers,
Nichola

__________________________________________________
Do You Yahoo!?
Yahoo! Autos - Get free new car price quotes
http://autos.yahoo.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]