Go to file
zhangyinjie bb0d030acf *Fix:修改README 2023-04-17 13:40:31 +08:00
.github/workflows Import Upstream version 3.14.0.1 2022-06-02 16:34:50 +08:00
cmake Import Upstream version 3.14.0.1 2022-06-02 16:34:50 +08:00
man Import Upstream version 3.14.0.1 2022-06-02 16:34:50 +08:00
panel panel中的CMakeLists文件优化 2023-04-14 11:38:51 +08:00
panel-daemon 同步主线最新改定 && 代码优化 2023-04-10 16:53:55 +08:00
plugin-calendar *Fix:将gitlab v101分支的托盘和日历代码同步到upstream 2023-04-10 09:49:00 +08:00
plugin-showdesktop Import Upstream version 3.14.0.1 2022-06-02 16:34:50 +08:00
plugin-spacer Import Upstream version 3.14.0.1 2022-06-02 16:34:50 +08:00
plugin-startbar 同步主线最新改定 && 代码优化 2023-04-10 16:53:55 +08:00
plugin-statusnotifier 同步主线最新改定 && 代码优化 2023-04-10 16:53:55 +08:00
plugin-taskbar 同步主线最新改定 && 代码优化 2023-04-10 16:53:55 +08:00
sni-daemon 从商业版本同步一些已经解决的bug 2023-02-07 13:40:38 +08:00
sni-xembed-proxy *Fix:将gitlab v101分支的托盘和日历代码同步到upstream 2023-04-10 09:49:00 +08:00
AUTHORS Import Upstream version 3.14.0.1 2022-06-02 16:34:50 +08:00
CHANGELOG Import Upstream version 3.14.0.1 2022-06-02 16:34:50 +08:00
CMakeLists.txt 同步主线最新改定 && 代码优化 2023-04-10 16:53:55 +08:00
COPYING Import Upstream version 3.14.0.1 2022-06-02 16:34:50 +08:00
NEWS Import Upstream version 3.14.0.1 2022-06-02 16:34:50 +08:00
README.md *Fix:修改README 2023-04-17 13:40:31 +08:00

README.md

此文档主要介绍任务栏的接口和主要功能实现逻辑。

任务栏介绍

ukui-panel是UKUI桌面环境的任务栏。任务栏采用插件加载机制主要包含startbar(开始菜单)taskbar(窗口切换区)statusnotifier(托盘区)calendar(日历)showdesktop(显示桌面)这6个插件下面依次介绍每个插件的功能

  • startbar

    此插件包含开始菜单按钮和显示任务视图多任务视图按钮当这两个按钮被左键点击时任务栏会调用并执行开始菜单或多任务视图所对应的二进制文件实现相应的功能。或者调用开始菜单和KWin提供的DBus接口也可以实现相应的功能。两种种调用方式的选择和系统版本有关。

    在开始菜单按钮上右键可以看到任务栏提供的一些操作1用户操作包括锁屏和注销2休眠或睡眠依据机器是否支持休眠操作决定休眠选项是否可选3电源包括重启定时关机和关机操作。

    显示任务视图按钮是否展示与任务栏设置有关。用户可以通过右键任务栏空白处唤出菜单,通过设置菜单中的“显示任务试图按钮”项决定是否显示该按钮。

  • taskbar

    此区域主要用来展示用户固定到任务栏的应用以及所有已经打开的应用的图标通过图标的点击可实现窗口切换。taskbar提供的接口主要有

    1将应用固定到任务栏此接口主要提供给开始菜单和搜索可以快捷的将应用固定到任务栏

    2从任务栏取消固定此接口主要提供给开始菜单和搜索可以快捷的将应用在任务栏取消固定

    3应用分组显示接口此接口主要实现的功能是让同一应用的图标显示在一起每个应用都有一个组名组名相同的则将图标放在一起显示此接口主要由panel-daemon后台服务进程供当有新窗口打开时首先检测是否存在已经打开的此应用如有则作为一组图标显示若没有则在任务栏增加新的按钮。

  • statusnotifier

    托盘区的功能是为应用创建一个快捷操作按钮可以执行相关操作或显示应用状态。应用可通过SNI(StatusNotifierItem)协议将图标注册到托盘区域,图标的左键和右键功能取决于应用的设置。

  • calendar

    日历插件主要用于显示日历界面和时间,左键单击可以调出日历界面,右键单击可进入控制面板的时间和日期的设置界面。

  • showdesktop

    显示桌面按钮的功能是在当前窗口和桌面之间进行切换。

