Go to file
youdiansaodongxi 758835fca2 fix(notification): 修复通知中心与通知弹窗位置异常的bug 2024-09-14 14:32:20 +08:00
.github/workflows Import Upstream version 3.3.0.1.0519.1 2022-06-02 16:27:58 +08:00
3rd-parties/qtsingleapplication style: 清理代码 2023-12-26 16:01:46 +08:00
data feat: 增加dbus信号用于获取内部通知数量 2024-02-23 16:34:54 +08:00
man !12 导入3.22侧边栏作为上游分支 2023-03-24 17:35:48 +08:00
qml fix(qml/org/ukui/notification/ui/NotificationCenterHeader.qml):修改平板点击通知中心 新通知后的> 按钮未自动收起通知中心 2024-09-13 14:12:35 +08:00
res add(ukui-shortcut): add soft-freeze shortcut 2023-11-14 01:04:51 +00:00
src fix(notification): 修复通知中心与通知弹窗位置异常的bug 2024-09-14 14:32:20 +08:00
translations style: update translations 2024-02-27 15:01:25 +08:00
ukui-shortcut fix(ukui-shortcut): 修改截图插件调用dbus错误的问题 2024-09-06 16:45:50 +08:00
ukui-sidebar-items fix(UI):解决侧边栏字体不跟随系统问题(issues:I71ZRA) 2023-09-13 13:59:56 +08:00
.gitignore feat: 增加滚轮调整进度条功能 2023-11-08 09:58:59 +08:00
AUTHORS !12 导入3.22侧边栏作为上游分支 2023-03-24 17:35:48 +08:00
CMakeLists.txt fix: 修复亮度图标不变化问题,修改蓝牙文案,指定sidebar翻译的源码目录,修改通知超时时间单位为毫秒 2024-02-28 09:40:15 +08:00
COPYING Import Upstream version 3.3.0.1.0519.1 2022-06-02 16:27:58 +08:00
LICENSE add LICENSE. 2023-03-24 17:37:55 +08:00
README.md feat(README):添加快捷面板插件demo的仓库地址 2024-04-25 01:22:23 +00:00

README.md

ukui-sidebar

简介

ukui-sidebar是ukui桌面环境中的侧边栏快捷工具主要包括控制中心和通知中心两个部分。

编译

# 使用不同发行版对应的包管理器安装编译依赖以debian系举个栗子
# 1.0. 侧边栏目前的依赖如下(可能会有改动)
pkgconf libxcb1-dev libgsettings-qt-dev qtbase5-dev qt5-qmake qtchooser qttools5-dev-tools qtdeclarative5-dev libkf5windowsystem-dev libqt5x11extras5-dev libkysdk-waylandhelper-dev libopencv-dev
# 1.1. 直接使用apt下载并安装全部依赖
sudo apt install pkgconf libxcb1-dev libgsettings-qt-dev qtbase5-dev qt5-qmake qtchooser qttools5-dev-tools qtdeclarative5-dev libkf5windowsystem-dev libqt5x11extras5-dev libkysdk-waylandhelper-dev libopencv-dev

# 2.0. 也可以使用mk-build-deps工具检查并安装编译依赖该工具包含在devscripts包中
sudo apt install devscripts
# 2.1. 自动安装依赖,在源码根目录执行:
sudo mk-build-deps -i

# 2.2. 手动检查并安装依赖,在源码根目录执行:
sudo mk-build-deps
# 2.3. 查看生成的 xxx.deb包(xxx是版本号)使用dpkg -I解析deb包的编译依赖
dpkg -I ukui-sidebar-build-deps_xxx_all.deb

# 3. 编译:进入源码根目录,打开终端,编译侧边栏
mkdir build; cd build; qmake ..; make; sudo make install

控制中心

控制主要功能是提供了一组系统设置快捷键类似手机上的下滑控制中心。快捷键按钮均基于libukui-shortcut-dev提供的插件接口实现。

通知中心

通知中心可以显示用户最近的消息通知,提供了便捷的消息分组查看和删除功能。

运行

