[RAW] 2021-07-05 谷歌编程之夏 2021:IBus 定制


author: Hanjingxue Boling # 翻译者的名字
date: 2021-07-05 20:22:00 +0800
layout: post
license: CC-BY-SA-3.0
title: 谷歌编程之夏 2021:IBus 定制
image:
categories:

  • 更新通告
    tags:
  • Tumbleweed
  • 翻译作品
  • 官方新闻
  • 谷歌编程之夏
  • IBus

大家好!我叫 Songlin Jiang,是一名来自中国兰州大学的大三学生,主修计算机科学与技术专业。这是我第一次和 openSUSE 项目的导师们一起参加 Google Summer of Code 。在这篇博客中,我将向你介绍我目前的工作和经历。

关于 IME 和 IBus

对于不熟悉非拉丁语系语言的人来说,IME(输入法)可能是一个全新的概念,因为他们在打字的时候会发现键盘上存在所有的字符。然而,对于亚洲的大多数人来说,如果没有 IME,用他们的语言打字将是不可能的。例如,如果你想打中文,总共有几千个 汉字,而键盘太小,无法将它们全部放在上面。但在 IME 的帮助下,你可以选择使用拼音或其他类型的 输入模式,如五笔。这样,一个标准的美国键盘就足以输入所有的汉字了。

IBus 是一个输入法框架,用于开发提供统一的用户界面的输入法。很多流行的输入法都是基于 IBus 的,而且 IBus 也是 GNOME 上默认的输入法框架。即使你不使用非拉丁语系的语言,在安装了 IBus 输入法助推器( Ibus-typing-booster) 之后,你也会发现 IBus 很有用。

我的项目:IBus 定制

由于 IBus 的前端是基于 GTK 的,而 GNOME 用它的 GJS 版本取代了这个前端,使其与 GNOME 更加统一,目前,IBus 的主题在 GNOME 中遵循全局 GNOME-Shell 主题,在其他桌面环境中遵循全局 GTK 主题,并且 IBus 在 GNOME 中缺乏自定义,因为 ibus-setup(IBus 初始化命令)由于前面的原因在 GNOME 上无法工作。

因此,我的项目旨在使 IBus 主题与当前的 GNOME-Shell 主题GTK 主题 分开,以便用户可以用其他 GNOME-Shell 主题和 GTK 主题来定制它。还有,在 GNOME 上做一个扩展,提供对 IBus 的外观、行为、系统托盘和输入源指示器的完全定制。

该项目分为三个部分:自定义 IBusIBus 主题工具 以及 IBus 主题中心。这是使用这些项目的 用户指南,我将在下面的部分逐一向大家介绍这些项目,同时也介绍我创建这些项目的经验。

用户需要什么?

由于使用 IME 是许多非拉丁语系的人在使用电脑时不可分割的、最重要的一部分,所以最重要的是提供足够的定制化,以适应用户的需求。另外,由于每个操作系统都提供了自己的一套 IME,所以 IME 的配置方式应该让用户觉得熟悉,而不改变目前的用户习惯,这样可以减少用户刚从其他平台转换过来时的学习成本。

自定义 IBus

自定义 IBus 是 GNOME 的一个扩展,为 IBus 提供全面的自定义功能。这个扩展所支持的功能列表可以在 这里 找到。

这个项目最初是从 ibus-tweaker 导入的,因为我必须为整个项目从头开始,而且在我申请 GSoC 之前,我没有创建 GNOME Shell 扩展的经验。

Ibus-tweaker 是一个很好的开始项目。通过学习和重用它的部分代码,我理解了 IBus GJS 前端 背后的机制,并进一步参考了 GJS 文档,我最终成功地创建了一个全新的扩展,提供了更多的功能。

你可以从 这里 看到这个项目的演变。

你可以在这里找到自定义的 IBus 资源库!

IBus 主题工具

IBus 主题工具专门用于从 GNOME Shell 主题中提取 IBus 相关的样式(样式类名称以 candidate- 开头,还有一些补丁,这样它就可以按照定义显示)到样式表中,可以在 GNOME 的自定义 IBus 扩展中使用。它还支持在非 GNOME 桌面中直接用可用的 GTK 主题改变 IBus 主题。

该工具是用 Python 编码的,使用 tinycss2 作为 GNOME Shell 主题样式表的解析器。

你可以在这里找到 IBus 主题工具库!

IBus 主题中心

IBus 主题中心是可以被自定义 IBus 扩展使用的主题集合。

目前,它有 Microsoft IME Themes

如果你已经为 IBus 设计了一个主题,我欢迎你在这里 贡献你的 IBus 主题!

你可以在这里找到 IBus 主题中心的资料库!

最后……

我希望你喜欢这篇文章。如果你认为我的项目对你有很大帮助,别忘了与你的朋友分享这篇文章,这样每个人都能从我的 GSoC 2021 项目中得到最佳利用。


原文: Google Summer of Code 2021: IBus Customize,作者:Songlin Jiang

3赞

厉害了,这么近,都在兰州

@azhou 你写的那个插件,也被这个缝合怪复制粘贴进去了。

2333333333333333333333 没关系的反正代码就在 GitHub 上面

这里面绝大部分功能都是我自己完成的哈。对于固定输入法列表顺序确实使用了 @azhou 的代码,因为 GNOME 插件上传到扩展商店时要求是必须同意 GPLv2+ 许可条款的,而这款插件已经上传了,所以我就根据许可证协议直接拿来用了。

当然,这个功能的来源已经做了标注:

整个项目参考的其他项目都罗列在了这里:GitHub - openSUSE/Customize-IBus: Full customization of appearance, behavior, system tray and input source indicator for IBus. (深度定制 IBus 的外观、行为、系统托盘以及输入指示)

之所以要将别的项目功能整合到我的这个插件中,是因为此次谷歌编程之夏 2021 活动得到了 IBus 上游开发者的支持,我正好借此机会希望能够将 GNOME 中 IBus 相关的自定义功能完善好,最终成为 GNOME 中 IBus 的一部分,而不是与 IBus 相关的插件各自为政,需要用户自己手动安装。因为后者不利于 IBus 项目长期的发展。

谢谢!

@slbtty

3赞

好使!感谢! ::
15.3 上完美运行,解决了 ibus 在 GNOME 上很难自定义的大问题!

1赞

这一定得支持。
年轻有为。

1赞

哦我的天,这简直太优秀了!!!这就是我想要的!

1赞