[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: xsession file



Bhasker C V wrote:
> .xsession is a file which to my knowledge can only take one command
> at the end. The file must is not 'shelled' but 'exec'ed. 
> So you can place commands in the file one per line or a script
> but the end of the file must be an exec and not a script/command that
> returns.

I think you know this but the description here was vague enough that I
wanted to clarify it.

More precisely the X startup script waits for the command to return.
When the script exits the session is closed.  Therefore we do not want
the process id of the script to exit until we log out.  Therefore we
'exec' the window manager.  The script goes away and is overlayed by
the window manager process.  It keeps the same process id and the same
parent process is waiting for it to finish.  When you exit the window
manager the parent detects that the child process has quit and
terminates the X window session.

In the past I have seen other less efficient things.  Example:

  twm &
  wait

The & puts the twm window manager in the background and then the wait
command causes the shell to wait forever for it to finish.  Because
otherwise the shell would terminate and the session would end.  But
this is less efficient than the exec because a useless shell process
is left waiting for the child for no good reason.  But so it was for
many years in many X startx scripts.  It is not much overhead but why
have any?  So in modern years best practice says to use 'exec' and to
eliminate the useless shell process entirely.

> Or in other words, the .xsession file can be placed in your home
> directory which will be souced and commands executed from the file and
> the X session lasts until the .xsession file completes and returns (the
> last command returns )

Correct.

> X session will also last till all the clients connected to the X session
> terminates. 
> 
> eg:-
>  If you place this command
>  sleep 20
> 
>  then the X session will last for 20 seconds and after 20 seconds when
> the sleep command exits, the X window will close. 

Yes.

More details can be seen by tracing through the X startup scripts at
/etc/X11/Xsession

Bob



Reply to: