koodev

Emacs Server setting

Emacs

Emacs를 서버-클라이언트 서비스로 구성하는 과정에 대해 기록한다.

환경은 Ubuntu 18.04, Emacs 26.2 이다.

참고

Starting Emacs Deamon with systemd

Systemd 는 대부분의 리눅스 배포판에서 시작 프로그램을 관리하는 프로그램이다. 아래 emacs.service 파일은 emacs26.2 소스(emacs-26.2/etc/emacs.service)에 들어있는 것을 내 환경에 알맞게 수정한 것이다. 아래와 같이 수정하여~/.config/systemd/user/emacs.service 를 만들어 준다.

## If your Emacs is installed in a non-standard location, you may need
## to copy this file to a standard directory, eg ~/.config/systemd/user/ .
## If you install this file by hand, change the "Exec" lines below
## to use absolute file names for the executables.
[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/

[Service]
Type=simple
ExecStart=/usr/local/bin/emacs --fg-daemon
ExecStop=/usr/local/bin/emacsclient --eval "(kill-emacs)"
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
Restart=on-failure

[Install]
WantedBy=default.target

ExecStart 에 emacs 실행 경로와 함께 넣어준 --fg-daemon 인자는 포어그라운드 데몬으로 실행하라는 의미이다. 참고로 --bg-daemon 혹은 --daemon 은 백그라운드 데몬으로 실행하라는 의미이다.

그리고 터미널에서 아래와 같이 실행하여 이맥스 서버를 실행시킨다.

systemctl enable --user emacs
systemctl start --user emacs

Launcher 아이콘 생성

런처 아이콘 역시 Emacs 26.2 소스 코드에서 만들어 놓은 파일을 고쳐서 사용하면 된다. emacs26.2/etc/emacs.desktop 을 아래와 같이 수정하여 .local/share/applications/emacs.desktop 을 만들어준다.

[Desktop Entry]
Name=Emacs
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=emacsclient -c -a "emacs" %F
Icon=emacs
Type=Application
Terminal=false
Categories=Development;TextEditor;
StartupWMClass=Emacs
Keywords=Text;Editor;

emacsclient 의 -c 옵션은 새 이맥스 프레임을 생성하여 실행하라는 의미이고, -a 는 이맥스 데몬이 실행중이지 않을 경우 fallback 으로 할 액션에 대해 정의하는 것이다.

그리고 터미널에서 아래 명령어를 실행해 주면 finder 같은 곳에서 emacs를 검색하면 위에서 지정한 동작을 수행하는 아이콘이 뜰 것이다. 실행시켜주고 dock 에 고정하면 된다.

sudo desktop-file-install --dir=/usr/share/applications/ ~/.local/share/applications/emacs.desktop

'Emacs' 카테고리의 다른 글

Emacs - Python 문서 열람시 멈춤현상  (0) 2019.09.18
Emacs Wdired 모드  (0) 2019.06.29
macOS 에서 Emacs 데몬이 종료되지 않는 문제  (0) 2019.06.07
Create a new file in ido mode  (0) 2019.06.07
EIN and virtualenvwrapper  (0) 2018.07.22