ukui-panel/README.md

161 lines
8.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 任务栏ukui-panel
## 任务栏介绍
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文件中的编译依赖
```
sudo apt install devscripts equivs
sudo mk-build-deps -i debain/control
//如果执行后仍然报缺少依赖,再手动安装缺少的部分
```
安装完所有依赖后新建一个build文件夹
```
mkdir build
```
在build目录下执行以下进行编译、安装
```
cmake .. && make -j12 && sudo make install
```
编译通过后执行以下运行
```
./panel/ukui-panel
```
## 调试
任务栏采用了ukui-log4qt模块的日志功能输出的日志在/**$HOME/.log/ukui-panel.log**中,如需调试可在终端输入**tail -f $HOME/.log/ukui-panel.log**命令,可实时查看任务栏的日志输出
```
tail -f ukui-panel.log
```
如果需要查看打印日志,需要设置系统日志等级 **gsettings 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文件进行分组显示