Convert Figma logo to code with AI

rime logoplum

東風破 /plum/: Rime configuration manager and input schema repository

1,514
150
1,514
19

Top Related Projects

【鼠鬚管】Rime for macOS

5,052

【小狼毫】Rime for Windows

3,674

Rime Input Method Engine, the core library

8,883

Conversion between Traditional and Simplified Chinese

1,773

maybe a new fcitx.

Quick Overview

The rime/plum repository is a collection of tools and utilities for the RIME input method engine, which is a popular Chinese input method used on various platforms. The project provides a set of tools and libraries to help developers and users work with the RIME engine more efficiently.

Pros

  • Comprehensive Toolset: The project offers a wide range of tools and utilities, including configuration management, deployment, and debugging tools, making it easier to work with the RIME engine.
  • Cross-platform Support: The tools and libraries provided by the project are designed to work across different platforms, including Windows, macOS, and Linux.
  • Active Development: The project is actively maintained, with regular updates and bug fixes, ensuring that users have access to the latest features and improvements.
  • Community Support: The project has a strong community of contributors and users, providing a wealth of resources and support for those working with the RIME engine.

Cons

  • Steep Learning Curve: The project's extensive set of tools and utilities can be overwhelming for new users, requiring a significant investment of time and effort to fully understand and utilize.
  • Dependency on RIME: The project is tightly coupled with the RIME input method engine, which means that users who do not use RIME may not find the project as useful.
  • Limited Documentation: While the project has a good amount of documentation, some areas may be lacking in detail or clarity, making it challenging for new users to get started.
  • Potential Compatibility Issues: As the project is designed to work across multiple platforms, there may be occasional compatibility issues or conflicts with other software or systems.

Code Examples

N/A (This is not a code library)

Getting Started

N/A (This is not a code library)

Competitor Comparisons

【鼠鬚管】Rime for macOS

Pros of Squirrel

  • Provides a full-featured input method engine for macOS
  • Offers a user-friendly graphical interface for configuration
  • Includes built-in dictionaries and customizable schemas

Cons of Squirrel

  • Limited to macOS platform
  • Requires more system resources due to its GUI components
  • May have a steeper learning curve for new users

Code Comparison

Squirrel (Objective-C):

- (void)loadSchemaList {
    NSArray *schemas = [RimeConfigController getAvailableSchemas];
    [self.schemaController setSchemas:schemas];
}

Plum (Shell script):

rime_frontend_install() {
    local frontend="$1"
    bash "${frontend}/install.sh"
}

Summary

Squirrel is a comprehensive input method engine for macOS with a graphical interface, while Plum is a package manager for Rime input method customizations. Squirrel offers a more user-friendly experience for macOS users but is platform-specific. Plum, on the other hand, provides a flexible way to manage Rime configurations across different platforms but requires more technical knowledge to use effectively.

5,052

【小狼毫】Rime for Windows

Pros of Weasel

  • Specifically designed for Windows, offering native integration
  • Includes a user-friendly graphical interface for configuration
  • Supports customizable skin and UI elements

Cons of Weasel

  • Limited to Windows platform, lacking cross-platform compatibility
  • Requires more system resources compared to lightweight alternatives
  • May have a steeper learning curve for users new to Rime

Code Comparison

Weasel (C++):

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
        case WM_CREATE:
            // Window creation logic
            break;
        // ...
    }
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

Plum (Shell script):

install_package() {
    local package_name="$1"
    echo "Installing ${package_name}"
    # Package installation logic
    # ...
}

Summary

Weasel is a Windows-specific Rime frontend with a graphical interface, while Plum is a cross-platform package manager for Rime. Weasel offers better Windows integration but is limited to that platform, whereas Plum provides a more flexible and lightweight solution for managing Rime configurations across different operating systems.

3,674

Rime Input Method Engine, the core library

Pros of librime

  • Core library for Rime input method engine, providing essential functionality
  • Written in C++, offering better performance for low-level operations
  • Extensive documentation and API references available

