2023-04-17 14:16:29 +08:00
|
|
|
|
# 任务栏(ukui-panel)
|
2023-04-17 13:39:31 +08:00
|
|
|
|
## 任务栏介绍
|
|
|
|
|
|
|
|
|
|
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
|
2022-06-02 16:34:50 +08:00
|
|
|
|
|
2023-04-17 13:39:31 +08:00
|
|
|
|
显示桌面按钮的功能是在当前窗口和桌面之间进行切换。
|
2022-06-02 16:34:50 +08:00
|
|
|
|
|
2023-04-17 13:39:31 +08:00
|
|
|
|
## 任务栏的主要功能
|
2022-06-02 16:34:50 +08:00
|
|
|
|
|
2023-04-17 13:39:31 +08:00
|
|
|
|
* 调整位置和调整大小
|
2022-06-02 16:34:50 +08:00
|
|
|
|
|
2023-04-17 13:39:31 +08:00
|
|
|
|
任务栏有上下左右四个位置可供选择,每个位置有大中小三个尺寸,可通过右键点击任务栏空白处调出右键菜单进行调节,也可通过gsettings命令进行调节。
|
2022-06-02 16:34:50 +08:00
|
|
|
|
|
2023-04-17 14:16:29 +08:00
|
|
|
|
获取任务栏当前位置命令:**gsettings get org.ukui.panel.settings panelposition** ,其中0代表下,1代表上,2代表左,3代表右。
|
2022-06-02 16:34:50 +08:00
|
|
|
|
|
2023-04-17 14:16:29 +08:00
|
|
|
|
调整位置命令:**gsettings set org.ukui.panel.settings panelposition 1**,表示将任务栏设置为上方。
|
2023-04-17 13:39:31 +08:00
|
|
|
|
|
2023-04-17 14:16:29 +08:00
|
|
|
|
获取任务栏当前大小命名:**gsettings get org.ukui.panel.settings panelsize**,返回值为任务栏的高度像素值,小尺寸为46,中尺寸为70,大尺寸为92。
|
2023-04-17 13:39:31 +08:00
|
|
|
|
|
2023-04-17 14:16:29 +08:00
|
|
|
|
调整大小命令:**gsettings set org.ukui.panel.settings panelsize 92**,表示将任务栏设置为大尺寸,设置的数值可以为任意值
|
2023-04-17 13:39:31 +08:00
|
|
|
|
|
|
|
|
|
* 隐藏任务栏
|
|
|
|
|
|
|
|
|
|
点击任务栏右键菜单中的隐藏任务栏选项,任务栏进入隐藏状态,留有四像素边距,鼠标进入此边距时可以唤醒任务栏,鼠标离开后又会进入隐藏状态。此状态存储于任务栏配置文件panel.conf的hidable字段中。
|
|
|
|
|
|
|
|
|
|
* 锁定任务栏
|
|
|
|
|
|
|
|
|
|
点击任务栏右键菜单中的锁定任务栏选项后,任务栏将不能被修改位置和大小,不能设置隐藏。此状态存储于任务栏配置文件panel.conf的lockPanel字段中。
|
|
|
|
|
|
|
|
|
|
## 配置文件与用户设置
|
|
|
|
|
|
|
|
|
|
* 配置文件作用
|
|
|
|
|
|
2023-04-17 14:16:29 +08:00
|
|
|
|
根目录任务栏配置文件地址:**/usr/share/ukui/panel.conf**
|
2023-04-17 13:39:31 +08:00
|
|
|
|
|
2023-04-17 14:16:29 +08:00
|
|
|
|
用户目录任务栏配置文件地址:**~/.config/ukui/panel.conf**
|
2023-04-17 13:39:31 +08:00
|
|
|
|
|
|
|
|
|
它们的作用分别是:
|
|
|
|
|
|
2023-04-17 14:16:29 +08:00
|
|
|
|
(1)根目录下的配置文件决定了任务栏需要加载哪些插件,即**/usr/share/ukui/panel.conf**文件中 [panel1] 字段的plugins的值;
|
2023-04-17 13:39:31 +08:00
|
|
|
|
|
|
|
|
|
(2)用户目录下的配置文件保存了用户的设置,包括任务栏taskbar固定的应用图标,任务栏的位置和大小、隐藏和显示,以及托盘区收纳和显示区的应用图标;、
|
|
|
|
|
|
|
|
|
|
(3)每次安装任务栏的包或者是进行任务栏升级,只更新根目录下的配置文件,而不会修改用户目录下的配置文件,避免了装包或升级导致的用户配置消失的问题。
|
|
|
|
|
|
|
|
|
|
* 配置文件内容
|
|
|
|
|
```
|
|
|
|
|
[panel1]
|
2023-04-17 14:16:29 +08:00
|
|
|
|
alignment=-1 【任务栏位置居左,0代表居中,1代表居右】
|
2023-04-17 13:39:31 +08:00
|
|
|
|
animation-duration=100 【隐藏任务栏的动画时间为100ms】
|
2023-04-17 14:16:29 +08:00
|
|
|
|
desktop=0 【任务栏位于0桌面】
|
|
|
|
|
hidable=false 【任务栏是否隐藏,false代表不隐藏,true代表隐藏】
|
|
|
|
|
lineCount=1 【任务栏单行显示】
|
|
|
|
|
lockPanel=false 【任务栏是否锁定,false代表不锁定,true代表锁定】
|
2023-04-17 13:39:31 +08:00
|
|
|
|
plugins=startbar,taskbar,statusnotifier,calendar, showdesktop 【任务栏所需要加载的插件,注:此字段从根目录下的配置文件中读取】
|
2023-04-17 14:16:29 +08:00
|
|
|
|
position=Bottom 【任务栏的位置,Bottom代表下,Top代表上,Left代表左, Right代表右】
|
2023-04-17 13:39:31 +08:00
|
|
|
|
reserve-space=true
|
2023-04-17 14:16:29 +08:00
|
|
|
|
show-delay=0 【延迟显示的时间】
|
2023-04-17 13:39:31 +08:00
|
|
|
|
visible-margin=true
|
2023-04-17 14:16:29 +08:00
|
|
|
|
width=100 【任务栏的长度,数值代表的是占屏幕长度的百分比】
|
|
|
|
|
width-percent=true 【任务栏长度是否以百分比的形式显示】
|
2023-04-17 13:39:31 +08:00
|
|
|
|
其余字段为各个插件的显示位置和内容,如:3.1以上版本的任务栏的[taskbar]字段包含了固定在任务栏的应用有哪些,默认的是文件管理器,奇安信浏览器,WPS和软件商店
|
|
|
|
|
[statusnotifier]字段包含了托盘应用哪些放在收纳栏里面(hideApp),哪些放在收纳栏外边(showApp)。
|
|
|
|
|
```
|
2022-06-02 16:34:50 +08:00
|
|
|
|
|
2023-04-17 14:16:29 +08:00
|
|
|
|
## 编译、安装、运行
|
2022-06-02 16:34:50 +08:00
|
|
|
|
|
2023-04-17 14:16:29 +08:00
|
|
|
|
在编译任务栏代码前需要安装debian/control文件中的编译依赖
|
|
|
|
|
```
|
|
|
|
|
sudo mk-build-deps -i debain/control
|
|
|
|
|
//如果执行后仍然报缺少依赖,再手动安装缺少的部分
|
|
|
|
|
```
|
|
|
|
|
安装完所有依赖后,新建一个build文件夹
|
2023-04-17 13:39:31 +08:00
|
|
|
|
```
|
|
|
|
|
mkdir build
|
|
|
|
|
```
|
|
|
|
|
在build目录下执行以下进行编译、安装
|
|
|
|
|
```
|
|
|
|
|
cmake .. && make -j12 && sudo make install
|
|
|
|
|
```
|
|
|
|
|
编译通过后执行以下运行
|
|
|
|
|
```
|
2022-06-02 16:34:50 +08:00
|
|
|
|
./panel/ukui-panel
|
|
|
|
|
```
|
|
|
|
|
|
2023-04-17 13:39:31 +08:00
|
|
|
|
## 调试
|
|
|
|
|
|
2023-04-17 14:16:29 +08:00
|
|
|
|
任务栏采用了ukui-log4qt模块的日志功能,输出的日志在/**$HOME/.log/ukui-panel.log**中,如需调试可在终端输入**tail -f ukui-panel.log**命令,可实时查看任务栏的日志输出
|
2023-04-17 13:39:31 +08:00
|
|
|
|
```
|
|
|
|
|
tail -f ukui-panel.log
|
|
|
|
|
```
|
2023-04-17 14:22:13 +08:00
|
|
|
|
如果需要查看打印日志,需要设置系统日志等级 **gsettings set org.ukui.ukui-log4qt log4j-rootlogger 'DEBUG,daily'**,设置后再使用**tail -f ukui-panel.log**查看。
|
2023-04-17 13:39:31 +08:00
|
|
|
|
|
|
|
|
|
## 运行
|
|
|
|
|
|
2023-04-17 14:18:41 +08:00
|
|
|
|
任务栏的进程共有4个,均为开机自启动进程:
|
2023-04-17 13:39:31 +08:00
|
|
|
|
|
|
|
|
|
ukui-panel 任务栏的GUI界面
|
|
|
|
|
|
|
|
|
|
panel-daemon 任务栏后台进程,负责监听任务栏添加和删除应用,以及应用的分组显示
|
|
|
|
|
|
|
|
|
|
sni-daemon SNI协议后台进程,负责监听托盘区图标的注册和注销
|
|
|
|
|
|
|
|
|
|
sni-xembed-proxy 将使用X协议注册的托盘图标转换成SNI协议
|
2023-04-17 14:18:41 +08:00
|
|
|
|
|
2023-04-17 13:39:31 +08:00
|
|
|
|
|
|
|
|
|
## 任务栏提供的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
|
|
|
|
|
|
2023-04-17 14:18:41 +08:00
|
|
|
|
方法:WIDToDesktop (Int32 id) ↦ (String arg_0) //根据窗口id找到其对应的desktop文件,进行分组显示
|