Open-source project
rime/plum avatar
rime/plum

Plum for Rime: Installing and Managing Input Schemas

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

1,957 stars171 forksShellLGPL-3.0

At a glance

What is it?
Plum is Rime's configuration manager and package index, used to install default data, Chinese input schemas, and third-party configurations. It suits Rime users who want repeatable package installation across frontends.
Who is it for?
Plum is a practical choice for Rime users who want repeatable installation of official or third-party packages, especially across ibus-rime, Squirrel, Weasel, or Fcitx environments. It is a poor fit for someone seeking automatic schema activation, documented rollback, dependency locking, or a stable sequence of GitHub releases.
Can I use it commercially?
Yes, with conditions. LGPL-3.0 is a weak copyleft licence: you can use it inside commercial and closed-source software, but if you distribute changes to its own files, you must publish those changes under the same licence.
Is it still maintained?
Yes. The repository last received commits 168 days ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Why Plum belongs in a Rime setup

Rime separates an input engine from the data that defines its behavior. Plum addresses the data side. It is intended for users who need to install default settings and resources, maintain a personal Rime configuration in GitHub, or add input schema packages published by third-party developers. It can prepare configurations for ibus-rime, Squirrel, Weasel, and Fcitx Rime.

A Rime input schema defines how the engine interprets typed sequences. The README says a schema normally contains a `<schema_id>.schema.yaml` configuration file and may include a `*.dict.yaml` dictionary. A package can contain several related schemas and dictionaries, as well as general configuration and data files. Plum calls a reusable configuration unit a recipe and denotes it with the `℞` symbol.

The official package index covers several input approaches. It includes Pinyin variants, Zhuyin, Cantonese, Jyutping, Wu varieties, Middle Chinese, stroke input, Cangjie, Wubi, Array, emoji, and IPA. Essentials such as `prelude` and `essay` are listed separately from phonetic-based and shape-based schemas.

This catalog makes Plum more than an installer for one schema. It provides a package index for assembling related repositories, shared vocabulary, language data, dictionaries, and configuration. That is useful when an input method depends on more than its visible `<schema_id>.schema.yaml` file.

How rime-install fetches Rime packages

The documented one-liner downloads `rime-install` from Plum's `master` branch and pipes it to `bash`. According to the README, the script downloads preset packages and installs their source files into the Rime user directory. It does not enable newly installed schemas.

The same installer can be run from a local Plum checkout. The shallow clone keeps the initial Git transfer small, and the final command requests the `:preset` selection explicitly:

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

Arguments can identify individual package names or repositories. This command requests Jyutping and two third-party Rime repositories:

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

A branch can be selected by appending `@<branch-name>` to the package reference:

sh
bash rime-install jyutping@master lotem/rime-zhung@master

Plum can also read a package manifest hosted in a GitHub repository. The README documents a full URL, a shorter `<user>/<repo>/<filepath>` form, and a branch-qualified variant. These arguments tell the installer where to obtain package definitions. They do not directly select a schema inside Rime.

The README does not describe a package lockfile, content signature check, dependency resolution report, or rollback command. Branch suffixes pin the source location, but the documentation does not claim that they pin a release or preserve a previously installed state.

Installing Plum on Linux and macOS

The shortest documented setup is intended for a Linux terminal or macOS `Terminal.app`. Run this command:

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

The command downloads and executes `rime-install`. With no package arguments, the README identifies the default preset packages. After successful completion, the selected source files should be present in the Rime user directory. The reader must still select or enable the relevant schemas through the Rime frontend.

The installer can also receive a selection after `--`:

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

This version explicitly selects `:preset`. The colon is part of the argument syntax. The README also names `:extra` and `:all` as broader catalog selections, although it does not enumerate the complete contents of those sets within the package index shown in its overview.

For an interactive menu, `--select` must be the first argument. It can be combined with a catalog or a manifest:

sh
bash rime-install --select :extra

The menu is useful when the exact set of packages should be chosen during installation. The README does not specify non-interactive answers, terminal compatibility, conflict handling, or whether returning an unchanged selection performs an install. Those behaviors should be confirmed in the script before relying on them in an automated environment.

Frontend paths for Fcitx and Windows

Rime data has to reach the user directory expected by the active frontend. Plum provides two documented variables for this purpose. For Fcitx Rime, set `rime_frontend` when invoking the installer:

sh
rime_frontend=fcitx-rime bash rime-install

When the target directory is already known, `rime_dir` provides a direct location:

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

