Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Deepin Integration]~[V23-Beta3] upgrade gtk4 (4.16.7+ds-1) unstable by Woomeeme@deepin-community/gtk4 by deepin-community-ci-bot[bot] #11085

Open
deepin-bot bot opened this issue Dec 21, 2024 · 3 comments
Assignees
Labels
Project:integrated 集成管理相关
Milestone

Comments

@deepin-bot
Copy link

deepin-bot bot commented Dec 21, 2024

Package information | 软件包信息

包名 版本
gtk4 4.16.7+ds-1deepin1

Package repository address | 软件包仓库地址

deb [trusted=yes] https://ci.deepin.com/repo/obs/deepin:/CI:/TestingIntegration:/test-integration-pr-2391/testing/ ./

Changelog | 更新信息

gtk4 (4.16.7+ds-1deepin1) unstable; urgency=medium

  • Skip gdk image test
@deepin-bot deepin-bot bot added the Project:integrated 集成管理相关 label Dec 21, 2024
@deepin-bot deepin-bot bot added this to the V23-Beta3 milestone Dec 21, 2024
@deepin-bot deepin-bot bot moved this to In progress in v23-集成管理 Dec 21, 2024
@deepin-bot
Copy link
Author

deepin-bot bot commented Dec 21, 2024

Integration Test Info

Test suggestion | 测试建议

GTK4 简介

GTK4 (GIMP Toolkit 4) 是一个用于构建图形用户界面的跨平台工具包,广泛应用于 Linux 桌面应用程序的开发。它是 GTK 系列的第四个主要版本,相较于 GTK3 引入了许多新功能和改进,特别是对现代用户界面技术的支持。

GTK4 由 GNOME 项目维护,是 GNOME 桌面环境的核心部分,但也可用于其他桌面环境甚至跨平台的 GUI 应用开发。


GTK4 的主要特点

  1. 现代化的绘图模型

    • 引入了更先进的绘图机制,利用 GPU 加速以提升性能。
    • 支持 Vulkan 和 OpenGL 后端。
  2. 改进的输入事件处理

    • 新的事件控制器系统使事件处理更直观。
  3. 灵活的布局管理

    • 提供更多的容器类型和布局管理器,适合响应式设计需求。
  4. 支持硬件加速

    • 增强了对硬件加速的支持,改进了图像和视频渲染。
  5. 动画和过渡效果

    • 内置支持动画和过渡效果,使得应用更具动态和现代感。
  6. 多平台支持

    • 支持 Linux、Windows 和 macOS,适合开发跨平台应用。
  7. 更好的资源管理

    • 提供了一个新的资源系统,用于管理应用程序的嵌入资源(例如图标、UI 文件)。

与 GTK3 的主要区别

特性 GTK3 GTK4
渲染后端 Cairo 渲染 GPU 加速 (Vulkan/OpenGL)
事件处理 信号回调机制 事件控制器系统
动画支持 基本支持动画 内置支持动画和过渡效果
布局管理 静态布局容器较多 支持更灵活的布局
图像和多媒体 基础支持 改进了图像和视频渲染
多平台支持 基本支持 增强对 Windows 和 macOS 的支持

如何安装 GTK4

在 Debian/Ubuntu 系统上

sudo apt update
sudo apt install libgtk-4-dev

在 Fedora 系统上

sudo dnf install gtk4-devel

在 Arch Linux 系统上

sudo pacman -S gtk4

GTK4 应用开发

开发工具

  • Glade:图形化界面设计工具,支持 GTK3/4 的 UI 文件设计。
  • Builder:GNOME 提供的集成开发环境,支持 GTK 应用开发。
  • Meson:构建系统,GTK4 项目推荐使用 Meson/Ninja 进行构建。

编程语言支持

GTK4 提供多种语言绑定,支持以下主流编程语言:

  • C:GTK4 的核心语言。
  • Python:通过 PyGObject 提供绑定。
  • C++:使用 Gtkmm。
  • Rust:使用 gtk-rs
  • JavaScript:通过 GJS 提供支持。

创建一个简单的 GTK4 应用

下面是一个用 C 编写的 GTK4 示例:

#include <gtk/gtk.h>

static void on_activate(GtkApplication *app, gpointer user_data) {
GtkWidget *window = gtk_application_window_new(app);
gtk_window_set_title(GTK_WINDOW(window), "Hello, GTK4!");
gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);
gtk_widget_show(window);
}

int main(int argc, char *argv[]) {
GtkApplication *app = gtk_application_new("com.example.GTK4App", G_APPLICATION_FLAGS_NONE);
g_signal_connect(app, "activate", G_CALLBACK(on_activate), NULL);
int status = g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);
return status;
}

编译命令:

gcc -o gtk4_app gtk4_app.c `pkg-config --cflags --libs gtk4`

运行:

./gtk4_app

GTK4 常见问题及解决方法

问题 1:程序无法运行,提示“未找到 GTK4 库”

  • 确保 GTK4 库已正确安装。
  • 检查环境变量 PKG_CONFIG_PATH 是否包含 GTK4 的 pkgconfig 路径。

问题 2:UI 渲染性能较差

  • 确保你的系统支持 GPU 加速。
  • 更新到最新的 GTK4 版本,可能包含性能优化。

