[patch] option for vncserver to allow more traditional exitin g of X

Ryan Hayle ryan "at" savvynet.com
Thu, 06 Sep 2001 23:59:57 +0000


Funny, I was -just- trying to figure out what was wrong with VNC that it
-wasn't- doing this.  Out of curiosity, what could possibly be the point of
not exiting when the Xsession terminates like any normal X server?  I can't
think of any possible reason for this.
Anyways, this seems a better solution than mine, which was to put 'vncserver
-kill :1' at the end of my .Xsession file, and always start the server on
display 1!  I hope this functionality gets integrated into the main VNC
source tree!

Ryan


> -----Original Message-----
> From: Richard L. Hamilton [mailto:rlhamil "at" mindwarp.smart.net]
> Sent: Tuesday, 04 September, 2001 08:31
> To: vnc-list "at" uk.research.att.com
> Subject: [patch] option for vncserver to allow more 
> traditional exiting
> of X
> 
> 
> The attached patch adds a -wait option to the (Unix) vncserver
> script, for those who wish exit from twm, CDE logout, etc. to
> cause Xvnc to be terminated (and its client(s), too).  The vncserver
> script itself also does not exit until then if the -wait 
> option is used.
> 
> For this to work, the $HOME/.vnc/xstartup script _must_ have
> as its last line whatever invokes the window manager (or whatever)
> that one will exit eventually, _without_ a terminating 
> ampersand ("&").
> That is, the command to wait on must not be backgrounded.
> 
> If one doesn't already have a $HOME/.vnc/xstartup file, the changes
> will also cause the twm line to have (without -wait) or not 
> have (with -wait)
> the terminating ampersand put in.  Of course, it could be left off and
> it probably wouldn't matter anyway, since (without -wait) the 
> command in
> vncserver that invokes $HOME/.vnc/xstartup does so in background.
> 
> Since I'm presently using CDE, instead of "twm", my xstartup file ends
> with:
> 
> test -x /etc/dt/config/Xsetup || /usr/dt/config/Xsetup
> /usr/dt/bin/Xsession
> 
> which seems to be taking care of everything except the definitions of
> the copy/paste keys.  In particular, logging out of CDE 
> causes dtsession
> to terminate, which in turn causes the Xsession script to 
> exit, and with
> the new -wait option, causes Xvnc to be killed.   Without -wait (or
> in the original), the first logout attempt would go to the 
> correct dtsession,
> but killing it wouldn't affect the server or the CDE window manager.
> Subsequent attempts would (when using the viewer while 
> sitting at a local
> CDE desktop) communicate with another instance of dtsession 
> altogether;
> presumably if it weren't running, the exit attempt would fail with no
> ToolTalk client listening for the corresponding message.
> 
> Anyway, anyone else think this -wait option is useful?  AFAIK, without
> using it, it doesn't break any kind of compatibility.  And with it,
> one can get the sort of behavior that I (and others I stumbled across
> searching Usenet prior to finding this mailing list) seem to want.
> 
> If it is useful, someone more comfortable with perl than I am might
> wish to pretty it up a bit; my concern was with getting the desired
> effect with the least amount of changes, not with Good Perl Scripting
> Practices.
> 
> -- 
> ftp> get |fortune
> 377 I/O error: smart remark generator failed
> 
> Bogonics: the primary language inside the Beltway
> 
> mailto:rlhamil "at" mindwarp.smart.net  http://www.smart.net/~rlhamil
> *** vncserver.orig	Tue Sep  4 08:38:53 2001
> --- vncserver	Tue Sep  4 08:40:34 2001
> ***************
> *** 39,51 ****
>   $vncUserDir = "$ENV{HOME}/.vnc";
>   $xauthorityFile = "$ENV{HOME}/.Xauthority";
>   
> - $defaultXStartup
> -     = ("#!/bin/sh\n\n".
> -        "xrdb \$HOME/.Xresources\n".
> -        "xsetroot -solid grey\n".
> -        "xterm -geometry 80x24+10+10 -ls -title 
> \"\$VNCDESKTOP Desktop\" &\n".
> -        "twm &\n");
> - 
>   chop($host = `uname -n`);
>   
>   
> --- 39,44 ----
> ***************
> *** 52,63 ****
>   # Check command line options
>   
>   
> &ParseOptions("-geometry",1,"-depth",1,"-pixelformat",1,"-name
> ",1,"-kill",1,
> ! 	      "-help",0,"-h",0,"--help",0);
>   
>   &Usage() if ($opt{'-help'} || $opt{'-h'} || $opt{'--help'});
>   
>   &Kill() if ($opt{'-kill'});
>   
>   # Uncomment this line if you want default geometry, depth 
> and pixelformat
>   # to match the current X display:
>   # &GetXDisplayDefaults();
> --- 45,70 ----
>   # Check command line options
>   
>   
> &ParseOptions("-geometry",1,"-depth",1,"-pixelformat",1,"-name
> ",1,"-kill",1,
> ! 	      "-help",0,"-h",0,"--help",0,"-wait",0);
>   
>   &Usage() if ($opt{'-help'} || $opt{'-h'} || $opt{'--help'});
>   
>   &Kill() if ($opt{'-kill'});
>   
> + if ($opt{'-wait'}) {
> +     $background='';
> + }
> + else {
> +     $background='&';
> + }
> + 
> + $defaultXStartup
> +     = ("#!/bin/sh\n\n".
> +        "xrdb \$HOME/.Xresources\n".
> +        "xsetroot -solid grey\n".
> +        "xterm -geometry 80x24+10+10 -ls -title 
> \"\$VNCDESKTOP Desktop\" &\n".
> +        "twm $background\n");
> + 
>   # Uncomment this line if you want default geometry, depth 
> and pixelformat
>   # to match the current X display:
>   # &GetXDisplayDefaults();
> ***************
> *** 191,197 ****
>   }
>   $ENV{VNCDESKTOP}= $desktopName;
>   
> ! system("$vncUserDir/xstartup >> " . 
> &quotedString($desktopLog) . " 2>&1 &");
>   
>   exit;
>   
> --- 198,207 ----
>   }
>   $ENV{VNCDESKTOP}= $desktopName;
>   
> ! system("$vncUserDir/xstartup >> " . 
> &quotedString($desktopLog) . " 2>&1 $background");
> ! if ($opt{'-wait'}) {
> !     system("vncserver -kill :$displayNumber");
> ! }
>   
>   exit;
> ---------------------------------------------------------------------
> To unsubscribe, send a message with the line: unsubscribe vnc-list
> to majordomo "at" uk.research.att.com
> See also: http://www.uk.research.att.com/vnc/intouch.html
> ---------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, send a message with the line: unsubscribe vnc-list
to majordomo "at" uk.research.att.com
See also: http://www.uk.research.att.com/vnc/intouch.html
---------------------------------------------------------------------