emacsがディスプレイを開くことができません

emacsがディスプレイを開くことができません

最近、これが起こり始めました。私は次を実行します /usr/bin/emacsclient --alternate-editor="" --no-wait -c

エラー:表示:0.0を開くことができません。

他のアプリはこれを行いません。

出力xdpyinfo

name of display: 0.0
version number: 11.0
vendor string: The X.Org Foundation
vendor release number: 10707000
X.Org version: 1.7.7

編集する: 以前のEmacsサーバー/デーモンがまだ実行中であることがわかりました。

$ ps ux | grep [e]macs
richard   2642  0.0  0.8  38788 24984 ?        Ss   Jun22   0:25 emacs --daemon
richard   7512  0.0  0.6  33896 19720 ?        Ss   Jun23   0:05 emacs --daemon
richard  15458  0.0  0.6  32836 19076 ?        Ss   09:40   0:01 emacs --daemon

ログアウトするときにオフにする方法を知っていますか?

答え1

追加情報を見ると、あなたのemacsclientが「間違った」emacsサーバーに接続されているようです。 (または最初のものを起動することをお勧めします。emacs --daemon通信ソケットがすでに使用されているため、後続の呼び出しはサーバーを起動できません)だから失敗します。

非グラフィック/ttyモードでサーバーに接続し、次のオプションを使用して端末で-nwemacsclientを実行すると、どのemacsプロセスがサーバーを実行しているかを確認できます。

emacsclient -nw

emacsclientを介してLISPコードを実行することで、実行中のemacsを終了できます。

emacsclient -t --eval '(progn (server-save-buffers-kill-terminal 1) (save-buffers-kill-emacs 1))' 

どこ:

  • このオプション(または-tエイリアス)は、EmacsがXディスプレイに接続するのを防ぎます。-nw--tty
  • server-save-buffers-kill-terminalEmacsに停止するように指示する前に、emacsclientを切り離してください(そうでない場合は、確認プロンプトが表示されます)。
  • このsave-buffers-kill-emacs関数は通常、Emacsに確認を要求しないように指示C-x C-cする引数とともに呼び出されます。1

また、私はあなたがあまりにも実行している理由emacs --daemonは、次のオプションを使用してemacsclientを呼び出すためだと思います--alternate-editor=""マニュアルページ emacsclient(1)指摘した:

(代替)EDITORの値が空の文字列の場合、Emacsはデーモンモードで起動し、emacsclientはそれに接続しようとします。

emacs --daemon.gnomercXセッション起動スクリプト(GNOMEセッションの設定など)からの起動は、セッションの終了時にセッションマネージャにemacsデーモンの終了を処理させるためのより良いオプションです。

答え2

何が起こったのかを推測したと思います。問題を解決する方法を知らせるためにログインしてEmacsを起動する方法についてもっと知る必要があります。

XプログラムがXディスプレイに接続するには、2つの情報が必要です。通常、DISPLAY環境変数から取得する表示名を知る必要があります。また、X Cookieという表示用のパスワードが必要です。このパスワードは通常、~/.Xauthority環境変数として表示または呼び出されるファイルに保存されますXAUTHORITY。 (詳しくはこちらをご覧ください)

:0.0Emacsclientは正しい表示情報()をデフォルトのEmacsプロセスに渡しますが、X Cookieを渡さないようです。通常、Emacsclientは独自の環境(XAUTHORITY存在する場合を含む)をEmacsサーバーに送信し、両方のプロセスが同じファイルシステムにアクセスしてCookieファイルを読み取ります。ここでは失敗します。

その理由を確認するには、次の質問に対する回答が役に立ちます。

  • の価値は何ですか$XAUTHORITY? (未設定の場合、その値は同様に動作します~/.Xauthority。)
  • このファイルはどこにあり、その権限は何ですか?
  • Emacsプロセスと現在のクライアントはどういうわけか他のコンテキスト(コンピュータ、ユーザー、chrootなど)から始まりますか?
  • Emacsプロセスごとに異なる値がありますか$XAUTHORITY? (ps -C emacs wweまたはgrep -az XAUTHORITY= /proc/$(pidof emacs)/environ
  • どのようにログインします(ディスプレイマネージャ(何よりも)、テキストモード、SSH経由で...)? Emacsプロセスはどのように始まりますか(どこでいつ)?デーモンで始まりましたか?

答え3

Debian エラー#586685この問題の回避策はいくつかあります。これはgdm3(Xauthorityファイルが保存されている場所)によって導入された変更のようです。

アップストリームのバグもあります:Gnomeのバグ#651431

関連情報