#213 固定规则

2025年8月22日 • 6 条笔记 • 由 Felix 整理

关于 GNOME 项目在 8 月 15 日至 8 月 22 日期间发生情况的更新。

GNOME 核心应用和库

Glycin

沙盒化和可扩展的图像加载和编辑。

Sophie (她/她) 发布

Glycin 2.0.beta.3 已发布。重要的更改包括修复了在某些配置下缩略图无法工作的问题,JPEG XL 的加载速度得到了显著提升,修复了破坏某些系统上图像加载的沙盒规则,以及修复了以渐进模式保存的一些 JPEG 图像的编辑问题。

GNOME Circle 应用和库

Déjà Dup Backups

一个简单的备份工具。

Michael Terry 发布

Déjà Dup 49.beta 已发布!它只是修复了一些小错误,并使用了新的 libadwaita 快捷方式对话框。

但如果您还没有尝试 49.x 分支,它具有重大的 UI 重构,并为 Restic 备份添加了基于文件管理器的恢复功能。

更多详细信息和安装说明请参见 之前的 49.alpha 发布公告。感谢您在发布之前进行的任何测试!

第三方项目

Mir Sobhan 发布

我们分叉了 TWIG 网站,并将其锻造成一个“新手友好问题”追踪器。它捕获 GitHub 和 GNOME GitLab 上的所有 GNOME 相关项目,以显示标记为“新手友好问题”或“新手”的问题。这可以帮助新手找到贡献的地方,包括我自己。

网站:https://ggfi.mirsobhan.ir 仓库:https://gitlab.gnome.org/misano/goodfirstissue

Džeremi

Chronograph 迎来了一个巨大的 4.0 更新!

Chronograph 是什么?

Chronograph 是一个用于同步歌词的应用程序,使其在支持的播放器中像卡拉 OK 一样显示。它具有漂亮的 GTK4 + LibAdwaita 界面,并包含内置的元数据编辑器,因此您可以管理您的音乐库以及同步歌词。默认 LRC 文件可以发布到大型歌词数据库 LRClib.net,许多开源播放器广泛使用它来获取歌词。直到现在,Chronograph 仅支持逐行歌词,这对于大多数情况来说已经足够了,因为标准的 LRC 是最常见的格式。但时代在变化…

逐字支持!

8 月 24 日开始,Chronograph 将获得对逐字同步的支持。此功能使用 eLRC 格式(也称为 LRC A2 或 Enchanted LRC)。在 eLRC 中,每个单词都有自己的时间戳,允许支持它的播放器逐字动画歌词,为您提供真正的卡拉 OK 体验。这仅仅是个开始:未来的更新还将带来对 TTML(Timed Text Markup Language)的支持。

最终说明

希望您喜欢使用 Chronograph 的最新版本,并一起向更广泛的社区宣传 eLRC。同步您喜爱的歌曲的歌词!♥️

Nathan Perlman 发布

Rewaita — 给 Adwaita 增添一些风味

大家好,几周前我发布了 Rewaita,它是 Gradience 的精神续作。有了它,您可以将 GTK4/Adwaita 应用程序重新着色为流行的配色方案。这就是名称的由来 ~ Re(colour Ad)waita。

截至本周发布的 v1.0.4 版本,如果您不满意我们提供的配色方案,您可以创建自己的自定义配色方案,还可以将窗口控件更改为彩色或 MacOS 样式。

您可以在 Flathub 上找到它,也可以在 AURNIXPKGS 中找到(Nix 包仍在审核中)。

Rewaita 也在快速开发中,所以任何帮助都将不胜感激,或者只是给我们点个星号 :). 特别是,GTK3 和 Cinnamon 支持是下一步的重点。

杂项

JumpLink

ts-for-gir - GObject 内省的 TypeScript 绑定

本周我们发布了 GObject 接口实现的一项重大改进:虚拟接口生成

开发人员现在不必再实现 GObject 接口的所有方法,而只需实现虚拟方法(vfunc_*)。这与实际的 GObject-Introspection 模式相符,并使接口实现更加简洁。

之前(实现所有方法)

class CustomPaintable implements Gdk.Paintable {
  // Implement all methods manually
  get_current_image(): Gdk.Paintable { ... }
  get_flags(): Gdk.PaintableFlags { ... }
  get_intrinsic_width(): number { ... }
  // ... and many more
}

之后(仅虚拟方法)

class CustomPaintable implements Gdk.Paintable.Interface {
  // Declare for TypeScript compatibility
  declare get_current_image: Gdk.Paintable["get_current_image"];
  declare get_flags: Gdk.Paintable["get_flags"];
  
  // Only implement virtual methods
  vfunc_get_current_image(): Gdk.Paintable { ... }
  vfunc_get_flags(): Gdk.PaintableFlags { ... }
}

我们创建了一个全面的示例:https://github.com/gjsify/ts-for-gir/tree/main/examples/virtual-interface-test

这展示了使用新模式的 Gio.ListModelGdk.Paintable 实现。

发布v4.0.0-beta.35v4.0.0-beta.36

注意:上周我们还发布了 v4.0.0-beta.34,它引入了高级变体类型默认情况下,完成了 gi.ts 与增强的 TypeScript 支持的集成,用于 GLib.Variant.deepUnpack() 以及更好的 GObject 模式类型推断。

本周就到此为止!

下周再见,请务必访问 #thisweek:gnome.org,分享您自己的项目更新!