Skip to content
ph0rynPublic

About

Reimplementation of azooKey-Desktop for fcitx5 on NixOS written in Rust and C++

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

beanKey

beanKeyは、azooKey Desktopの日本語入力体験を、NixOS上のFcitx5とmacOSで使うための日本語入力エンジンです。

Fcitx5とmacOSは共通のRustバックエンドを使う横並びのフロントエンドです。操作と使用感をほぼ互換にすることを目標とし、OS制約による一時的な差も将来の互換対象として扱います。

ニューラルかな漢字変換システムには、zenz-v3.2-small-ggufを使用します。

Note

現在は実験的な段階です。設定や内部データ形式は、今後予告なく変わる可能性があります。

主な機能

  • ローマ字、AZIK、かな入力、カスタム入力テーブル
  • 通常変換、ライブ変換、文節単位の確定、再変換
  • Zenzaiによる文脈を考慮した候補評価
  • 日本語、英語、ギリシャ語の入力中予測
  • 学習、ユーザー辞書、入力訂正
  • LinuxではFcitx5標準UI、macOSではInputMethodKitと同梱Fcitx5テーマに合わせた候補パネル
  • NixOS moduleとLinux/macOS共通のHome Manager moduleによる宣言的な導入と設定

azooKey DesktopのAI変換や設定GUIは実装しません。

azooKey Desktopとの違い

beanKeyは、AzooKeyKanaKanjiConverterのかな漢字変換機能と、azooKey Desktopの日本語入力操作を参照しています。ただし、azooKey Desktopそのものを移植するものではありません。

次の機能は対象外です。

  • Control+SによるAI置換候補や続きの提案
  • 選択テキストへ指示を与えるAI変換
  • OpenAI APIやApple Foundation Modelsとの通信
  • macOS固有の設定画面
  • azooKey Desktopの候補ウィンドウの再現
  • Swift APIとのソース互換性またはABI互換性

macOSの候補パネルは候補・注釈・予測の表示に限定します。変換候補、内部trace、prompt、token、logitが固定原作と完全に一致するかの厳密な適合検証は、まだ行っていません。

候補の確定は、固定したazooKey Desktopと同様に両OSとも通常の文字列挿入として行います。括弧候補を確定しても、カーソルを括弧の内側へ自動では移動しません。

動作環境

動作確認済みの環境は、x86_64-linux、NixOS 26.11、Fcitx5 5.1.21、X11です。 macOSのaarch64-darwinでは、Nix packageのビルド、Rustテスト、AppKit上のmarked text・候補選択・確定・通信失敗時の復旧、実daemonとの接続を確認しています。通常アプリでの入力操作は引き続き受入検証中です。 Wayland、aarch64-linux、Intel Mac、NixOS以外のLinuxディストリビューションでは、まだ実環境で確認していません。 推論には、flake.lockでnixpkgsのllama.cpp b10273を使用します。

インストール

NixOS・macOSともに、beanKey.inputs.nixpkgs.followsは指定しないでください。beanKey自身が固定したnixpkgsを使い、依存関係とCachixのビルド条件を維持します。

Cachix(任意)

beankeyのCachixを利用すると、キャッシュにあるビルド済みパッケージを取得できます。

nix.settings = {
  extra-substituters = [ "https://beankey.cachix.org" ];
  extra-trusted-public-keys = [
    "beankey.cachix.org-1:iE4tWJfPogk+oWopayLECdSsw+H1vqsVnMvmRPHSQ6k="
  ];
};

nix.confを直接管理する場合は、/etc/nix/nix.confへ次を追記し、Nix daemonを再起動してください。

extra-substituters = https://beankey.cachix.org
extra-trusted-public-keys = beankey.cachix.org-1:iE4tWJfPogk+oWopayLECdSsw+H1vqsVnMvmRPHSQ6k=

NixOS

NixOS flakeへbeanKeyを追加し、NixOS moduleを読み込みます。

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

    beanKey.url = "github:ph0ryn/beankey";
  };

  outputs =
    { beanKey, nixpkgs, ... }:
    {
      nixosConfigurations.my-host = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        modules = [
          beanKey.nixosModules.default
          {
            programs.beanKey.enable = true;
          }
        ];
      };
    };
}

Switch後にFcitx5を再起動し、Fcitx5の入力メソッド設定からbeanKeyを追加してください。

Home Manager(Linux / macOS)

LinuxとmacOSでは、同じflake inputのbeanKey.homeModules.defaultをHome Managerへ読み込み、同じprograms.beanKeyで設定できます。

{
  imports = [ beanKey.homeModules.default ];
  programs.beanKey.enable = true;
}

LinuxではFcitx5とbeanKeyアドオン、ユーザーごとの変換設定を導入します。NixOS moduleによる管理も引き続き利用できます。NixOS管理からHome Managerへ移す場合は、programs.beanKeyと既存のi18n.inputMethod設定をHome Manager側へ移し、NixOS側ではFcitx5を有効にしないでください。適用後はFcitx5を再起動し、入力メソッドにbeanKeyを追加します。

macOSではactivationが下記と同じインストーラーを実行します。入力ソースへの追加はシステム設定で行ってください。変換・学習設定は両OSで共通です。useBeanKeyThemeはLinux専用で、macOSは常に同梱テーマに合わせた表示を使用します。

macOS(Apple Silicon)

Nixを導入した環境で、checkoutから実行します。

nix run .#macos-input-method

~/Library/Input Methods/beanKey.appへ実体をコピーし、ローカル署名と入力ソースの登録を行います。Nix storeへのsymlinkではありません。システム設定の「キーボード → テキスト入力 → 編集 → 追加」で、日本語のbeanKeyを追加してください。登録だけでは入力ソースの有効化・選択は行いません。

コピーしたアプリが参照するdaemonとライブラリは、~/Library/Application Support/beanKey/packageのNix GC rootで保持します。アンインストールするときは、入力ソースからbeanKeyを外し、アプリとこの参照を削除してください。学習データは別のlearningディレクトリに残ります。

初回導入や更新後に入力ソースが反映されない場合は、ログアウトして再ログインしてください。更新済みbundleがあっても、起動中の旧プロセスは自動的に置き換わりません。

daemonは入力メソッドが必要時に起動します。初回のモデル読み込みが終わるまでは、キーを溜めずにアプリへ返します。起動診断ログは~/Library/Logs/beanKey/daemon.logにあります。

設定

設定例

programs.beanKey = {
  enable = true;
  useBeanKeyTheme = true; # Linuxのみ。macOSではこの行を省略します。

  conversion = {
    inputStyle = "roman_to_kana";
    typeBackslash = true;
    typeHalfSpace = true;
    punctuationStyle = "kuten_and_toten";
  };

  learning = {
    mode = "input_and_output";
    maxCount = 65536;
  };

  zenz = {
    inferenceLimit = 4;
    profile = "学生";
    topic = "プログラミング";
    preference = "カタカナ優先";
  };
};

詳細はconfiguration.mdを参照してください。

基本操作

キー 動作
Space / ↓ 変換を開始、または次の候補へ移動
Shift+Space / ↑ 候補選択中に前の候補へ移動
Enter 入力または選択中の範囲を確定
Escape 候補選択を戻す。入力中は文字列を取り消す
Tab 表示中の予測を受け入れる
1から9 表示中の候補を番号で選択

操作の詳しい一覧と状態ごとの動作は、usage.mdを参照してください。

ライセンス

MIT

参照実装

beanKeyは、次の実装を設計と動作の基準として参照しています。

再配布資産

About

Reimplementation of azooKey-Desktop for fcitx5 on NixOS written in Rust and C++

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages