Libadwaita 项目教程
项目介绍
Libadwaita 是一个增强 GTK 4 的库,它提供了遵循 GNOME 人机交互指南(HIG)的组件,允许应用程序根据可用空间调整布局,并支持跨桌面暗色主题偏好。该项目旨在为现代 GNOME 应用程序提供构建模块。
项目快速启动
安装依赖
首先,确保你的系统上安装了必要的依赖。以下是不同操作系统的安装命令:
-
Fedora 和衍生版本:
sudo dnf install libadwaita-devel
-
Debian 和衍生版本:
sudo apt install libadwaita-1-dev
-
Arch 和衍生版本:
sudo pacman -S libadwaita
-
macOS:
brew install libadwaita
-
Windows:
- 如果使用 gvsbuild 构建 GTK 4:
gvsbuild build libadwaita librsvg
- 如果手动构建:
git clone --branch libadwaita-1-3 https://gitlab.gnome.org/GNOME/libadwaita.git cd libadwaita meson setup builddir -Dprefix=C:/gnome -Dintrospection=disabled -Dvapi=false meson install -C builddir
- 如果使用 gvsbuild 构建 GTK 4:
初始化项目
创建一个新的项目目录并初始化 Libadwaita:
mkdir my-libadwaita-app
cd my-libadwaita-app
在项目目录中创建一个 main.rs
文件,并添加以下代码:
use adw::prelude::*;
use adw::Application;
fn main() {
let app = Application::builder()
.application_id("com.example.my-libadwaita-app")
.build();
app.connect_activate(|app| {
let window = adw::ApplicationWindow::builder()
.application(app)
.default_width(800)
.default_height(600)
.build();
window.show();
});
app.run();
}
在 Cargo.toml
文件中添加依赖:
[dependencies]
adw = { package = "libadwaita", version = "0.x.y" }
运行项目:
cargo run
应用案例和最佳实践
创建一个简单的 GNOME 风格应用
使用 Libadwaita 可以轻松创建遵循 GNOME 人机交互指南的应用。以下是一个简单的示例,展示如何创建一个包含按钮和标签的窗口:
use adw::prelude::*;
use adw::{Application, ApplicationWindow, Button, Label};
fn main() {
let app = Application::builder()
.application_id("com.example.my-libadwaita-app")
.build();
app.connect_activate(|app| {
let window = ApplicationWindow::builder()
.application(app)
.default_width(800)
.default_height(600)
.build();
let button = Button::builder()
.label("Click me!")
.build();
let label = Label::builder()
.label("Hello, Libadwaita!")
.build();
button.connect_clicked(move |_| {
label.set_label("Button clicked!");
});
window.set_child(Some(&button));
window.show();
});
app.run();
}
最佳实践
- 遵循 GNOME HIG: 确保你的应用界面遵循 GNOME 人机交互指南,以提供一致的用户体验。
- 使用 Libadwaita 组件: 尽可能使用 Libadwaita 提供的组件,这些组件已经优化以遵循 GNOME 的设计准则。
- 响应式设计: 利用 Libadwaita 的布局功能,使你的应用在不同设备和窗口大小下都能良好工作。