You are not logged in.
I can start the emacs service and then start an emacs frame as a client with:
$ emacs --fg-daemon=chomwitt-emacsd
$ emacsclient --socket-name=chomwitt-emacsd
$ ps -aux | grep emacs
chomwitt 494 0.0 0.0 6692 2088 pts/0 S+ 09:05 0:00 grep emacs
chomwitt 31778 0.0 0.2 679544 139624 pts/4 Sl+ Nov28 0:01 emacs --fg-daemon=chomwitt-emacsd
Now i tried to create a service with:
$ less /etc/sv/emacs/run
#!/usr/bin/env /lib/runit/invoke-run
export HOME=/home/chomwitt
exec 2>&1
cd $HOME
exec chpst -u chomwitt:chomwitt /usr/bin/emacs --fg-daemon=chomwitt-emacsd
And then i start the service with:
$ sudo ln -s /etc/sv/emacs /etc/service/emacsd
$ ps -aux | grep emacs
root 622 0.0 0.0 2344 1040 ? Ss 09:07 0:00 runsv emacsd
chomwitt 623 5.5 0.1 224348 110176 ? S 09:07 0:00 /usr/bin/emacs --fg-daemon=chomwitt-emacsd
chomwitt 660 0.0 0.0 6692 2088 pts/0 S+ 09:07 0:00 grep emacs
But now triying to start a client i get a 'cant find the service' error:
$ emacsclient --socket-name=chomwitt-emacsd -c
emacsclient: can't find socket; have you started the server?
emacsclient: To start the server in Emacs, type "M-x server-start".
emacsclient: error accessing socket "chomwitt-emacsd"
My sources that i initially based my effort:
Lorenzo Puliti 's runit-services
Emacs daemon as a runit service by Hristos N. Triantafillou
(Hristos has blogged also Emacs daemon as a runit "user service" but
i decided to try first the option that it seems to me more common and simple and suit me since i dont share my computer)
Last edited by chomwitt (2023-11-29 09:05:56)
Devuan(Chimaera)(Daedalus) DS+WM: XorgX11server+StumpVM
Offline
I've managed to start emacslient .
$ lsof -c emacs
emacs 623 chomwitt 6u unix 0x000000006612cb3d 0t0 1292858 /tmp/emacs1000/chomwitt-emacsd type=STREAM (LISTEN)
$ emacsclient -s /tmp/emacs1000/chomwitt-emacsd -c .
when started from the command line it uses a different 'socket'.
$ lsof -c emacs
emacs 27340 chomwitt 6u unix 0x00000000d0fa297b 0t0 1696185 /run/user/1000/emacs/chomwitt-emacsd type=STREAM (LISTEN)
emacs 27340 chomwitt 4u unix 0x00000000331e1ac8 0t0 1518638 type=STREAM (CONNECTED)
My guess is that from command line emacs --fg-daemon=chomwitt-emacsd uses $XDG_RUNTIME_DIR
$ echo $XDG_RUNTIME_DIR
/run/user/1000
So i will try to make $XDG_RUNTIME_DIR visible to my /etc/sv/emacs/run script
Last edited by chomwitt (2023-11-29 15:37:13)
Devuan(Chimaera)(Daedalus) DS+WM: XorgX11server+StumpVM
Offline
Ok. Here is the run script that allows emacsclient to connect without a full 'socket' name:
#!/usr/bin/env /lib/runit/invoke-run
export HOME=/home/chomwitt
export XDG_RUNTIME_DIR=/run/user/1000
exec 2>&1
cd $HOME
exec chpst -u chomwitt:chomwitt emacs --fg-daemon=chomwitt-emacsd
Devuan(Chimaera)(Daedalus) DS+WM: XorgX11server+StumpVM
Offline
i had an issue with the service not opening a socket at reboot. I think maybe it has to do with the export XDG_RUNTIME_DIR=/run/user/1000.
Maybe is not set up until i log on ? In which case what should i do ? Try it as a user service ?
Devuan(Chimaera)(Daedalus) DS+WM: XorgX11server+StumpVM
Offline