任务栏的主要功能

  • 调整位置和调整大小

    任务栏有上下左右四个位置可供选择每个位置有大中小三个尺寸可通过右键点击任务栏空白处调出右键菜单进行调节也可通过gsettings命令进行调节。

    获取任务栏当前位置命令gsettings get org.ukui.panel.settings panelposition 其中0代表下1代表上2代表左3代表右。

    调整位置命令gsettings set org.ukui.panel.settings panelposition 1表示将任务栏设置为上方。

    获取任务栏当前大小命名gsettings get org.ukui.panel.settings panelsize返回值为任务栏的高度像素值小尺寸为46中尺寸为70大尺寸为92。

    调整大小命令gsettings set org.ukui.panel.settings panelsize 92表示将任务栏设置为大尺寸设置的数值可以为任意值

  • 隐藏任务栏

    点击任务栏右键菜单中的隐藏任务栏选项任务栏进入隐藏状态留有四像素边距鼠标进入此边距时可以唤醒任务栏鼠标离开后又会进入隐藏状态。此状态存储于任务栏配置文件panel.conf的hidable字段中。

  • 锁定任务栏

    点击任务栏右键菜单中的锁定任务栏选项后任务栏将不能被修改位置和大小不能设置隐藏。此状态存储于任务栏配置文件panel.conf的lockPanel字段中。

配置文件与用户设置

  • 配置文件作用

    根目录任务栏配置文件地址:/usr/share/ukui/panel.conf

    用户目录任务栏配置文件地址:~/.config/ukui/panel.conf

    它们的作用分别是:

    1根目录下的配置文件决定了任务栏需要加载哪些插件即/usr/share/ukui/panel.conf文件中 [panel1] 字段的plugins的值

    2用户目录下的配置文件保存了用户的设置包括任务栏taskbar固定的应用图标任务栏的位置和大小、隐藏和显示以及托盘区收纳和显示区的应用图标

    3每次安装任务栏的包或者是进行任务栏升级只更新根目录下的配置文件而不会修改用户目录下的配置文件避免了装包或升级导致的用户配置消失的问题。

  • 配置文件内容

[panel1]
alignment=-1                         【任务栏位置居左0代表居中1代表居右】
animation-duration=100  【隐藏任务栏的动画时间为100ms】
desktop=0                               【任务栏位于0桌面】
hidable=false						 【任务栏是否隐藏false代表不隐藏true代表隐藏】
lineCount=1                           【任务栏单行显示】
lockPanel=false                    【任务栏是否锁定false代表不锁定true代表锁定】
plugins=startbar,taskbar,statusnotifier,calendar, showdesktop     【任务栏所需要加载的插件,注:此字段从根目录下的配置文件中读取】
position=Bottom                 【任务栏的位置Bottom代表下Top代表上Left代表左 Right代表右】
reserve-space=true
show-delay=0                       【延迟显示的时间】
visible-margin=true
width=100                              【任务栏的长度,数值代表的是占屏幕长度的百分比】
width-percent=true           【任务栏长度是否以百分比的形式显示】
其余字段为各个插件的显示位置和内容3.1以上版本的任务栏的[taskbar]字段包含了固定在任务栏的应用有哪些默认的是文件管理器奇安信浏览器WPS和软件商店
[statusnotifier]字段包含了托盘应用哪些放在收纳栏里面hideApp哪些放在收纳栏外边showApp

编译

在编译任务栏代码前需要安装debian/control文件中写到的编译依赖安装完所有依赖后新建一个build文件夹

mkdir build

在build目录下执行以下进行编译、安装

cmake .. && make -j12 && sudo make install

编译通过后执行以下运行

./panel/ukui-panel

调试

任务栏采用了ukui-log4qt模块的日志功能输出的日志在用户目录下的.log文件夹内的ukui-panel.log中如需调试可在终端输入tail -f ukui-panel.log命令可实时查看任务栏的日志输出

tail -f ukui-panel.log

如果需要查看打印日志,需要设置系统日志等级 settings set org.ukui.ukui-log4qt log4j-rootlogger 'DEBUG,daily',设置后再使用tail -f ukui-panel.log查看。

运行

任务栏的进程共有4个

ukui-panel    任务栏的GUI界面

panel-daemon   任务栏后台进程,负责监听任务栏添加和删除应用,以及应用的分组显示

sni-daemon   SNI协议后台进程负责监听托盘区图标的注册和注销

sni-xembed-proxy   将使用X协议注册的托盘图标转换成SNI协议

任务栏的进程均为开机自启动进程

任务栏提供的DBUS接口

  • 接口1

    服务com.ukui.panel.desktop

    路径:/

    接口com.ukui.panel.desktop

    方法AddToTaskbar (String desktop) ↦ (Boolean arg_0) //添加到任务栏

    方法CheckIfExist (String desktop) ↦ (Boolean arg_0) //检测任务栏是否已经存在此应用

    方法RemoveFromTaskbar (String desktop) ↦ (Boolean arg_0) //从任务栏移除

  • 接口2

    服务org.ukui.panel.daemon

    路径:/convert/desktopwid

    接口org.ukui.panel.daemon

    方法WIDToDesktop (Int32 id) ↦ (String arg_0) //根据窗口id找到其对应的desktop文件进行分组显示