Subject: Re: Bug#539809: emacs23-gtk: emacsclient cannot connect to daemon run from tty1
From: Андрей Парамонов <[email-masked]>
To: "Trent W. Buck" <[email-masked]>
Cc: [email-masked]
Date: Tue, 4 Aug 2009 23:42:30 +0400

2009/8/4 Trent W. Buck <[email-masked]>:
> Is the XAUTHORITY environment variable defined within your X session?
>
> If so, the reason the Emacs daemon can't connect to your X server is
> because it is trying to use ~/.Xauthority, but the file is in some
> other place.
>
> GDM puts the .Xauthority file in a different place when $HOME is on a
> root-squashed NFS filesystem, because when the file is created GDM
> runs as root, and can't write the file to ~/.Xauthority as normal.  It
> sets the XAUTHORITY environment variable to the other place (in
> /tmp/), so all the child processes know to look there.
>
> But emacs --daemon was started outside of the GDM process tree, so it
> doesn't "see" the XAUTHORITY environment variable.
>
> When I ran into this problem (using screen, not emacs --daemon), I
> worked around it with the following code in my .xsession file:
>
>    ## Dance so screen subprocesses can talk to GDM-spawned X servers.
>    if test -n "$XAUTHORITY"
>    then
>        xauth extract - $DISPLAY |
>        xauth -f ~/.Xauthority merge -
>        unset XAUTHORITY
>    fi
>
> Note that depending on your DM, .xsession may be called .xinitrc or
> .Xclients.  Typically you also have to choose "default X session" or
> similar, rather than "GNOME" or whatever.
>

Thank you for a very helpful response!

I don't use NFS, but the problem was indeed in my ~/.Xauthority (it
was owned by root and 600 for some reason). I've removed my
~/.Xauthority and restarted X, and now my Emacs can survive X crash
:-)

Andrey