alexmurray / emacs-snap

GNU Emacs in a snap
https://snapcraft.io/emacs
71 stars 13 forks source link

Emacs as daemon with systemd not working #37

Closed nafiz1001 closed 2 years ago

nafiz1001 commented 2 years ago

OS: Ubuntu 22.04 LTS x86_64 DE: GNOME 42.0 Emacs:

Name                       Version           Rev    Tracking         Publisher   Notes
emacs                      28.1              1490   latest/stable    alexmurray  classic

Steps to reproduce:

Create ~/.config/systemd/user/emacs.service

[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/

[Service]
Type=forking
ExecStart=/snap/bin/emacs --daemon
ExecStop=/snap/bin/emacsclient --eval "(kill-emacs)"
Environment=SSH_AUTH_SOCK=%t/keyring/ssh

[Install]
WantedBy=default.target

systemctl --user disable --now emacs.service

systemctl --user enable --now emacs.service

emacsclient -c .

Expected Behaviour: Run an instance of emacsclient

Actual Behaviour:

$ emacsclient -c .
/snap/emacs/1490/usr/bin/emacsclient: can't find socket; have you started the server?
/snap/emacs/1490/usr/bin/emacsclient: To start the server in Emacs, type "M-x server-start".
/snap/emacs/1490/usr/bin/emacsclient: No socket or alternate editor.  Please use:

    --socket-name
    --server-file      (or environment variable EMACS_SERVER_FILE)
    --alternate-editor (or environment variable ALTERNATE_EDITOR)
$ systemctl --user status emacs.service
○ emacs.service - Emacs text editor
     Loaded: loaded (/home/nafiz/.config/systemd/user/emacs.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Sat 2022-04-23 10:18:05 EDT; 21s ago
       Docs: info:emacs
             man:emacs(1)
             https://gnu.org/software/emacs/
    Process: 14646 ExecStart=/snap/bin/emacs --daemon (code=exited, status=0/SUCCESS)
    Process: 14682 ExecStop=/snap/bin/emacsclient --eval (kill-emacs) (code=exited, status=0/SUCCESS)
        CPU: 24ms

Apr 23 10:18:03 nafiz-700-349 systemd[942]: Starting Emacs text editor...
Apr 23 10:18:05 nafiz-700-349 systemd[942]: Started Emacs text editor.

It does work as expected when running /snap/bin/emacs --daemon in the terminal.

alexmurray commented 2 years ago

I am not sure why it doesn't work when using --daemon but if instead you use --fg-daemon with Type=simple then it should work:

[amurray:~] $ systemctl --user cat emacs.service 
# /home/amurray/.config/systemd/user/emacs.service
[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/

[Service]
Type=simple
ExecStart=/snap/bin/emacs --fg-daemon -q
ExecStop=/snap/bin/emacsclient --eval "(kill-emacs)"
#Environment=SSH_AUTH_SOCK=%t/keyring/ssh

[Install]
WantedBy=default.target
[amurray:~] $ systemctl --user status emacs.service 
● emacs.service - Emacs text editor
     Loaded: loaded (/home/amurray/.config/systemd/user/emacs.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-05-04 17:06:49 ACST; 1min 47s ago
       Docs: info:emacs
             man:emacs(1)
             https://gnu.org/software/emacs/
   Main PID: 154992 (emacs)
      Tasks: 0 (limit: 38038)
     Memory: 32.0K
        CPU: 39ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/emacs.service
             ‣ 154992 /snap/emacs/1516/usr/bin/emacs --fg-daemon -q

May 04 17:06:49 graphene systemd[5392]: Started Emacs text editor.
[amurray:~] $ emacsclient --eval "(message emacs-version)"
"29.0.50"