问题 3:旧版 GTK3 应用迁移到 GTK4

  • GTK4 的 API 变动较大,需要更新信号连接、容器布局和渲染逻辑。
  • 参考官方迁移指南:GTK4 Migration Guide

学习资源

GTK4 是一个功能强大且现代化的工具包,适合开发跨平台、高性能和美观的桌面应用程序。如果你熟悉 GTK3,学习 GTK4 会让你的应用程序获得更好的用户体验和性能。

### **GTK4 简介**

GTK4 (GIMP Toolkit 4) 是一个用于构建图形用户界面的跨平台工具包,广泛应用于 Linux 桌面应用程序的开发。它是 GTK 系列的第四个主要版本,相较于 GTK3 引入了许多新功能和改进,特别是对现代用户界面技术的支持。

GTK4 由 GNOME 项目维护,是 GNOME 桌面环境的核心部分,但也可用于其他桌面环境甚至跨平台的 GUI 应用开发。


GTK4 的主要特点

  1. 现代化的绘图模型

    • 引入了更先进的绘图机制,利用 GPU 加速以提升性能。
    • 支持 Vulkan 和 OpenGL 后端。
  2. 改进的输入事件处理

    • 新的事件控制器系统使事件处理更直观。
  3. 灵活的布局管理

    • 提供更多的容器类型和布局管理器,适合响应式设计需求。
  4. 支持硬件加速

    • 增强了对硬件加速的支持,改进了图像和视频渲染。
  5. 动画和过渡效果

    • 内置支持动画和过渡效果,使得应用更具动态和现代感。
  6. 多平台支持

    • 支持 Linux、Windows 和 macOS,适合开发跨平台应用。
  7. 更好的资源管理

    • 提供了一个新的资源系统,用于管理应用程序的嵌入资源(例如图标、UI 文件)。

与 GTK3 的主要区别

特性 GTK3 GTK4
渲染后端 Cairo 渲染 GPU 加速 (Vulkan/OpenGL)
事件处理 信号回调机制 事件控制器系统
动画支持 基本支持动画 内置支持动画和过渡效果
布局管理 静态布局容器较多 支持更灵活的布局
图像和多媒体 基础支持 改进了图像和视频渲染
多平台支持 基本支持 增强对 Windows 和 macOS 的支持

如何安装 GTK4

在 Debian/Ubuntu 系统上

sudo apt update
sudo apt install libgtk-4-dev

在 Fedora 系统上

sudo dnf install gtk4-devel

在 Arch Linux 系统上

sudo pacman -S gtk4

GTK4 应用开发

开发工具

  • Glade:图形化界面设计工具,支持 GTK3/4 的 UI 文件设计。
  • Builder:GNOME 提供的集成开发环境,支持 GTK 应用开发。
  • Meson:构建系统,GTK4 项目推荐使用 Meson/Ninja 进行构建。

编程语言支持

GTK4 提供多种语言绑定,支持以下主流编程语言:

  • C:GTK4 的核心语言。
  • Python:通过 PyGObject 提供绑定。
  • C++:使用 Gtkmm。
  • Rust:使用 gtk-rs
  • JavaScript:通过 GJS 提供支持。

创建一个简单的 GTK4 应用

下面是一个用 C 编写的 GTK4 示例:

#include <gtk/gtk.h>

static void on_activate(GtkApplication *app, gpointer user_data) {
    GtkWidget *window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW(window), "Hello, GTK4!");
    gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);
    gtk_widget_show(window);
}

int main(int argc, char *argv[]) {
    GtkApplication *app = gtk_application_new("com.example.GTK4App", G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app, "activate", G_CALLBACK(on_activate), NULL);
    int status = g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);
    return status;
}

编译命令:

gcc -o gtk4_app gtk4_app.c `pkg-config --cflags --libs gtk4`

运行:

./gtk4_app

GTK4 常见问题及解决方法

问题 1:程序无法运行,提示“未找到 GTK4 库”

  • 确保 GTK4 库已正确安装。
  • 检查环境变量 PKG_CONFIG_PATH 是否包含 GTK4 的 pkgconfig 路径。

问题 2:UI 渲染性能较差

  • 确保你的系统支持 GPU 加速。
  • 更新到最新的 GTK4 版本,可能包含性能优化。

问题 3:旧版 GTK3 应用迁移到 GTK4


学习资源

GTK4 是一个功能强大且现代化的工具包,适合开发跨平台、高性能和美观的桌面应用程序。如果你熟悉 GTK3,学习 GTK4 会让你的应用程序获得更好的用户体验和性能。

Influence | 影响范围

ADDITIONAL INFORMATION | 额外补充

@deepin-bot
Copy link
Author

deepin-bot bot commented Dec 21, 2024

IntegrationProjector Notify the author
@Woomeeme: Integrated issue updated

@deepin-bot
Copy link
Author

deepin-bot bot commented Dec 21, 2024

IntegrationProjector Bot
Deepin Testing Integration Project Manager Info
Link to deepin-community/Repository-Integration#2391

@Zeno-sole Zeno-sole assigned babyfengfjx and unassigned Zeno-sole and hudeng-go Dec 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Project:integrated 集成管理相关
Projects
Status: In progress
Development

No branches or pull requests

3 participants