ukui-sidebar作为ukui桌面环境组件默认开机自启且无法关闭。侧边栏有pc模式和平板模式两种显示模式pc模式下侧边栏可通过点击托盘图标或从屏幕右边缘左滑唤起也可以通过快捷键 super + a 唤起。平板模式下侧边栏分为控制中心和通知中心两部分控制中心唤起方式和上面提到的pc模式的三种方法相同通知中心需要从屏幕上边缘下滑唤起。

快捷键,命令行和交互接口

快捷键

目前侧边栏只有 super + a 一组快捷键。

命令行

Options: 
  -S, --state          Show the current state of the sidebar.
  -s, --show <option>  There are two options, 'notify' and 'control'.
  -q, --quit           Quit sidebar.
  -h, --help           Displays this help.
  -v, --version        Displays version information.

交互接口

控制中心

控制中心中的快捷键插件使用很多ukui桌面环境其他组件的接口多为gsettings或dbus形式。

========此处待补充========

通知中心

侧边栏启动之后会注册一个dbus接口

service:"org.ukui.Sidebar"
path:"/org/ukui/Sidebar/notification"
interface:"/org/ukui/Sidebar/notification"
sidebarNotification (String appName, String appIcon, String summary, String body, String urlStr, String action) ↦ ()

ukui-notification-center(ukui通知中心组件)会按照一定的规则,调用这个接口发送消息给侧边栏通知中心。目前侧边栏支持的通知类型比较单一,不支持其他复杂的如常驻通知,实时刷新状态的通知等。 我们正在考虑将通知中心组件ukui-notification-center的功能整合进侧边栏并基于freedesktop协议丰富通知中心的功能。

通知中心计划

=======todo=======

编译与调试

编译

git clone 
cd ukui-sidebar
mkdir build;cd build
qmake ..
make

ukui-sidebar的项目接口主要分为libukui-shortcut快捷键插件管理器和srcukui-sidebar应用本体两部分。 libukui-short提供了侧边栏控制中心快捷键插件接口src为侧边栏应用主体。编译完成后执行sudo make install即可完成安装。

调试

安装完成后终端执行ukui-sidebar即可启动侧边栏。在~/.config/org.ukui/目录新建ukui-sidebar.log日志文件应用日志会自动输出到此文件。

暂时没有日志自动记录,备份或删除机制

开发接口

基于Qt插件框架目前侧边栏提供了一个控制中心快捷操作的插件接口

class UKUISHORTCUT_EXPORT Shortcut : public QObject
{
    Q_OBJECT
public:
    explicit Shortcut(QObject *parent = nullptr) : QObject(parent) {}
    //插件标识
    virtual QString pluginId() = 0;
    //插件类型(样式), 需要指定不同模式下的按钮
    virtual QMap<PluginMetaType::SystemMode, PluginMetaData> pluginMetaData() = 0;
    //实现响应前端用户操作
    virtual void active(PluginMetaType::Action action) = 0;
    //进度条样式需要重写该函数
    virtual void setValue(int value) {Q_UNUSED(value)}
    //返回插件当前的状态信息
    virtual const StatusInfo currentStatus() = 0;
    //是否启用
    virtual bool isEnable() { return true; }

Q_SIGNALS:
    void statusChanged(const StatusInfo &info);
    void enableStatusChanged(bool isEnable);
};

基于Qt插件框架此接口可以提供三种按钮格式的接口:

enum PluginType
{
    Icon = 0,    //图标样式
    ProgressBar, //进度条样式
    MenuButton   //可展开菜单按钮样式
};

快捷面板插件demo位于https://gitee.com/qiqi49/shortcut-plugin-test实现了一个按钮类型的插件功能为点击即打开默认浏览器访问B站

Use with CMake:

find_package(PkgConfig)
pkg_check_modules(ukui-shortcut REQUIRED ukui-shortcut)
include_directories(${ukui-shortcut_INCLUDE_DIRS})
target_link_libraries(yourapp ukui-shortcut)

Use with Qmake

CONFIG += link_pkgconfig
PKGCONFIG += ukui-shortcut