turnstiled service is shown fine in dinitctl output but it doesn't spawn any dinit instance, there is no dinit process.
/var/log/turnstiled.log is empty.
I have turnstile-dinit, pambase-turnstile, turnstile and some user services installed.
Also sometimes, like 50% of the times, it makes the machine hang at boot for 1 maybe 2 minutes with some error:
On another machine:
I was using this 2 service fine when launching dinit manually before turnstile:
type = process
command = picom
logfile = $HOME/.local/share/dinit/picom.log
restart = true
type = process
command = pasystray --notify=all
logfile = $HOME/.local/share/dinit/pasystray.log
restart = true
pasystray log:
option parsing failed: Cannot open display:
picom log:
[ 10/05/23 20:41:34.074 main FATAL ERROR ] Can't open display.
I use fork with experimental features and crash like 4 times per minute.
/var/log/turnstiled.log just states:
[ OK ] picom
dinit: Service picom process terminated with exit code 1
dinit: Service picom restarting too quickly; stopping.
[STOPPD] picom
[ OK ] pasystray
dinit: Service pasystray process terminated with exit code 1
dinit: Service pasystray restarting too quickly; stopping.
[STOPPD] pasystray
I have
turnstile-dinit,
pambase-turnstile,
turnstile and some user services installed.
Other services are fine:
[[+] ] boot
[{+} ] system
[{+} ] pipewire (pid: 735)
[{+} ] dbus (pid: 725)
[ {X}] picom (exit status: 1)
[ {X}] pasystray (exit status: 1)
[{+} ] wireplumber (pid: 737)
[{+} ] pipewire-pulse (pid: 736)
running services on turnstile/dinitctl is not exporting user environmment variables. for picom's sake, it at least needs thew variable DISPLAY to be set but its not.
Can I fix environment variables somehow?
On one machine turnstile doesn't work at all.
I use this workaround that seems perfect, in the autostart:
pkill dinit &
[...]
dinit -u &
i am not sure as of how specific variable are derived in user environment. as a workaround run picom as a script, check if DISPLAY is empty, and if it is then set it to DISPLAY=:0 before running picom. again this is just a workaround and may not work in most cases.
pkill dinit &
[...]
dinit -u &
using this will make the usage of turnstile unnecessary as this is basically what turnstile do (somewhat but run with a system-service instead).
I did that because on one device turnstile doesn't work at all.
I can use that to workaround picom and pasystray (instead of using turnstile) on other device too.
From your screenshot, you're logging in as root. Please note that user session manager is by default disabled for root user.
I do NOT recommend you to use root for daily use for obvious reasons, but if you insist, you need to enable it manually on /etc/turnstile/turnstiled.conf by changing root_session = no to root_session = yes.
That was the problem of dinit not starting there.
Still:
[ {X}] picom (exit status: 1)
[ {X}] pasystray (exit status: 1)
It is not a server.
Now "pkill dinit" kills the system init so I use this script (https://codeberg.org/realroot/rootstile/src/branch/main/rootstile.sh).
In case of very slow devices a "sleep 0.5" after may be needed.
Adding $DISPLAY fixed it: https://forum.artixlinux.org/index.php/topic,6929.msg45684.html#msg45684.