Ubuntu Kylin技术论坛

 找回密码
查看: 502|回复: 4

优麒麟电源管理浅析

[复制链接]

该用户从未签到

发表于 2019-8-19 21:08:55 | 显示全部楼层 |阅读模式

最近有研发小哥哥的加持,软文高频产出,目的是能让大家更深入的了解和使用我们的优麒麟操作系统,本期为大家介绍的是优麒麟电源管理工具。

在优麒麟系统的桌面应用中,电源管理工具(ukui-power-manager)能够监听系统事件和用户偏好设置,用来设置电源选项和屏保选项,比如设置显示器空闲多久进入睡眠和屏保采用的界面,同时还提供了显示电源相关的属性,功率,充放电统计等功能。相比台式机,笔记本电脑增加了电池相关的属性收集和显示,笔记本上的应用界面如图1。


图1 ukui-power-manager显示界面

ukui-power-manager主要包括了三个部分:



1、数据来源

这些界面的内容并不复杂,值得一探究竟的是界面上显示元素的数据来源。当笔记本接上电源电池开始充电,ukui-power-manager的界面能够显示充满电时间。我们就从这个time_to_full值获取的入口出发,来理解整个显示元素的数据来源。这个值是通过一个名称为gpm_stats_update_info_page_details的函数内部调用g_object_get函数获取的。g_object_get则是GObject提供的一个函数。

ukui-power-manager只是一个前端显示程序,在它后面存在一个程序,提供了诸如充放电时间这样的数据。这个后端程序就是upower,在upower中用来计算time_to_full的公式如下:

time_to_full = 3600 * ((energy_full - energy) / energy_rate);

不难理解,公式意思是满时的能量减去当前能量,得到的差值除以功率,再把结果转换成秒单位。那么这几个新引入的变量又从哪里获取的?满时能量按常理在运行时是不会改变的,功率可能有大有小,变化应该也不大。当前能量是通过sysfs_get_double这个函数的返回值获得,在这个函数内部打开了一个文件,然后从文件里获取到了数据。这个文件是由内核进行写操作的。至此,找到了界面上数据time_to_full的源头。


2、DBus和GObjec共同的作用

图2 DBus和GObject层次

1)基本概念

DBus是一种进程间进行通信的机制,在桌面程序中大量地应用。它主要的概念就是总线,开发者注册进程到总线,然后就可以通过方法和信号进行通信。DBus底层是socket机制,提供了更高一层的接口,更方便了程序之间进行数据交换。GObject 是GTK+的一个程序库,提供使用 C 语言编写面向对象程序的方法。

2)作用
  现在来看一看前端ukui-power-manager和upower的具体源代码,发现都使用了DBus这种通信框架。要想完全理解DBus又是一个不小的专题,这里只是管中窥豹,了解一些基本的用法。d-feet是一个非常有用的工具,可以查看系统里所有的DBus连接。终端敲入命令d-feet,可以看到有一个系统Bus叫做org.freedesktop.UPower,还可以看到一个会话Bus叫做org.ukui.PowerManager。于是这两个程序就可以通过Bus连接进行数据通信。



图3 d-feet查看Bus通信



打开d-feet界面的org.ukui.PowerManager这个Bus连接,找到它提供的接口org.ukui.PowerManager.Backlight。找到方法SetBrightness并双击弹出输入参数界面,如下图所示,简单的输入79,点击运行发现屏幕背光亮度发生了调整。通过这种简单的方式,调用了DBus服务端提供的一个方法,把亮度调节到了79的百分比。



图4 d-feet中运行方法



以上就是对优麒麟电源管理工具和使用的编程技术的一些简单分析,希望可以给初次接触优麒麟桌面的读者带来一点感性认识,欢迎大家进一步探究具体实现的详细过程。


回复

使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 62 天

    [LV.6]常住居民II

    发表于 2019-8-20 09:31:25 | 显示全部楼层
    好文。支持一下。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2019-8-21 18:56:01 | 显示全部楼层
    我偷偷来水一下,顺便看看IV能不能插入视频。
    下面(可能会)是我这个非常菜的PV随便做的蝴蝶~
    重庆时时彩幸运飞艇北京pk10视频床是我自建的,完善以后应该会对论坛里的小伙伴们开放~

    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2019-8-27 16:32:21 | 显示全部楼层
    wcswcs4 发表于 2019-8-20 09:31
    好文。支持一下。

    感谢~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 62 天

    [LV.6]常住居民II

    发表于 2019-9-1 08:35:56 | 显示全部楼层
    18.04/19.04电源管理,对屏保的设置一直无权?不明白是什么意思?
    对一个发行版 来说,这有什么限权的必要吗?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|Ubuntu Kylin    

    GMT+8, 2019-10-23 16:38 , Processed in 0.018452 second(s), 8 queries , File On.

    Copyright ©2013-2019 Ubuntu Kylin. All Rights Reserved .

    ICP No. 15002470-2 Tianjin

    快速回复 返回顶部 返回列表