질문
저는 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
.
따라서 한 가지 가능성은 이러한 변수를 사용할 수 있기 전에 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
평소처럼 부팅할 수 있었습니다.