imfuxiao / Hamster

librime for iOS App
GNU General Public License v3.0
1.29k stars 80 forks source link

提案:使用 yaml 保存 App 相关的设置 #154

Closed amorphobia closed 1 year ago

amorphobia commented 1 year ago

背景

如今 App 相关的设置越来越多,越来越复杂,仅用 GUI 来控制会比较麻烦。特别地,滑动动作影射表包含了 26 个字母、退格、回车、空格的上下滑动,共 87 个小项的设置,通过 GUI 来配置已经比较繁琐。

通过 yaml 文件配置,用户可以方便地配置、备份、分享、导入。比如这次上下滑动的功能更新了,大家只有通过重置才能用上,但之前自己的配置就需要一个个再点一遍。有了文件备份,即使重置了,也可以更方便地把自己的配置合并过来。

提议

使用 yaml 来配置与仓输入法相关的设置,在 SharedSupport 里可以提供一份含默认值及注释的 hamster.yaml,用户可以在 Rime 文件夹中使用 hamster.custom.yaml 覆盖想要改动的地方

可能的 yaml 结构

这个只是我自己的提议,我组织的结构可能并不好,需要大家发表意见

# Hamster settings
# encoding: utf-8

config_version: "0.1.0"

app_options: # 与仓 App 相关的配置
  swipe_gestures: # 按键上下滑动配置
    - key: "q"
      swipe_up: "1"
      swipe_down: "~"
    - key: "w"
      swipe_up: "2"
      swipe_down: "@"
    - key: "e"
      swipe_up: "3"
      swipe_down: "#"
    # 剩下的按键省略

  appearance: # 键盘外观
    show_key_press_bubble: true # 按键气泡
    show_keyboard_dismiss_button: true # 键盘收起键
    # 其他外观相关的设置

  functions: # 键盘功能
    slide_by_space_button: true # 空格滑动
    enable_number_nine_grid: false # 数字九宫格
    # 其他功能相关的设置

# 以下兼容鼠须管的配置
style:
  color_scheme: native
  inline_preedit: true

preset_color_schemes:
  native:
    name: 系统配色
# 以下省略
imfuxiao commented 1 year ago

提议非常棒。我目前正在做滑动配置/键盘显示配置导入导出功能,有些别的想法:

  1. 如果将所有的配置统一为一个文件,有点不利于分享,比如我只想分享我的滑动设置,但是如果用一个文件,则其包含了其他配置。所以我建议单独功能的导入导出文件与总的配置文件分开。总的配置文件可以用来作为app自身的备份。分开小功能的配置文件可以用来分享。比如滑动设置,键盘显示配置等。

  2. 我理解最复杂的配置就是滑动动作/按键显示两个功能了,如果这两个功能都有自己的配置文件了,就有没有必要用一个特大的yaml来统一保存。

  3. 按照小功能拆分的思路做,那么App自身的备份,可以同时生成不同的文件,滑动的配置/键盘显示的配置/总功能的配置等,大概就3个文件。

个人想法,不一定对。

amorphobia commented 1 year ago

是否可以参考 rime 的 default.yaml 的方式:使用 __include 包含其他小文件,这样的方式会比较 "rime"

punctuator:
  full_shape:
    __include: punctuation:/full_shape # 具体设置在 punctuation.yaml 里
  half_shape:
    __include: punctuation:/half_shape
imfuxiao commented 1 year ago

是否可以参考 rime 的 default.yaml 的方式:使用 __include 包含其他小文件,这样的方式会比较 "rime"

punctuator:
  full_shape:
    __include: punctuation:/full_shape # 具体设置在 punctuation.yaml 里
  half_shape:
    __include: punctuation:/half_shape

文件的引用,不错的思路。


我建议如果要全部走rime的思路,需要先完全整理出来整套的yaml配置的schema,作为开发前的准备工作。

我是指针对app的这部分的schema