unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Eric Hanchrow <offby1@blarg.net>
Subject: Re: check whether emacs session is running under local X server
Date: Wed, 27 Sep 2006 15:39:09 -0700	[thread overview]
Message-ID: <87u02t3pf6.fsf@offby1.atm01.sea.blarg.net> (raw)
In-Reply-To: m38xk5yqie.fsf@tfkp07.physik.uni-erlangen.de

>>>>> "Roland" == Roland Winkler <Roland.Winkler@physik.uni-erlangen.de> writes:

    Roland> In my .emacs I would like to distinguish between an emacs
    Roland> session running under the local X server and an emacs
    Roland> session running under a remote X server.  I expect that
    Roland> the $DISPLAY variable can do the job.  But I am not
    Roland> familiar with the details.  (Once upon a time I set
    Roland> $DISPLAY manually.  Nowadays I use ssh which handles
    Roland> $DISPLAY for me, but I do not understand the scheme it
    Roland> uses.)

I don't think there's a 100% foolproof way, but here's how I do it:

(Isn't this awful?)

(let ((x-running-locally
       (and
        (boundp 'window-system)
        (or (eq (assoc-default 'window-system (frame-parameters current-frame)) 'x)
            (and (assq 'font (frame-parameters current-frame))
                 (assq 'display (frame-parameters current-frame))))
        (getenv "DISPLAY")

        (let ((display-data (split-string (getenv "DISPLAY") ":")))
          (if (= 1 (length display-data)) ; e.g. ("0")

              ;; e.g. ("offby1" "0")
              (setq display-data (cons (car (split-string (system-name) "\\.")) display-data))

            (let* ((display-host (nth 0 display-data))
                   (display-number (car (read-from-string (nth 1 display-data)))))
              ;; display numbers >=10 imply we're using SSH from a remote
              ;; machine
              (and (< display-number 10)
                   ;; (string-equal (downcase (car (split-string display-host "\\.")))
                   ;;                           (downcase (car (split-string (system-name)"\\."))))
                   ))))))
      ))

-- 
When it comes to electronic voting, most liberals are just plain
old-fashioned nuts.
        -- Joe Andrew, former chairman of the Democratic National
           Committee

  reply	other threads:[~2006-09-27 22:39 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-27 20:59 check whether emacs session is running under local X server Roland Winkler
2006-09-27 22:39 ` Eric Hanchrow [this message]
     [not found] ` <mailman.7518.1159397614.9609.help-gnu-emacs@gnu.org>
2006-09-27 23:44   ` Roland Winkler
2006-09-28  3:10     ` Eric Hanchrow
2006-09-28  1:10 ` Glenn Morris
2006-09-28  1:56   ` Roland Winkler
2006-09-28  3:12   ` Eric Hanchrow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87u02t3pf6.fsf@offby1.atm01.sea.blarg.net \
    --to=offby1@blarg.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).