Вот здесь я уже писал, что пользуюсь systemd для того, чтобы программки, нужные мне, не закрывались просто так
https://olegon.ru/showthread.php?t=37037
Однако, как выяснилось, в таком случае они запускаются еще до старта графики, после чего падают, поскольку графики нет, а потом еще раз перезапускаются. Не очень надежно и вообще непорядок. Стал разбираться с systemd, потратил несколько часов, убиваясь в попытках понять, почему его комбинации ни одна не работает достаточно надежно. Грубо говоря, не за что зацепиться After, чтобы точно работало.
И, в итоге обнаружил таймер, который запускается уже в пользовательской сессии, соответственно, сделал точно такой же свой, свой target, куда теперь могу цеплять свои сервисы и юниты, причем, от графического окружения это зависеть не будет.
Код:
cat ~/.local/share/systemd/user/startup.target
[Unit]
Description=Startup services
Requires=swayidle.service telegram.service transmission.service
Код:
cat ~/.local/share/systemd/user/startup.timer
[Unit]
Description=Startup units
ConditionUser=!@system
ConditionVirtualization=!container
[Timer]
OnActiveSec=1min
Unit=startup.target
[Install]
WantedBy=timers.target
Код:
cat ~/.local/share/systemd/user/telegram.service
[Unit]
Description=Telegram
PartOf=startup.target
ConditionPathExists=/run/user/%U/wayland-1
[Service]
Type=idle
Environment=WAYLAND_DISPLAY=wayland-1
Restart=always
RestartSec=10
ExecStart=/home/olegon/T/Telegram
Slice=app.slice
[Install]
WantedBy=startup.target