Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

Clear Linuxでの日本語入力 - Distroboxを利用したMozc入りUbuntuコンテナの応用


Linuxをデスクトップ環境として利用する場合、選択肢として挙がるのはUbuntuFedoraCentOSなど、いわゆるメジャーどころだ。このような選択肢の範囲では、日本語入力環境の有無を意識することは稀だろう。自らビルドすることはなく、提供されているパッケージを導入するだけで、ほとんどの場合は事足りるはずだ。しかし一部のディストリビューションの場合、そうではない。例えばClear Linuxだ。

Clear Linuxの場合、標準構成で提供される日本語入力はSKK*1のみだ。おそらく、ほとんどのユーザーは日本語入力としてMozcを使用することを期待しているはずだ。しかし、bundleと呼ばれるClear Linuxの標準パッケージ群にMozcは含まれず、ユーザーは自分でMozcをビルドするしかない。

そのようなディストリビューション上に、他のディストリビューションをコンテナとして稼働させ、そこに必要なデスクトップ環境を構築するのは一案だが、ホスト、コンテナ間でデスクトップ環境は合わせたいだろうし、可能ならば統合したいとも思うだろう。それを実現してくれるのがDistroboxだ。

Distroboxを用いることで、コンテナ上に導入したアプリケーションを、ホスト側から透過的に利用できるようになる。そのようなことがアプリケーションに適用できるならば、日本語入力にも応用できるのではないか?それは実現可能だった。

この投稿では、MoacをインストールしたUbuntuコンテナとDistroboxを利用して、Clear Linux上で日本語入力を実現するための手続きを紹介する。

ホストにClear Linuxを採用しているとはいえ、DistroboxとUbuntuコンテナにまつわる手続きは、他のディストリビューションでも同様に有効なはずだ。

前提条件とリソース

version
Clear Linux Desktop*2 36420
Distrobox*3 1.3.0
Ubuntu container*4 22.04

ホスト側の準備

Clear Linuxのパッケージ更新
swupd check-update
sudo swupd update
Dockerの導入、設定

ホストにDockerを導入する。ホストを再起動することなく、Dockerを動作可能な状態にしておく。

sudo swupd bundle-add containers-basic
sudo systemctl enable --now docker

root無しでDockerコマンドを利用できるよう、カレント・ユーザーを"docker"グループへ登録し、直ちに有効化する。

sudo usermod -aG docker $USER
exec su -l $USER

Clear Linuxはstatelessと呼ばれる構成*5を採用しており、"/etc/hosts"を保持していない。次のコマンドで、それを補完する。

sudo touch /etc/hosts

Distrobox

インストール

公式サイトのインストール手順*6に沿って、Distroboxをインストールする。この投稿では、次のコマンドを実行した。

curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh

任意のフォルダへDistroboxをインストールすることもできる。その場合、忘れずに該当フォルダをPATHへ追加すること。次のコマンドは、"~/.local/bin"へインストールした場合のコマンドだ。

PATH=$PATH:~/.local/bin
Ubuntuコンテナの導入

Distroboxのコマンドを利用して、コンテナ・イメージを入手する。以下のコマンドは、次の環境を想定した場合のものだ。

イメージ Ubuntu 22.04
コンテナ名 ubuntu
distrobox create --image docker.io/library/ubuntu:22.04 --name ubuntu

ユーザーはUbuntu以外、任意のイメージを用いることもできる。公式サイトにサポートしているイメージの一覧*7が掲載されている。

次コマンドを実行して、コンテナに入る。

distrobox-enter ubuntu
Mozcの導入

このセクションでの操作は全て、コンテナ内で実施する。ホストではないことに注意してほしい。

まずパッケージを更新する。

sudo apt update -y
sudo apt upgrade -y

Mozcと関連パッケージをインストールする。

sudo apt install ibus-mozc mozc-data mozc-server mozc-utils-gui -y
sudo apt install libcanberra-gtk* -y
IBusの設定

Ubuntu上で、IBusの設定を始める。

ibus-setup

ここから作業はGUIへ変わる。Mozcを登録するまでの一連の操作は、以下のスクリーンショットを確認してほしい。
もしibus-setupが表示するリストにMozcが含まれていない場合、次のコマンドを試してみて欲しい。

ibus restart
ibus-setup

Screenshot: step-by-step on Ubuntu

Mozcを登録したら、ホスト側の作業を始める。

Clear Linuxの設定

このセクションでの操作は全て、ホスト側で行う。コンテナではないことに注意してほしい。

ここまでの作業を完了すると、Clear Linuxの設定画面から、UbuntuのMozcが見えるようになっている。キーボード設定からMozcを登録する。Mozcを登録するまでの一連の操作は、以下のスクリーンショットを確認してほしい。

Settings > Keyboard > Input Sources

スクリーンショットが示すように、ホスト側でMozcを登録すると、タスクバーに日本語入力のアイコンが現れる。Ubuntu上のMozcを利用して、Clear Linux上でも日本語が入力できるようになった。

Screenshot: Mozc on Clear Linux

再起動後の日常利用

ホスト、コンテナの設定は再起動後でも保持されるとはいえ、ホスト側の日本語入力は、コンテナ無しでは機能しない。日本語入力を必要とする前に、コンテナ上でMozcが稼働している必要がある。
ホスト起動後、次のコマンドを実行することで対応できる。起動直後から日本語入力できるよう、".profile"に追記しておくと良いだろう。
Wayland環境の場合は、次の投稿で紹介する方法がある。

distrobox enter -n ubuntu -- ibus-daemon -drx

Screenshot: Mozc on Clear Linux

impsbl.hatenablog.jp