[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemo
From: |
Nicolas Graves |
Subject: |
Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file |
Date: |
Sat, 13 Apr 2024 18:50:18 +0200 |
On 2024-04-12 22:38, Ludovic Courtès wrote:
> Hi Nicolas,
>
> Nicolas Graves skribis:
>
>> As promised to Stefan a few months ago, here's a use case of
>> Shepherd/Emacs implementation that we developped in RDE.
>
> Would be nice to have it in Guix Home!
Something like this seems to work:
(define (emacs-shepherd-service config name)
(shepherd-service
(documentation
(format #f "Emacs server. Use ~a to connect to it."
(if (eq? 'server name)
"@code{emacsclient}"
(format #f "@code{emacsclient -s ~a}" name))))
(provision `(,(symbol-append 'emacs- name)))
(requirement '(emacs))
(modules '((shepherd support))) ;for '%user-runtime-dir'
(start #~(make-systemd-constructor
(list #$(file-append
(home-emacs-configuration-emacs config)
"/bin/emacs") #$(format #f "--fg-daemon=~a" name))
(list (endpoint
(make-socket-address
AF_UNIX
(string-append %user-runtime-dir
"/emacs/" #$(symbol->string name)))
#:name '#$(format #f "emacs-~a" name)
#:socket-directory-permissions #o700))
#:log-file (string-append
(getenv "XDG_STATE_HOME") "/log"
"/emacs-" #$(symbol->string name) ".log")))
(stop #~(make-systemd-destructor))))
But I'm not sure it's better regarding user experience. On RDE we
implemented a notifier that parses the result of
herd eval root "(and=> (lookup-service 'emacs-server) service-status)"
thus giving a nice "Emacs is currently starting" notification.
This evaluation doesn't seem to work using make-systemd-constructor,
although it has its advantages (indeed launches a frame when available).
It would be nice if service-status could "sync" with
make-systemd-constructor in this case.
I would be happy to send such a patch for Guix (is there already some
patch series on which to graft this?), WDYT @Ludo?
I can also send this in RDE, it simplifies a lot although I'm still not
sure it yields a better user experience. @Andrew?
>> We're using the --daemon option on the Shepherd side to launch the
>> server in the background, include code in Emacs configuration to make it
>> create a pid-file as soon as the server has started, and redefine
>> kill-emacs to be managed by the Shepherd.
>
> Emacs supports systemd-style socket activation so, instead of using a
> PID file, you could use ‘make-systemd-constructor’.
>
> Now, that code in emacs.c is unfortunately implemented via libsystemd
> and thus disabled in Guix. Using libsystemd in this case is unnecessary
> (and increases the attack surface, as we’ve seen with the xz backdoor):
> it could read the ‘LISTEN_FDS’ and ‘LISTEN_PID’ environment variables
> instead of calling the sd_* functions.
>
> https://www.freedesktop.org/software/systemd/man/latest/sd_listen_fds.html
>
> https://www.gnu.org/software/shepherd/manual/html_node/Service-De_002d-and-Constructors.html#index-make_002dsystemd_002dconstructor
>
> Thanks,
> Ludo’.
--
Best regards,
Nicolas Graves
- Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file, (continued)
- Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file, Ludovic Courtès, 2024/04/12
- Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file, Nicolas Graves, 2024/04/13
- Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file, Nicolas Graves, 2024/04/13
- Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file, Stefan Monnier, 2024/04/13
- Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file, Björn Bidar, 2024/04/15
- Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file, Stefan Monnier, 2024/04/14
- Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file, Ludovic Courtès, 2024/04/19
- Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file, Rudolf Schlatte, 2024/04/19
- Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file, Stefan Monnier, 2024/04/19
- Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file, Ludovic Courtès, 2024/04/19
Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file,
Nicolas Graves <=
Re: [Nicolas Graves] [PATCH v6 01/10] rde: emacs: Start emacs in --daemon mode, with shepherd and pid-file, Felix Lechner, 2024/04/14