Fedora 37にアップグレードした後、SystemdはXAUTHORITY環境変数なしでemacsデーモンを起動します。

Fedora 37にアップグレードした後、SystemdはXAUTHORITY環境変数なしでemacsデーモンを起動します。

質問

私はSystemdを使用してEmacsデーモンをユーザーサービスとして実行しています。EmacsWikiのドキュメント。 Fedora-36を使って設定しましたが、すべてが期待どおりに機能しました。 Fedora-37にアップグレードすると、Emacsデーモンも出力に追加され、emacsclient -cエラーが発生し始めました。*ERROR*: Display :0 can't be openedAuthorization required, but no authorization protocol specifiedsystemctl --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いつものように起動できました。

おすすめ記事