rf-session如何设置的环境变量(语言环境)

设置环境变量涉及的文件:

lxqt-session/src/main.cpp -->lxqt-session/src/sessionapplication.cpp --> lxqt-session/src/lxqtmodman.cpp

涉及的函数

int main(int argc, char **argv)

bool SessionApplication::startup()

SessionApplication::loadEnvironmentSettings(LXQt::Settings& settings)

void lxqt_setenv(const char *env, const QByteArray &value)

设置环境变量流程

设置环境变量按照以下步骤执行:

  1. Main 函数内,创建 SessionApplication app(argc, argv) 实例;

  2. 在 SessionApplication 的构造函数最后,调用 QTimer::singleShot(0, this, SLOT(startup()))

  3. SessionApplication::startup() 会调用不同的函数读取配置文件,开始配置当前用户设置的内容;

  4. SessionApplication::loadEnvironmentSettings(LXQt::Settings& settings) 读取配置文件 session.confEnvironment 组下的 key value

  5. 读取到的每一个环境变量,通过调用 lxqt_setenv(const char *env, const QByteArray &value) 函数设置;

  6. lxqt_setenv(const char *env, const QByteArray &value) 中使用 qputenv 设置环境变量;

如果配置文件中没有写明语言相关的,SESSION 是如何处理的?

        这部分可能是初始化系统(如 systemd)和登录管理器(如 GDM, LightDM, PAM)通过读取和应用 /etc/default/locale 文件中语言设置的。

systemd 为例,系统启动和语言设置的具体流程如下:

  1. 系统启动并加载内核

  2. systemd 初始化系统,并启动各个系统服务

  3. systemd-localed 服务启动并读取 /etc/locale.conf 文件,该文件通常由安装程序通过 /etc/default/locale 文件生成。

  4. systemd 设置环境变量systemd 会将读取到的语言设置应用到系统环境变量中,如 LANGLC_ALL 等。

  5. 用户登录时pam_env 模块读取 /etc/environment/etc/default/locale,将语言设置应用到用户会话环境中。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值