The first form asks the installer to select the Fcitx Rime layout through its named environment variable. The second bypasses that selection by naming the directory. Neither command enables a schema after copying its files.

For ibus-rime and Squirrel, the README directs users to the standard installation command. For Weasel, it directs Windows users to the bootstrap procedure. On Windows, the documented steps are to download the bootstrap bundle, unpack the ZIP archive, and run `rime-install-bootstrap.bat`.

The repository includes several Windows batch files, including `rime-install-bootstrap.bat`, `rime-install-config.bat`, and `rime-install.bat`. The README section visible in the project page ends while describing the bootstrap download, so it does not provide complete follow-up prompts, switches, or error-handling instructions for those scripts. The `.bat` files should be reviewed directly before using them in an unattended Windows setup.

Package updates and the LGPL-3.0 boundary

Plum can update itself through its normal package mechanism:

sh
bash rime-install plum

This command treats `plum` as a package to install. It should not be interpreted as a documented dependency updater for every previously selected schema or repository. Each additional package can instead be named explicitly, which also makes the requested source visible in the command history.

The repository has no GitHub releases, so it does not currently offer a documented release series through that GitHub mechanism. The last push was on 2026-05-08. That date documents repository activity, but it does not guarantee compatibility with every linked schema repository.

Plum is licensed under LGPL-3.0. The repository license governs the project's source and distributed package files. Redistributing a modified Plum package or combining licensed files into another distribution can introduce source-availability, notice, and license obligations. The README does not summarize those terms, and this article does not interpret the license beyond identifying it. Users who publish redistributed configurations should review `LICENSE` and the licenses of every separately fetched package.

Plum compared with a local build workflow

The curl installer and the repository's Makefile support different distribution needs. The installer prepares a Rime user directory from preset, extra, individual, or manifest-defined packages. It is the documented choice when adding configuration to an existing frontend such as ibus-rime or Squirrel.

The Makefile supports local output preparation. Its `preset`, `extra`, and `all` targets clean the output directory and run `scripts/install-packages.sh` with the corresponding selection. A `build` target invokes `rime_deployer --build`. Its `install` target copies files into `RIME_DATA_DIR`, including `build` and `opencc` subdirectories when they exist.

The `dist` target creates a dated source archive. The Makefile documents `no_update=1` for reproducing package contents from a release tarball:

sh
tar xzf plum-YYYYMMDD.tar.gz
cd plum
no_update=1 make

This repository has no GitHub releases, but the Makefile clearly anticipates a dated tarball format. It is therefore better suited to building or distributing a known data set than a one-time user installation.

A user who already has compatible YAML files may skip Plum and copy them directly. That avoids fetching the package catalog, but it also means handling dependencies and source updates manually. Plum is more relevant when the configuration consists of several related schemas, dictionaries, and shared data packages.

Editorial conclusion

Plum is a practical choice for Rime users who want repeatable installation of official or third-party packages, especially across ibus-rime, Squirrel, Weasel, or Fcitx environments. It is a poor fit for someone seeking automatic schema activation, documented rollback, dependency locking, or a stable sequence of GitHub releases. Before adoption, verify the intended frontend through `rime_frontend` or `rime_dir`, confirm which schema and shared packages are required, and remember that the installer places files without enabling newly added schemas. The last repository push was dated 2026-05-08, and the repository has no published GitHub releases.

Frequently asked questions

How do I install Plum for Rime on Linux or macOS?

The README gives a curl command that downloads `rime-install` from the `master` branch and pipes it to `bash`. It installs preset package files but does not enable newly installed schemas.

How do I install a specific Rime schema package with Plum?

Run `bash rime-install` with a package name or a `<user>/<repo>` reference. A branch can be selected by appending `@<branch-name>`.

Where does Plum install configuration for Fcitx Rime?

Use `rime_frontend=fcitx-rime` to select the Fcitx Rime layout, or set `rime_dir` to the desired user directory. Installing the files does not itself enable their schemas.

Can Plum install third-party Rime configurations?

Yes. The documented forms accept a GitHub-hosted `*-packages.conf` URL, a `<user>/<repo>/<filepath>` reference, or a branch-qualified form.

Does Plum document rollback or dependency locking?

The README does not document rollback, dependency locking, or release pinning. Package updates are performed through `rime-install`, and the repository has no published GitHub releases.

Official sources

  1. Issues
  2. License: LGPL-3.0
  3. README
  4. rime/plum on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/rime-plum.svg)](https://hysenlabs.com/projects/rime-plum)

Was this useful?