Cons of librime

  • More complex codebase, requiring C++ knowledge for contributions
  • Heavier development environment setup compared to shell scripts
  • Less focused on user-friendly installation and configuration

Code Comparison

librime (C++):

bool RimeDeployerImpl::InstallSchema(const string& schema_file) {
  Config config;
  if (!config.LoadFromFile(schema_file)) {
    LOG(ERROR) << "failed to load schema file '" << schema_file << "'";
    return false;
  }
  // ... (implementation continues)
}

plum (Shell):

install_schema() {
  local schema_file="$1"
  echo "Installing schema: $schema_file"
  cp "$schema_file" "$target_dir/schema/"
  # ... (implementation continues)
}

Summary

librime serves as the core library for the Rime input method engine, offering robust functionality and performance. It's written in C++ and provides extensive documentation. However, it has a steeper learning curve and requires a more complex development setup.

plum, on the other hand, focuses on user-friendly installation and configuration using shell scripts. It's easier to contribute to and modify but may lack the performance benefits of the C++ implementation in librime.

8,883

Conversion between Traditional and Simplified Chinese

Pros of OpenCC

  • Focuses specifically on Chinese text conversion, offering more specialized functionality
  • Supports multiple Chinese variants and conversion between simplified and traditional Chinese
  • Provides command-line tools and APIs for easy integration into other projects

Cons of OpenCC

  • Limited to Chinese language conversion, less versatile for other languages or input methods
  • May require more setup and configuration for specific use cases
  • Less integrated with input method frameworks compared to Plum

Code Comparison

OpenCC (C++):

Converter converter("s2t.json");
string converted = converter.Convert("汉字");

Plum (Shell script):

rime_frontend_select Squirrel
rime_install :preset

Summary

OpenCC is a specialized tool for Chinese text conversion, offering robust features for handling various Chinese variants. Plum, on the other hand, is a package manager for the RIME input method engine, providing a broader range of language support and input method configurations. While OpenCC excels in Chinese-specific tasks, Plum offers more versatility for managing different input methods and languages within the RIME ecosystem.

1,773

maybe a new fcitx.

Pros of fcitx5

  • More comprehensive input method framework supporting multiple languages and input methods
  • Active development with frequent updates and improvements
  • Better integration with modern desktop environments and applications

Cons of fcitx5

  • Steeper learning curve for configuration and customization
  • Larger resource footprint compared to lightweight alternatives
  • May have compatibility issues with some older applications

Code Comparison

fcitx5:

class InputContext : public InputContextProperty {
public:
    virtual ~InputContext() = default;
    virtual const char *frontend() const = 0;
    virtual const char *program() const = 0;
};

plum:

#!/bin/bash
install_package() {
    echo "Installing ${package}..."
    bash ${package}/install.sh
}

Summary

fcitx5 is a full-featured input method framework, while plum is a package manager for Rime input method engine. fcitx5 offers broader language support and better desktop integration, but may be more complex to set up. plum focuses on managing Rime configurations and is generally simpler to use, but has a narrower scope. The code snippets highlight the difference in complexity and focus between the two projects.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

東風破 /plum/

Rime configuration manager and input schema repository

Project home

rime.im

Introduction

/plum/ is a configuration manager for Rime input method engine.

/// 東風破 是 中州韻輸入法引擎 的配置管理工具。///

It's designed for Rime users to install and update the default configuration and a collection of data packages maintained by Rime Developers.

It also works perfectly well with personal configuration hosted on GitHub and input schema packages from third-party developers.

A Rime input schema (Rime 輸入方案) defines the rules of a specific "input method", or in technical terms how user input sequences are interpreted by the Rime input method engine. It consists of a configuration file named <schema_id>.schema.yaml, and usually an optional Rime dictionary (韻書) file named *.dict.yaml.

A package may contain one or several interrelated input schemata and their affiliated Rime dictionaries. A package is also good for publishing general configuration files and data files used by Rime.

