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.

따라서 한 가지 가능성은 이러한 변수를 사용할 수 있기 전에 Systemd가 사용자 서비스를 시작하여 문제를 일으켰다는 것입니다. 이런 경우 어떻게 해결할 수 있나요?

.Xauthority그러나 나는 실제 소프트 링크를 가리키는 file이라는 소프트 링크를 내 홈 디렉토리에 생성 할 수 있다는 사실도 발견했고 , Emacs는 이러한 환경 변수 없이도 작동하는 것처럼 보였습니다. 따라서 해당 환경 변수가 필요하지 않을 수도 있습니다. fedora-36에서 fedora-37로의 변경은 .Xauthority파일이 더 이상 홈 디렉터리에 없다는 것입니다. 이런 경우, 이 문제를 어떻게 해결해야 합니까?

답변1

최근 F37 설치 시 Plasma X11에서 Plasma Wayland로 전환한 후 이 문제가 발생했습니다. 웹 검색을 통해 내가 본 합의는 당신이 찾은 것 같습니다: 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평소처럼 부팅할 수 있었습니다.

관련 정보