systemd - 用于普通图形应用程序的用户

时间:2015-03-04 06:09:03

标签: linux systemd

我正在尝试设置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

连接到emacs服务

我的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在命令行上启动终结符,但我无法通过(图形)登录自动启动终结符。我尝试过使用WantedByAfter行,在graphical.targetdefault.targetmulti-user.target之间进行切换,但它已经过了真的只是猜测工作,并没有帮助。

有什么想法吗?

2 个答案:

答案 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)会在启动时启动它。