Part of Slepp's ProjectsPastebinTURLImagebinFilebin
Feedback -- English French German Japanese
Create Upload Newest Tools Donate
Sign In | Create Account

Paste Description for /etc/gdm/Xsession

The content of my /etc/gdm/Xsession

/etc/gdm/Xsession
Sunday, November 14th, 2010 at 7:03:52am UTC 

  1. #!/bin/sh
  2. #
  3. # This is SORT OF LIKE an X session, but not quite.  You get a command as the
  4. # first argument (it could be multiple words, so run it with "eval").  As a
  5. # special case, the command can be:
  6. #  default - Run the appropriate Xclients startup (see the code below)
  7. #  custom - Run ~/.xsession and if that's not available run 'default'
  8. #
  9. # (Note that other arguments could also follow, but only the command one is
  10. # right now relevant and supported)
  11. #
  12. # The output is ALREADY redirected to .xsession-errors in GDM.  This way
  13. # .xsession-errors actually gets more output such as if the PreSession script
  14. # is failing.  This also prevents DoS attacks if some app in the users session
  15. # can be prodded to dump lots of stuff on the stdout/stderr.  We wish to be
  16. # robust don't we?  In case you wish to use an existing script for other DM's,
  17. # you can just not redirect when GDMSESSION is set.  GDMSESSION will always
  18. # be set from gdm.
  19. #
  20. # Also note that this is not run as a login shell, this is just executed.
  21. # This is why we source the profile files below.
  22. #
  23. # based on:
  24. # $XConsortium: Xsession /main/10 1995/12/18 18:21:28 gildea $
  25.  
  26. command="$@"
  27.  
  28. # this will go into the .xsession-errors along with all other echo's
  29. # good for debugging where things went wrong
  30. echo "$0: Beginning session setup..."
  31.  
  32. # First read /etc/profile and .profile
  33. test -f /etc/profile && . /etc/profile
  34. test -f "$HOME/.profile" && . "$HOME/.profile"
  35. # Second read /etc/xprofile and .xprofile for X specific setup
  36. test -f /etc/xprofile && . /etc/xprofile
  37. test -f "$HOME/.xprofile" && . "$HOME/.xprofile"
  38.  
  39. # Translation stuff
  40. if [ -x "/usr/lib/gdm/gdmtranslate" ] ; then
  41.   gdmtranslate="/usr/lib/gdm/gdmtranslate"
  42. else
  43.   gdmtranslate=
  44. fi
  45.  
  46. # Note that this should only go to zenity dialogs which always expect utf8
  47. gettextfunc () {
  48.   if [ "x$gdmtranslate" != "x" ] ; then
  49.     "$gdmtranslate" --utf8 "$1"
  50.   else
  51.     echo "$1"
  52.   fi
  53. }
  54.  
  55. OLD_IFS=$IFS
  56.  
  57. gdmwhich () {
  58.   COMMAND="$1"
  59.   OUTPUT=
  60.   IFS=:
  61.   for dir in $PATH
  62.   do
  63.     if test -x "$dir/$COMMAND" ; then
  64.       if test "x$OUTPUT" = "x" ; then
  65.         OUTPUT="$dir/$COMMAND"
  66.       fi
  67.     fi
  68.   done
  69.   IFS=$OLD_IFS
  70.   echo "$OUTPUT"
  71. }
  72.  
  73. zenity=`gdmwhich zenity`
  74.  
  75. # Note: ~/.xsession-errors is now done in the daemon so that it
  76. # works for ALL sessions (except ones named 'Failsafe')
  77.  
  78. # clean up after xbanner
  79. freetemp=`gdmwhich freetemp`
  80. if [ -n "$freetemp" ] ; then
  81.         "$freetemp"
  82. fi
  83.  
  84. userresources="$HOME/.Xresources"
  85. usermodmap="$HOME/.Xmodmap"
  86. userxkbmap="$HOME/.Xkbmap"
  87.  
  88. sysresources=/etc/X11/Xresources
  89. sysmodmap=/etc/X11/Xmodmap
  90. sysxkbmap=/etc/X11/Xkbmap
  91.  
  92. rh6sysresources=/etc/X11/xinit/Xresources
  93. rh6sysmodmap=/etc/X11/xinit/Xmodmap
  94.  
  95. # merge in defaults
  96. if [ -f "$rh6sysresources" ]; then
  97.     xrdb -nocpp -merge "$rh6sysresources"
  98. fi
  99.  
  100. if [ -f "$sysresources" ]; then
  101.     xrdb -nocpp -merge "$sysresources"
  102. fi
  103.  
  104. if [ -f "$userresources" ]; then
  105.     xrdb -nocpp -merge "$userresources"
  106. fi
  107.  
  108. # merge in keymaps
  109. if [ -f "$sysxkbmap" ]; then
  110.     setxkbmap `cat "$sysxkbmap"`
  111.     XKB_IN_USE=yes
  112. fi
  113.  
  114. if [ -f "$userxkbmap" ]; then
  115.     setxkbmap `cat "$userxkbmap"`
  116.     XKB_IN_USE=yes
  117. fi
  118.  
  119. #
  120. # Eeek, this seems like too much magic here
  121. #
  122. if [ -z "$XKB_IN_USE" -a ! -L /etc/X11/X ]; then
  123.     if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 && [ -f /etc/X11/XF86Config ]; then
  124.        xkbsymbols=`sed -n -e 's/^[     ]*XkbSymbols[   ]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config`
  125.        if [ -n "$xkbsymbols" ]; then
  126.            setxkbmap -symbols "$xkbsymbols"
  127.            XKB_IN_USE=yes
  128.        fi
  129.     fi
  130. fi
  131.  
  132. # xkb and xmodmap don't play nice together
  133. if [ -z "$XKB_IN_USE" ]; then
  134.     if [ -f "$rh6sysmodmap" ]; then
  135.        xmodmap "$rh6sysmodmap"
  136.     fi
  137.  
  138.     if [ -f "$sysmodmap" ]; then
  139.        xmodmap "$sysmodmap"
  140.     fi
  141.  
  142.     if [ -f "$usermodmap" ]; then
  143.        xmodmap "$usermodmap"
  144.     fi
  145. fi
  146.  
  147. unset XKB_IN_USE
  148.  
  149. # Overwrite $LANG from /etc/profile (and friends) with the one picked in the
  150. # greeter
  151. if [ -n "$GDM_LANG" ]; then
  152.   LANG="$GDM_LANG"
  153.   export LANG
  154. fi
  155.  
  156. # run all system xinitrc shell scripts.
  157. if [ -d /etc/X11/xinit/xinitrc.d ]; then
  158.     for i in /etc/X11/xinit/xinitrc.d/* ; do
  159.         if [ -x "$i" -a ! -d "$i" ]; then
  160.             . "$i"
  161.         fi
  162.     done
  163. fi
  164.  
  165. # run /etc/X11/Xsession.d/
  166. OPTIONFILE=/etc/X11/Xsession.options
  167. USERXSESSION=$HOME/.xsession
  168. USERXSESSIONRC=$HOME/.xsessionrc
  169. ALTUSERXSESSION=$HOME/.Xsession
  170. if [ -d /etc/X11/Xsession.d ]; then
  171.     for i in `ls /etc/X11/Xsession.d/` ; do
  172.         if [ -r "/etc/X11/Xsession.d/$i" ] && expr "$i" : '^[[:alnum:]_-]\+$' > /dev/null; then
  173.             . "/etc/X11/Xsession.d/$i"
  174.         fi
  175.     done
  176. fi
  177.  
  178. if [ "x$command" = "xcustom" ] ; then
  179.   if [ -x "$HOME/.xsession" ]; then
  180.     command="$HOME/.xsession"
  181.   else
  182.     echo "$0: Cannot find ~/.xsession will try the default session"
  183.     command="default"
  184.   fi
  185. fi
  186.  
  187. if [ "x$command" = "xdefault" ] ; then
  188.   if [ -x "$HOME/.Xclients" ]; then
  189.     command="$HOME/.Xclients"
  190.   elif [ -x /etc/X11/xinit/Xclients ]; then
  191.     command="/etc/X11/xinit/Xclients"
  192.   elif [ -x /etc/X11/Xclients ]; then
  193.     command="/etc/X11/Xclients"
  194.   else
  195.     if [ -n "$zenity" ] ; then
  196.         disptext=`gettextfunc "System has no Xclients file, so starting a failsafe xterm session.  Windows will have focus only if the mouse pointer is above them.  To get out of this mode type 'exit' in the window."`
  197.       "$zenity" --info --text "$disptext"
  198.     else
  199.       echo "$0: Cannot find Xclients"
  200.     fi
  201.     exec xterm -geometry 80x24+0+0
  202.   fi
  203. fi
  204.  
  205. # add ssh-agent if found
  206. sshagent="`gdmwhich ssh-agent`"
  207. if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
  208.     command="$sshagent -- $command"
  209. elif [ -z "$sshagent" ] ; then
  210.     echo "$0: ssh-agent not found!"
  211. fi
  212.  
  213. echo "$0: Setup done, will execute: $command"
  214.  
  215. eval exec $command
  216.  
  217. echo "$0: Executing $command failed, will run xterm"
  218.  
  219. if [ -n "$zenity" ] ; then
  220.         disptext=`gettextfunc "Failed to start the session, so starting a failsafe xterm session.  Windows will have focus only if the mouse pointer is above them.  To get out of this mode type 'exit' in the window."`
  221.         "$zenity" --info --text "$disptext"
  222. fi
  223.  
  224. exec xterm -geometry 80x24+0+0

Update the Post

Either update this post and resubmit it with changes, or make a new post.

You may also comment on this post.

update paste below
details of the post (optional)

Note: Only the paste content is required, though the following information can be useful to others.

Save name / title?

(space separated, optional)



Please note that information posted here will expire by default in one month. If you do not want it to expire, please set the expiry time above. If it is set to expire, web search engines will not be allowed to index it prior to it expiring. Items that are not marked to expire will be indexable by search engines. Be careful with your passwords. All illegal activities will be reported and any information will be handed over to the authorities, so be good.

comments powered by Disqus
worth-right
worth-right
worth-right