ukui-session-manager 源码阅读总结

总结

ukui-session-manager 由 ukui-greeter 拉起, 主要负责桌面会话的启动,管理各模块是否开机启动、模块的启动顺序以及负责拉起因异常导致崩溃的进程,启动后进程间通过DBus进行通信。

一. ModuleManager 启动模块管理

主要函数的功能。

  • constructStartupList 配置启动列表 和 启动顺序
  1. 从 “org.ukui.session.required-components” 加载 WM、Panel、FileManager的启动项。
  2. 从 “/usr/share/applications”和“/etc/xdg/autostart”
    加载WM、Panel、FileManager配置文件[.desktop]文件,根据不同的选项加载启动顺序。
  3. 从 “/usr/share/applications”和“/etc/xdg/autostart”
    加载带有“Type”“X-UKUI-Autostart-Phase”选项的[.desktop]文件,根据不同的选项加载启动顺序。
  4. 从 “/usr/share/ukui/applications” 加载,启动项放置在mForceApplication列表,将会在最后被session拉起。
  • startup 按序启动
    Initialization-》WindowManager-》Panel-》FileManager-》Desktop、Application、mForceApplication
    并不是绝对顺序、有一定概率、后面先执行,此处是系统优化的目标之一:比如增设启动顺序优先级选项,对于有强依赖关系的进程,通过设置启动顺序优先级,不允许优先级高的进程低于优先级低的进程启动,此外各个进程有责任通知Session,该进程何时属于启动完成,否则默认认为一旦进程任务建立,进程便启动完成。

  • timerUpdate 一个QTimer事件 start后 只执行一次
    也是为了启动一些应用程序,如kylin-nm、ukui-window-switch

  • startProcess
    异步启动 ,根据.desktop中的X-UKUI-AutoRestart可以配置 程序启动后 如果程序崩溃是否重启

  • stopProcess
    杀死进程

  • restartModules 重启相应模块

  1. 崩溃退出才会重启,而且不会无限重启,只会重启10次。
  2. 其他原因导致的程序退出不会重启。
  3. 窗口管理器不管什么原因,只要是退出就会重启。
  • restartModules
    重启进程

  • logout

  1. 注销账户时 杀死相应的进程
  2. 保证各个进程死绝,并且窗口管理器是最后被杀死的。

二. XdgDesktopFile 文件描述

描述 .desktop 文件。

  • 启动选项(目前ukui-session对以下配置选项敏感)
  1. X-UKUI-Autostart-Phase 配置自启阶段
  2. Type 不知这个类型 是否还有其他程序在使用,在ukui-session中,只有Type=Application时,才会拉起。
  3. X-UKUI-AutoRestart 程序退出时,是否需要重新拉起该程序。
  4. Hidden 为true时,将退出自启列表。
  5. Exec 启动程序的位置
  • XdgDesktopFileData
    大篇幅记录了该类,但是该类并没有被使用

三. XdgAutoStart 配置自启列表

配置启动列表所用。

四. SessionApplication 会话管理

会话程序入口,负责加载基础配置,如配置文件的读取和进程通信服务的注册。

  • InitialEnvironment
    加载主题、配置文件。

  • registerDBus
    注册DBus服务-org.gnome.SessionManager,用于启动后进程之间的通信,可用来管理进程的开关,可用来管理用户的注销、关机、重启的行为。

  • SessionApplication
    启动 ModuleManager

五. IdleWatcher 空闲时间管理

封装了 KIdleTime-报告空闲时间信息的单例,用于拉起屏幕保护程序 ukui-screensaver-backend。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值