![如何为每个图形会话配置环境变量](https://linux22.com/image/180283/%E5%A6%82%E4%BD%95%E4%B8%BA%E6%AF%8F%E4%B8%AA%E5%9B%BE%E5%BD%A2%E4%BC%9A%E8%AF%9D%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
考虑以下设置:
- 我已经安装了GDM
- 我配置了多个图形会话,包括 X11 和 Wayland:i3,摇摆,侏儒(x11)。
我想为每个图形会话导出不同的环境变量集。例如我想设置VAR_A=1
为i3,VAR_A=2
为了侏儒并VAR_A=3
为摇摆。
我还需要考虑一些其他功能:
systemd-user 单元应该继承这些变量。例如,如果我在 中有一个服务,那么如果我从以下位置运行它,
$HOME/.config/systemd/user/
则应该启动它:VAR_A=1
i3。应该可以在图形会话之间切换,而无需手动重新配置。例如,如果我要退出i3并启动摇摆,我不必手动替换符号链接或重新创建文件。
它应该是容错解决方案。例如,如果我在使用时不小心拉断了电源线i3并启动摇摆会话之后,就不会出现这种情况,当我得到 i3 环境变量时摇摆会议。
我不在乎这些变量集是否会在非图形会话(如 ssh 或 tty)中加载。我也不介意更改显示管理器,但我真的不喜欢使用startx
Wayland 或其等效项启动图形会话。
我发现的唯一方法是修补和*.desktop
中的文件:将每个可执行文件包装在 shell 脚本中,从特定于会话的文件加载变量,并在./usr/share/xsessions/
/usr/share/wayland-sessions
$HOME/.config
$HOME/environment.d/
这个问题还有其他解决办法吗?