質問
私はSystemdを使用してEmacsデーモンをユーザーサービスとして実行しています。EmacsWikiのドキュメント。 Fedora-36を使って設定しましたが、すべてが期待どおりに機能しました。 Fedora-37にアップグレードすると、Emacsデーモンも出力に追加され、emacsclient -c
エラーが発生し始めました。*ERROR*: Display :0 can't be opened
Authorization required, but no authorization protocol specified
systemctl --user status emacs.service
一時的なソリューション。
systemctl --user restart emacs.service
まず、コンピュータを再起動するまでサービスを再起動すると、問題が解決することがわかりました。ただし、システムが起動するたびにサービスを手動で再起動する必要があるため、Systemdを使用して自動的に開始する目的は失われます。
デバッグの試み。
このトピックについて調べたところ、emacsデーモンがXAUTHORITY
自動起動時に環境変数を取得しないことがわかりました。を再起動して実行すると、ps -C emacs eww
次の14個の環境変数が設定されていることを確認できます。
HOME, LANG, LOGNAME, PATH, SHELL, SYSTEMD_EXEC_PID, USER,
XDG_DATA_DIRS, XDG_RUNTIME_DIR, DBUS_SESSION_BUS_ADDRESS,
NOTIFY_SOCKET, MANAGERPID, INVOCATION_ID, JOURNAL_STREAM
サービスを再起動すると、43個の環境変数が表示されます。DISPLAY
、、、GNOME_SETUP_DISPLAY
およびWAYLAND_DISPLAY
を含む合計29の新しい変数があります。XAUTHORITY
。
したがって、1つの可能性は、これらの変数を使用できる前にSystemdがユーザーサービスを開始して問題を引き起こしたことです。このような場合はどうすれば解決できますか?
.Xauthority
しかし、私は実際のソフトリンクを指すfileという名前のソフトリンクを私のホームディレクトリに作成できることを発見しました、そしてEmacsはこれらの環境変数なしで動作するようです。したがって、対応する環境変数は必要ない場合があります。 fedora-36からfedora-37への変更は、.Xauthority
ファイルがホームディレクトリになくなったことです。このような場合、この問題をどのように解決するのですか?
ベストアンサー1
最近、F37のインストール時にPlasma X11からPlasma Waylandに切り替えた後にこの問題が発生しました。 Web検索で私が見た合意はあなたが見つけたようです:emacs.service
グラフィカル環境と変数を使用できる前に始めてください。しかし、私はあなたからのDISPLAY
ニュースを聞くことができませんでした。Authorization required
emacs.service
ファイルをからに~/.config/systemd/user/default.target.wants
移動し始めましたが、~/.config/systemd/user/graphical-session.target.wants
何も変更されませんでした。
ヒントを得るシステムサービスユニットを順番に起動するには?/usr/lib/systemd/user/emacs.service
にコピーしてフォルダ~/.config/systemd/user
に接続し、セクションgraphical-session.target.wants
に次の行を追加しました。[Unit]
Requires=plasma-kwin_wayland.service
After=plasma-kwin_wayland.service
emacs.service
再起動して再度ログインした後、実行中であることを確認し、emacsclient
いつものように起動できました。