武藤@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