我正在尝试设置systemd以在我登录时启动某些程序。我通过将文件放入例如~/.config/systemd/user/some.service
。这适用于我的emacs服务器服务,如下所示:
[Unit]
Description=Emacs: the extensible, self-documenting text editor
[Service]
Type=forking
ExecStart=/usr/bin/emacs --daemon
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
Restart=always
[Install]
WantedBy=default.target
这会启动后台进程,并允许我使用emacsclient
我的terminator
服务不起作用:
[Unit]
Description=The only terminal emulator that seems to be somewhat decent
After=multi-user.target
[Service]
ExecStart=/usr/bin/terminator
Restart=always
Environment=DISPLAY=:0
[Install]
WantedBy=default.target
在~/.config/systemd/user/terminator.service
中使用此代码,我可以使用systemctl --user start terminator
在命令行上启动终结符,但我无法通过(图形)登录自动启动终结符。我尝试过使用WantedBy
和After
行,在graphical.target
,default.target
和multi-user.target
之间进行切换,但它已经过了真的只是猜测工作,并没有帮助。
有什么想法吗?
答案 0 :(得分:0)
你的终结者服务文件对我来说没问题。 检查下面的事情 1.只需检查" default.target"文件,是该文件中的下面一行 之后= multi-user.target 2.如果你写" WantedBy = default.target"那么你需要在" default.target.wants /"内部创建一个terminator.service文件的软链接。 。目录
如果以上两个是正确的,它应该开始。
如果仍然无效,请删除" After = multi-user.target"这一行,并将Wantedby改为" WantedBy = graphical.target"。
登录后告诉我服务状态 systemctl status terminator.service
答案 1 :(得分:0)
Systemd不是此任务的正确工具,因为它不知道您何时完成了在桌面环境中的登录,并且可以启动终结器。相反,您可以在~/.config/autostart
:
ln -s /usr/share/applications/terminator.desktop ~/.config/autostart/
大多数桌面界面(Gnome,KDE,Unity)会在启动时启动它。