[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:16196] proposal: im-switch framework



武藤@Debianぷろじぇくとです。

ここ数日設計と実装をしていたim-switchについて、まずは日本人開発者・ユー
ザー向けにプロポーサルを出してみます。
開発は現在、私、田郷明さん、後藤正徳さんで行っています。

-------------------------------------------------------
im-switch framework proposal
					Kenshi Muto <kmuto@debian.org>

im-switchは、FedoraCoreで使われている入力メソッドフレームワークを部分
的にDebianに移植したものです。

Debianでは多様なバックエンド、入力メソッド(XIMやIMmoduleなど)がありま
すが、その代償として「デフォルト」がなく、各ユーザーが手動で環境変数や
~/.xsessionを編集しなければなりませんでした。

im-switchのフレームワークに則った入力メソッドパッケージはim-switch管理
下のalternativeの1つとなり、これによって優先度の高い入力メソッドパッケー
ジが自動的に「デフォルト」の入力メソッドになります(im-switchで変更可能)。
また、デフォルトとは別の入力メソッドとは違うものを使いたいユーザーも、
im-switchコマンドを使って変更できます。

apt-lineは次のとおりです(ただ、別の変なものがいろいろあるので、PINを
使うなり、必要最小限のものを入れたらコメントアウトするなりしておいたほ
うがよいでしょう)。

deb http://kmuto.jp/debian/mtu unstable main
deb-src http://kmuto.jp/debian/mtu unstable main

apt-get install im-switchでインストールされます。本フレームワークに対
応した入力メソッドパッケージの例として、改変済みのuim(uim-xim、
uim-gtk2.0を入れる)、skkinput、kinput2、atokx2(iiimgcf)も上記URLにて配
布しています。

開発はsvnで行っており、http://kmuto.jp/svn/im-switchでanonymous取得で
きます(svn checkout http://kmuto.jp/svn/im-switch/trunk im-switch)。

- 利用可能なメソッド一覧: im-switch -l
$ im-switch -l
You have ja_JP setup in "/home/kmuto/.xinput.d".
=======================================================
xinput-ja_JP - status is manual.
 link currently points to skkinput
kinput2-canna-wnn_canna - priority 60
kinput2-canna-wnn_wnn - priority 50
none - priority 10
skkinput - priority 50
uim_anthy - priority 50
uim_skk - priority 50
uim_prime - priority 50
uim_canna - priority 60
Current `best' version is kinput2-canna-wnn_canna.
=======================================================
The following languages currently have input methods configured:
ja_JP
- デフォルトの変更: root権限でim-switch -s <名前>
# im-switch -s uim_skk
Using `/etc/X11/xinit/xinput.d/uim_skk' to provide `xinput-ja_JP'.
- ユーザーの変更: そのユーザー権限でim-switch -s <名前>
$ im-switch -s uim_skk

デフォルトを「none」にすると、XIM/IMmoduleの設定は行われず、ユーザー固
有の設定のみを利用します。

** for maintainers
各入力メソッドのパッケージは、/etc/X11/xinit/xinput.d/にそのパッケージ
固有のパラメータファイルを置きます(/usr/share/doc/im-switch/sample/に
サンプルがあります)。たとえばバックエンドにcannaを使うXIMである
kinput2-cannaの場合は次のようになります。

XIM=kinput2                                <- XMODIFIERS=@im=の値
XIM_PROGRAM=/usr/X11R6/bin/kinput2-canna   <- XIMとして起動するプログラム(フルパス)
XIM_ARGS="+xim"                            <- XIMの引数
GTK_IM_MODULE=                             <- GTK+のIMmoduleの値
DEPENDS=canna                              <- この入力メソッドが依存するパッケージ

各値を空にすると、そのパラメータは利用されないことになります。

DEPENDSには、依存関係表記として「,」(A,BはAとBの両方のパッケージが必要)
および「|」(A|BはAまたはBのいずれかのパッケージが必要)を利用できます。
ただし、DEPENDSがあるからといってそのパッケージを自動的にインストール
するわけではありません。im-switchを実行して入力メソッドを変更したとき
に、そのパッケージが入っていない場合は警告するだけです。

このファイルはBourne Shellのシェルスクリプトなので、必要に応じてプログ
ラムを記述したり、環境変数をexportしたりすることもできます。sh系列のシェ
ルによって実行されますが、bashとは限らないことに注意してください。dash
で動作するかどうか検証すべきです。

入力メソッドが複数のバックエンドに対応しているときには、それぞれにファ
イルを用意します。uim_skk、uim_anthyのように「<メソッド名>_<バックエン
ド名>」のような書式を使うことをお勧めします。

パッケージのpostinstでは、次のようにalternativeを登録します。

update-alternatives \
        --install /etc/X11/xinit/xinput.d/ja_JP xinput-ja_JP \
        /etc/X11/xinit/xinput.d/kinput2-canna 60

パッケージのprermでは、alternativeの削除を行います。

update-alternatives --remove xinput-ja_JP /etc/X11/xinit/xinput.d/kinput2-canna

alternative名は、xinput-<言語名>です(.EUC-JPや.UTF-8などのエンコーディ
ング名は付けません)。postinst時のように、/etc/X11/xinit/xinput.d/<言語
名>にシンボリックリンクファイルを作成します。

優先度をここでは60にしていますが、次のようにポリシーを仮定しています
(要協議)。

- 60: バックエンドがデフォルトでインストールされており、デフォルトの入
      力メソッドにしたいもの。
- 50: 標準の優先度。
- 10: none(何も設定しない)が予約。
- さらに低い優先度: bugが多く、一般ユーザーには推薦できないもの。

設定の起動は/etc/X11/Xsession.d/90im-switchによって行われます。このと
き、ユーザーの~/.xinput.d/<言語名>が最初に検索され、見つからないときに
/etc/X11/xinput.d/<言語名>が検索されます(90im-switchを見るとわかるよう
にさらに別のファイルも探しますが、Debianではこの2つが使われると考えて
おいてください)。このように検索されたファイルが設定パラメータとして取
り込まれ、90im-switchからXIMやIMmoduleの設定と起動が行われます。

** TODO
*** 高い優先度のもの
- バグフィクス
- 英語のプロポーサルを書いて賛同を募る

*** 中程度の優先度のもの
- im-switchのGUI(FCのpython-gtkのを持ってくる?)
- uimのほかのメソッドの設定、scimの設定、その他の国のメソッドの設定 (help)

*** 低い優先度のもの
- Emacs関連の対応
- XIM/IMmoduleの区分
-- 
武藤 健志@ kmuto @ kmuto.jp
           Debian/JPプロジェクト   (kmuto@debian.org, kmuto@debian.or.jp)
           株式会社トップスタジオ  (kmuto@xxxxxxxxxxxxxxx)
URI: http://kmuto.jp/ (Debianな話題など)

Attachment: pgptvLwasY1eI.pgp
Description: PGP signature