如何在systemd单元中继承XDG_SESSION_TYPE?

如何在systemd单元中继承XDG_SESSION_TYPE?

我当前的桌面环境:Plasma Wayland。

许多 GUI 应用程序无法从 Emacs 守护进程(由 e systemd 单元启动)内启动,除非XDG_SESSION_TYPE设置为“wayland”。当 Emacs 正常启动时这不是问题,但该环境变量不会作为服务继承。

我尝试编辑单元:

ExecStart=/usr/bin/bash -c 'XDG_SESSION_TYPE=$${XDG_SESSION_TYPE} exec /usr/bin/emacs --fg-daemon'

但这在服务的初始(登录后)生命周期内无效。

当前单位:

[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/

[Service]
Type=notify
ExecStart=/usr/bin/bash -c 'XDG_SESSION_TYPE=$${XDG_SESSION_TYPE} exec /usr/bin/emacs --fg-daemon'
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
KillMode=process
Environment="XMODIFIERS=@im=fcitx" "GTK_IM_MODULE=fcitx" "LC_CTYPE=en_GB.UTF-8"

SuccessExitStatus=15

Restart=always

[Install]
WantedBy=default.target

答案1

直接设置就可以了

Environment="XDG_SESSION_TYPE=wayland"

并忽略 X11 会话。

相关内容