In /plum/ terms, a re-usable piece of configuration is known as a recipe (配方), denoted by the "℞" symbol.

A data package itself can be a recipe, this is the common case. In the future, /plum/ will support more fine-grained recipes that allow you to select what to install from a package, or even take parameters like the target input schema to customize.

Packages

This is an index of the packages maintained by Rime Developers as separate projects.

These packages aim to offer a sensible default configuration for most users, and support various Chinese input methods including those based on modern dialects and historical Chinese phonology.

/// 配方一覽 ///

Essentials

  • ℞ prelude: 基礎配置 / the prelude package, providing Rime's default settings
  • ℞ essay: 八股文 / a shared vocabulary and language model

Phonetic-based input methods

Modern Standard Mandarin

  • ℞ luna-pinyin: 朙月拼音 / Pinyin input method for Traditional Chinese
  • ℞ terra-pinyin: 地球拼音 / School-taught Pinyin, with tone marks
  • ℞ bopomofo: 注音 / Zhuyin (aka. Bopomofo)
  • ℞ pinyin-simp: 袖珍簡化字拼音

Derivatives of Pinyin

  • ℞ double-pinyin: 雙拼 / Double Pinyin (ZiRanMa, ABC, flyPY, MSPY, PYJJ variants)
  • ℞ combo-pinyin: 宮保拼音 / Combo Pinyin, a chord-typing input method
  • ℞ stenotype: 打字速記法 / a stenographic system derived from ABC Easy Shorthand

Other modern varieties of Chinese

  • ℞ cantonese: 粵語拼音 / Cantonese
  • ℞ jyutping: 粵拼(無聲調) / Cantonese (without tones)
  • ℞ wugniu: 上海吳語 / Wu (Shanghainese)
  • ℞ soutzoe: 蘇州吳語 / Wu (Suzhounese)

Middle Chinese

  • ℞ middle-chinese: 中古漢語拼音 / Middle Chinese Romanization

Shape-based input methods

  • ℞ stroke: 五筆畫 / five strokes
  • ℞ cangjie: 倉頡輸入法 / Cangjie input method
  • ℞ quick: 速成 / Simplified Cangjie
  • ℞ wubi: 五筆字型
  • ℞ array: 行列輸入法
  • ℞ scj: 快速倉頡

Miscellaneous

  • ℞ emoji: 繪文字 / input emoji with English or Chinese Pinyin keywords
  • ℞ ipa: 國際音標 / International Phonetic Alphabet

Usage

To prepare your Rime configuration for ibus-rime, Squirrel, you can get started by running

curl -fsSL https://raw.githubusercontent.com/rime/plum/master/rime-install | bash

/// 用法:Linux、macOS 系統,在終端輸入以上命令行,安裝配置管理器及預設配方。 ///

Paste the command line in Linux terminal or macOS Terminal.app and hit enter.

The one-liner runs the rime-install script to download preset packages and install source files to Rime user directory. (Yet it doesn't enable new schemas for you)

For Weasel, please refer to the Windows bootstrap script section for initial setup.

Advanced usage

Alternatively, you can specify a configuration among :preset, :extra and :all (note the colon):

curl -fsSL https://raw.githubusercontent.com/rime/plum/master/rime-install | bash -s -- :preset

This is equivalent to cloning this repo and running the local copy of rime-install:

git clone --depth 1 https://github.com/rime/plum.git
cd plum
bash rime-install :preset

You can then add packages from all the great Rime developers on GitHub by specifying a list of package names or refer to packages by <user>/<repo>:

bash rime-install jyutping lotem/rime-zhung acevery/rime-zhengma

# optionally, specific a branch by appending "@<branch-name>"
bash rime-install jyutping@master lotem/rime-zhung@master

Lastly, it's also possible to install other author's Rime configuration from a *-packages.conf file hosted on GitHub. For example:

bash rime-install https://github.com/lotem/rime-forge/raw/master/lotem-packages.conf

# or in short form: "<user>/<repo>/<filepath>"
bash rime-install lotem/rime-forge/lotem-packages.conf

# or specify a branch: "<user>/<repo>@<branch>/<filepath>"
bash rime-install lotem/rime-forge@master/lotem-packages.conf

For third-party Rime distributions, specify the rime_frontend variable in the command line:

rime_frontend=fcitx-rime bash rime-install

or set rime_dir to Rime user directory

rime_dir="$HOME/.config/fcitx/rime" bash rime-install

To update /plum/ itself, run

bash rime-install plum

Interactively select packages to install

Specify the --select flag as the first argument to rime-install, then add configurations (:preset is the default) and/or individual packages to display in the menu.

bash rime-install --select :extra

bash rime-install --select :all lotem/rime-forge/lotem-packages.conf

Screenshot of usage example

Windows bootstrap script

To get started on Windows, download the bootstrap bundle, unpack the ZIP archive and run rime-install-bootstrap.bat for initial setup.

It will fetch the latest installer script rime-install.bat an create a shortcut to it, which can then be copied or moved anywhere for easier access.

/// Windows 用家可以通過 小狼毫 0.11 以上「輸入法設定/獲取更多輸入方案」調用配置管理器。///

/// 或者下載獨立的 啓動工具包。///

Use built-in ZIP package installer

You can use the installer script to download and install ZIP packages from GitHub, in a number of ways:

  1. Double-click the shortcut to bring up an interactive package installer, then input package name, <user>/<repo> or GitHub URL for the package.

  2. Run rime-install.bat in the command line. The command takes a list of packages to install as arguments.

rime-install :preset combo-pinyin jyutping wubi
  1. Drag downloaded ZIP packages from GitHub onto the shortcut to do offline install.

    You can find ZIP packages downloaded by the installer script in %TEMP% folder (can be customized via variable download_cache_dir).

    To manually download ZIP package from a GitHub repository, click the button Clone or download, then Download ZIP.

Use git for incremental updates (optional)

If Git for Windows is installed in the default location or is available in your PATH, the script will use git-bash to install or update packages.

Use the following command to install Git for Windows, if you are new to git.

rime-install git

You can set more options in rime-install-config.bat in the same directory as rime-install.bat, for example:

set plum_dir=%APPDATA%\plum
set rime_dir=%APPDATA%\Rime
set use_plum=1

Install as shared data

The Makefile builds and installs Rime data as a software on Unix systems.

For downstream packagers for the package management systems of the OS, it's recommend to create separate packages for the /plum/ configuration manager (possibly named rime-plum or rime-install) and the data package(s) (possibly named rime-data, or rime-data-* if separated into many) created by the make targets.

Build dependencies

  • git
  • librime>=1.3 (for rime_deployer)

Run-time dependencies

  • librime>=1.3
  • opencc>=1.0.2

Build and install

The default make target uses git command to download the latest packages from GitHub.

make
sudo make install

You can optionally build the by default enabled input schemas to binaries. This saves user's time building those files on first startup.

make preset-bin

License

Code in the rime/plum repository is licensed under LGPLv3. Please refer to the LICENSE file in the project root directory.

Note that make targets provided by the Makefile may include files downloaded by the configuration manager. Individual packages can be released under different licenses. Please refer to their respective LICENSE files. The license compatible with all the maintained packages is GPLv3.

Credits

We are grateful to the makers of the following open source projects:

Also to the inventors of the following input methods:

  • Cangjie / 倉頡輸入法 by 朱邦復
  • Array input method / 行列輸入法 by 廖明德
  • Wubi / 五筆字型 by 王永民
  • Scj / 快速倉頡 by 麥志洪
  • Middle Chinese Romanization / 中古漢語拼音 by 古韻

Contributors

This software is a result of collective effort. It was set up by the following people by contributing files, patches and pull-requests. See also the contributors page for a list of open-source collaborators.