Qubes OSの日本語化 その1

このポストではQubes OSを日本語化する手順について解説します。Fedoraテンプレート、Debianテンプレートの順に日本語化していき、最後にdom0の日本語化について解説します。Whonixテンプレートの日本語化は次回以降取り上げます。

Fedoraテンプレートの日本語化

最初に fedora-38-xfce テンプレートのターミナルを起動します。(テンプレートのターミナルの起動方法はこちらを参照)

日本語ロケールのインストール

fedora-38-xfceテンプレートにインストールされたロケールを調べます。

[user@fedora-38-xfce ~]$ localectl list-locales
C.UTF-8
en_AU.UTF-8
en_BW.UTF-8
en_CA.UTF-8
en_DK.UTF-8
en_GB.UTF-8
en_HK.UTF-8
en_IE.UTF-8
en_NZ.UTF-8
en_PH.UTF-8
en_SC.UTF-8
en_SG.UTF-8
en_US.UTF-8
en_ZA.UTF-8
en_ZW.UTF-8

日本語のロケールがまだ入っていないのでインストールする必要があります。

[user@fedora-38-xfce ~]$ sudo dnf install glibc-langpack-ja

インストールが終わってから再びロケールをリストすると、

[user@fedora-38-xfce ~]$ localectl list-locales
C.UTF-8
en_AU.UTF-8
en_BW.UTF-8
en_CA.UTF-8
en_DK.UTF-8
en_GB.UTF-8
en_HK.UTF-8
en_IE.UTF-8
en_NZ.UTF-8
en_PH.UTF-8
en_SC.UTF-8
en_SG.UTF-8
en_US.UTF-8
en_ZA.UTF-8
en_ZW.UTF-8
ja_JP.UTF-8

期待どおりリストの末尾に日本語ロケールが掲載されてます。ロケールをja_JP.UTF-8に設定します。

[user@fedora-38-xfce ~]$ sudo localectl set-locale ja_JP.UTF-8

Crtl + Dを押してfedora-38-xfceテンプレートのターミナルを閉じます。fedora-38-xfceテンプレートを再起動させます。(再起動のさせ方はこちらを参照)

再起動後に fedora-38-xfceテンプレートのターミナルをもう一度開くと、メニュー表示が日本語に変わっています(フォントがまだ中国語風ですが)。

fedora-38-xfceテンプレートのターミナルが日本語表記に変わった
fedora-38-xfceテンプレートのターミナルが日本語表記に変わった

フォントのインストール

つづいて日本語フォントをいくつか入れましょう。

[user@fedora-38-xfce ~]$ sudo dnf install google-noto-sans-cjk-jp-fonts google-noto-serif-cjk-jp-fonts google-noto-sans-mono-cjk-jp-fonts vlgothic-fonts vlgothic-p-fonts

fcitx5-mozcのインストール

日本語入力は ibus-mozcなどもありますが、ここでは fcitx5-mozcを選択します。

[user@fedora-38-xfce ~]$ sudo dnf install fcitx5-mozc

このコマンドで fcitx5やfcitx5-configtoolなども自動的に入ります。

/etc/environment.d/ に環境変数を設定

つづいてインプットメソッド関連の環境変数を設定します。個別キューブのホームディレクトリではなくテンプレートのルートに設定することで、fedoraテンプレートに基づくすべてのキューブで環境変数が有効になります。 /etc/environment.d/ ディレクトリに Fcitx5 専用の設定ファイルを書くことにしました。

[user@fedora-38-xfce ~]$ sudo mkdir /etc/environment.d
[user@fedora-38-xfce ~]$ sudo nano /etc/environment.d/50-fcitx5.conf

nanoで/etc/environment.d/50-fcitx5.conf に以下の内容を書き込みます。(参考URL)

XMODIFIERS=@im=fcitx
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx

Ctrl + O, エンターを順に押すと内容がファイルに書き込まれます。 Ctrl + X で nano の編集を終了します。

なお /etc/environment.d/...confの代わりに /etc/environment環境変数を書いてもOKです。1

いったん fedora-38-xfceテンプレートをシャットダウンしてください

Fcitx5自動起動の設定

インプットメソッドの Fcitx5は vault, workなどのappキューブでは当然自動起動させるべきですが、fedora-38-xfceテンプレートや sys-netなどサービス系のキューブでは日本語入力はあまり使わないので必ずしも自動起動しなくてもよいでしょう。また日本語入力をあまり使わないキューブでFcitx5が起動していると、画面右上の通知領域にFcitx5のアイコンがずらずら並んで見苦しくなります。

以上の事情を踏まえ Fcitx5 に関してはappキューブでは自動起動させ、sys-***系のキューブや fedoraテンプレートでは自動起動させないことにします。

さて Fcitx5の自動起動ファイルの org.fcitx.Fcitx5.desktop/etc/xdg/autostart/ に置くパターンとホームディレクトリの /home/user/.config/autostart/ に置くパターンの2通りありますfedoraテンプレートの /etc/xdg/autostart/ を使用するとルートに設定ファイルがあるので fedoraテンプレートに基づくすべてのキューブで Fcitx5が自動起動します。一方、個別キューブのホームディレクトリの /home/user/.config/autostart/を利用する場合、日本語入力が自動起動してほしいキューブにだけorg.fcitx.Fcitx5.desktop を置けばよいということになります。2

結論としては vault, work, personal, untrusted, default-dvmの5つのキューブにおいて日本語入力を自動起動させるために /home/user/.config/autostart/org.fcitx.Fcitx5.desktop ファイルを設置することにします。なお default-dvm で設定するとそれに基づくディスポーザブル・キューブにおいて日本語が自動起動するようになります。

また Fcitx5のキー操作などの設定や Mozcの好みの設定を5つのキューブすべてで操作するのも面倒です。どこか1つのキューブで設定したあと、Fcitx5とMozcの設定ファイルを上の自動起動ファイルとともに、他のキューブに次々とコピーすることにしましょう。

今後の作業は以下のように進めていきます

  • vault キューブにおいて自動起動ファイル org.fcitx.Fcitx5.desktop/home/user/.config/autostart/に設定
  • vault キューブにおいて Fcitx5とMozcの設定をすませる
  • vaultキューブのホームディレクトリにある .config/autostart .config/fcitx5 .config/mozc の3つを他のキューブにコピー

vaultキューブから他のキューブにコピーすることにしたのは、ファイルコピーするときは信頼性の高いキューブから低いキューブの方向に動かすべきだというQubes OSのガイドに沿ったからです。マルウェアに汚染している可能性の最も低いキューブからファイルを移していくのがマルウェアの拡大を防ぐために望ましいのです。そのかわりデータ漏洩のリスクは残っていることには十分注意してください。たとえば日本語入力の履歴が流出しないよう .config/mozc からコピーするものは制限しないといけません。

vaultキューブ内でのFcitx5の自動起動を設定

(もしもfedora-38-xfceテンプレートをシャットダウンするよりも前にvaultキューブが起動していたならば、かならずvaultキューブを再起動させてください。そうしないとFcitx5などのインストールがvaultキューブに反映しません。)

まずは、vaultキューブのターミナルを起動させます。

vaultキューブのターミナルでFcitx5の自動起動を設定していく
vaultキューブのターミナルでFcitx5の自動起動を設定していく

まず .configディレクトリに autostartディレクトリを作成します。

[user@vault ~]$ mkdir .config/autostart

このディレクトリに自動起動のdesktopファイルを置きます。(参考URL) なおこのような自動起動ファイルをホームディレクトリにつくるときは ln -s コマンドでソフトリンクを張ることが多いのですが、 そうするとあとで qvm-copy するときにエラーが出てしまうので以下のように cp コマンドを使ってください。

[user@vault ~]$ cp /usr/share/applications/org.fcitx.Fcitx5.desktop .config/autostart/

自動起動がうまくいくかどうか確かめるために vaultキューブを再起動させてください。再起動後に画面右上の通知領域に かまたはのアイコンが出たら自動起動成功です。再び vaultのターミナルを起動させ、Ctrl + スペースまたは半角/全角キーを押すと日本語が入力できるようになります。

Fcitx5とMozcの設定

Fcitx5のアイコン または の上で右クリックして、ドロップダウンメニューの中から「設定」を選ぶと以下のような fcitx5-configtoolのウィンドウが出現します。右クリックでダメならターミナルから fcitx5-configtool & と入力するとうまくいきます。

fcitx5-configtoolのウィンドウ
fcitx5-configtoolのウィンドウ

日本語キーボードを使っている場合、上の画面左側の欄において上が 「キーボード - 日本語」、下が "Mozc" になっていれば正解です。「グループ」の右横のドロップダウンメニューでグループ2にすると英語キーボードを使う設定に切り替わります。日本語キーボードしか使わない場合は、ゴミ箱アイコンのボタンを押してこのグループ2を削除したほうがよいと思います(意図せずにショートカットキーを押してしまい英語キーボード設定に変わることがありえます)。なお、理由はよくわからないのですがvaultキューブで「グループ2の削除」の設定をしても、設定ファイルを他のキューブにコピーした後その新しいキューブでFcitx5を起動するとグループ2が復活してしまいます。「グループ2の削除」だけは個別のキューブでいちいちやらないといけないようです。

グローバルオプションのタブを開くと、一番上が「入力メソッドの切り替え」です。「ハングル」はゴミ箱ボタンを押して削除をしても大丈夫でしょう。日本語入力を起動させる好みのキーの組み合わせがある場合は、プラスボタンをクリックし「空」の欄を押して好きなキーを押します。

fcitx5-configtool の グローバルオプション
fcitx5-configtool の グローバルオプション

「一時的に第1入力メソッドに切り替える」は、英数字入力と日本語入力の切り替えにすぎません。これはCtrl + Space または半角/全角キーと同等の役割しかないのにもかかわらず 左Shiftキーというよく使うキーを使うたびに日本語入力が切り替わり単に迷惑なので、ゴミ箱ボタンを押して削除することをおすすめします。

「次の入力メソッドグループに切り替える」は入力メソッドタブに設定のあるグループ2を有効にしている場合に、このグループ間の切り替えを行うものです。Super(いわゆるWindowsキー) + Space をうっかり押すと、英語キーボード設定に変わってしまい、例えばアットマーク@などが突然打てなくなるので要注意です。英語キーボードを使わない人はグループ2を削除しておきましょう。

fcitx5-configtoolの設定が終わったら最後に適用またはOKを押してください。

つぎは Mozcの設定を行います。

vaultキューブのターミナルの上でCtrl + スペース または 半角/全角 を押して日本語入力をオンの状態にします。Fcitx5のアイコン の上で右クリックして「Mozcの設定」をクリックし、「設定ツール」を選択すると、以下のMozcの設定画面が現れます。うまくいかない場合は、fcitx5-configtoolを開き、アドオンのタブを選び、下の方にある "Mozc" の右端の設定ボタンを押して出てくるウィンドウの「設定ツール」右のボタンを押してください。

Mozcの設定ツール
Mozcの設定ツール

ご自分の好みに合わせてMozcの設定をしたらOKボタンを押してください。

確認のため vaultキューブのターミナル上でうまく日本語入力ができるか試してください。

vaultキューブから他のキューブに日本語入力設定ファイルを qvm-copy

以上の一連の作業によりvaultキューブのホームディレクトリにおいて、Fcitx5の自動起動の設定ファイルが.config/autostartに、Fcitx5の設定関連ファイルが .config/fcitx5/, に、Mozcの設定関連のファイルが .config/mozc に入っています。

なお .config/mozc は入力履歴とそのデータの暗号化キーなども含まれており慎重な取り扱いが必要です。上で行ったGUIでのMozcの設定関連は .config/mozc/config1.db入っています。他のキューブにコピーするのはこの config1.dbに限定したほうがいいと思います。

今度はこれらの設定ファイルの一群を他のキューブに次々とコピーしていきます。 いったん /home/user/.configの中から他のキューブへコピーすべきファイルをホームディレクトリの tmpディレクトリにコピーします。

[user@vault ~]$ mkdir tmp
[user@vault ~]$ cp -r .config/autostart/ .config/fcitx5/ tmp/
[user@vault ~]$ mkdir tmp/mozc
[user@vault ~]$ cp .config/mozc/config1.db tmp/mozc/

lsコマンドで tmpディレクトリの中身を確認します。

[user@vault ~]$ ls -RaF tmp/
tmp/:
./  ../  autostart/  fcitx5/  mozc/

tmp/autostart:
./  ../  org.fcitx.Fcitx5.desktop

tmp/fcitx5:
./  ../  conf/  config

tmp/fcitx5/conf:
./  ../  cached_layouts

tmp/mozc:
./  ../  config1.db

最初に workキューブにコピーします。 vaultキューブのターミナルから次のコマンドを打ちます。

[user@vault ~]$ qvm-copy tmp/*

すると以下のウィンドウが出てくるので、Targetの欄で work を選択します。

qvm-copy で vaultからworkに日本語設定ファイルをコピー
qvm-copy で vaultからworkに日本語設定ファイルをコピー

workキューブがまだ起動していない場合は起動するまで少し待たされます。

workキューブのターミナルを起動させます。

コピーしてきたファイル群を /home/user/.config以下に移します。

[user@work ~]$ mv ~/QubesIncoming/vault/* ~/.config/

以下のlsコマンドでうまくできたか確認します。

[user@work ~]$ ls -Ra .config/autostart/ .config/fcitx5/ .config/mozc/
.config/autostart/:
.  ..  org.fcitx.Fcitx5.desktop

.config/fcitx5/:
.  ..  conf  config

.config/fcitx5/conf:
.  ..  cached_layouts

.config/mozc/:
.  ..  config1.db

このあとworkキューブを再起動させます。再起動後にFcitx5が自動起動して、適切に日本語が入力できることを確認してください。

再び vaultキューブのターミナルに戻り、先ほどと全く同じ qvm-copy コマンドを入力して(上向き矢印キーを押すと出てきます)今度は personal キューブにコピーしてください。そしてpersonalキューブのターミナルから上と同様のやり方で ~/QubesIncoming/vaultから ~/.config以下にファイル群を移動させます。

personalキューブが終わったら、untrustedキューブも同じようにして片付けてください。

最後にディスポーザブルのテンプレートである default-dvm に一連のファイルのコピーをします。(「ディスポーザブルのテンプレート」と「ディスポーザブル」は何がどう違うのかなどの話はまだやってないので理解できなくてもOKです)

vaultキューブのターミナルから、上と全く同じ qvm-copy コマンド( qvm-copy tmp/*)を入力します。以下のポップアップウィンドウの Target の欄は、debian-12-xfce の下にある default-dvm を選んでください。一番上のほうにある Disposable VM (default-dvm)ではありません。その後 OKを押します。

default-dvmに日本語入力の設定ファイルをコピー
default-dvmに日本語入力の設定ファイルをコピー

以下のようにして画面左上 - グレーキューブ - TEMPLATES タブ - default-dvm -Xfce Terminal の順に選んで default-dvm のターミナルを起動します。

default-dvm テンプレートのターミナルを起動する
default-dvm テンプレートのターミナルを起動する

これまで同様に QubesIncoming/vaultから .config以下に一連のファイルを移動させます:

[user@default-dvm ~]$ mv QubesIncoming/vault/* .config/

default-dvmキューブを(再起動ではなく)シャットダウンします。 default-dvm が完全にシャットダウンしたのを確認してから、今度はディスポーザブルのXfce TerminalまたはFirefoxを開きます。画面左上 - グレーキューブ - APPS タブ - default-dvm - Xfce Terminal の順に選びます(Firefoxでもかまいません)。今回は APPSタブの方ですのでご注意ください。

ディスポーザブル(disp####)のターミナルを開く
ディスポーザブル(disp####)のターミナルを開く

そうすると disp#### というdispの後ろに4桁以下の数字がついたキューブが起動してターミナルのウィンドウが開きます。そこで日本語入力してディスポーザブルでもうまく日本語を入力できるか確認してください。

vaultキューブのホームディレクトリの tmpディレクトリは、後でまた使うので消さないでください。

ディスポーザブルでも日本語がうまく入力できた
ディスポーザブルでも日本語がうまく入力できた

disp#### のターミナルで Ctrl + D を押してください。そうするとターミナルが終了し、それと同時に disp#### のキューブもシャットダウンして消滅します。

sys-firewall と sys-usb の日本語入力の自動起動をオフにする

ここまで fedora-38-xfceテンプレートとそれに基づくキューブの日本語化をやってきました。さてここで、Qubes OS全体を再起動させると何が起こるでしょうか。

OS起動後に緑色のFcitx5アイコン と赤色のFcitx5アイコン が一つずつ画面右上の通知領域に現れます。実はこれらは sys-firewall と sys-usb の日本語入力用のアイコンなのです。Qubes OS R4.2では sys-firewallとsys-usbは、default-dvm をテンプレートとするディスポーザブルになっています。3 上の方でやった作業で default-dvmに自動起動ファイルを置いたので、sys-firewallとsys-usbの Fcitx5が自動起動したのです。

sys-firewallとsys-usbにおいて自動起動ファイル(.config/autostart/org.fcitx.Fcitx5.desktop)を削除してもディスポーザブルであるので、再起動するとその削除した事自体が忘れられて自動起動ファイルが復活してしまいます。幸い hostname コマンド を呼び出すと sys-firewallあるいは sys-usbという値が返ってくるとのでこの情報をうまく利用して、Fcitx5が自動起動しないようにスクリプトを組んでみましょう。

Qube Manager経由でdefault-dvm キューブを起動します。default-dvmの行を選択して Start/Resumeボタンを押します。

Qube Managerで default-dvmを起動する
Qube Managerで default-dvmを起動する

起動したら画面右上の水色キューブ 経由で default-dvmのターミナルを開いてください(Run Terminalをクリックする)。

nanoで /home/user/.bash_profile を編集します。

[user@default-dvm ~]$ nano .bash_profile 

当初の.bash_profileの内容は以下のとおりです。

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

"# User specific environment and startup programs"の行の下側に以下のスクリプトを書き込みます。

if [ "$HOSTNAME" = "" ]; then
        HOSTNAME=`hostname`
fi

if [ "${HOSTNAME::4}" = "sys-" ]
then
        FCITX5_FILE="/home/user/.config/autostart/org.fcitx.Fcitx5.desktop"
        [ -e "$FCITX5_FILE" ] && rm $FCITX5_FILE
fi

最初の3行の内容は HOSTNAMEがまだ決まっていなかったら hostnameコマンドを呼び出して HOSTNAME変数を設定するものです。2個目のifブロックがメインの内容で、HOSTNAME変数の最初の4文字が "sys-" だったら自動起動ファイルを削除せよというものです。

Ctrl + O,エンター, Ctrl + Xの順に押して内容を保存してから nanoを閉じます。

このあと、default-dvm をシャットダウンさせます。

sys-usbを再起動させて赤いFcitx5のアイコンが出現しないことを確認してください。また、ディスポーザブルのFirefoxを起動させて(画面左上 - グレーキューブ - APPS タブ - default-dvm - Firefox の順に選ぶ)、通常のディスポーザブルにおいてFcitx5が自動起動することを確認してください。

ディスポーザブルのFirefoxで日本語入力に成功
ディスポーザブルのFirefoxで日本語入力に成功

fedoraテンプレートの/etc/skel/ に日本語入力設定ファイルをコピー

fedoraテンプレートに基づく新しいキューブを作成した場合、このままではまた日本語入力設定ファイルを新キューブにコピーしないといけません。その手間を省くために fedora-38-xfce テンプレートの /etc/skel/ディレクトリを活用します。

普通のLinuxでは新規にユーザーを作成したとき、そのユーザーのホームディレクトリに /etc/skel/の内容がコピーされるようにできています。"skel"というのはホームディレクトリのスケルトンという意味です。

Qubes OSの場合、新しくキューブを作成したときその新キューブのホームディレクトリに /etc/skel/の内容がコピーされます。(参考URL)

まずは日本語入力設定ファイルを vaultキューブからfedora-38-xfce テンプレートにコピーすることにします。

vaultキューブを起動してそのターミナルを開きます。再び以前と同様の qvm-copyコマンドを打ちます。

[user@vault ~]$ qvm-copy tmp/*

コピーの Targetには以下のように fedora-38-xfce を選択してOKを押します。

日本語入力関連のファイルを vaultから fedora-38-xfceテンプレートにコピー
日本語入力関連のファイルを vaultから fedora-38-xfceテンプレートにコピー

fedora-38-xfce テンプレートのターミナルを開きます。

最初に /etc/skel/以下に .configディレクトリを作成します。

[user@fedora-38-xfce ~]$ sudo mkdir /etc/skel/.config

つぎにvaultからコピーしてきたファイルを /etc/skel/.config以下に移します。

[user@fedora-38-xfce ~]$ sudo mv QubesIncoming/vault/* /etc/skel/.config/

lsコマンドでうまく移動できたことを確認します。

[user@fedora-38-xfce ~]$ sudo ls -RaF /etc/skel/.config/
/etc/skel/.config/:
./  ../  autostart/  fcitx5/  mozc/

/etc/skel/.config/autostart:
./  ../  org.fcitx.Fcitx5.desktop

/etc/skel/.config/fcitx5:
./  ../  conf/  config

/etc/skel/.config/fcitx5/conf:
./  ../  cached_layouts

/etc/skel/.config/mozc:
./  ../  config1.db

/etc/skel/ の中はルート権限であるべきなのに、いま移したファイルはユーザー所有になっているのでこれを直します。

[user@fedora-38-xfce ~]$ cd /etc/skel/.config/
[user@fedora-38-xfce .config]$ sudo chown -R root:root *

fedora-38-xfceテンプレートをシャットダウンさせてください。

それでは新しいキューブを作成して上記の作業がうまくいったか確かめましょう。Alt + F3を押して createと入力してエンターキーを押すか、あるいは画面左上のマーク - Qubes Tools経由で Create New Qube を起動します。

Create New Qubeを起動
Create New Qubeを起動

つぎのとおり Create New Qube のツールが開きます。

Create New Qube のツールで新しいキューブを作成
Create New Qube のツールで新しいキューブを作成

一番左側の欄は "Application" をクリックします。Basic properties の下にある Name には新しいキューブの名前を入力します。Label はテーマとなる色を選択します。Templateのドロップダウンメニューは fedora-38-xfce (default)を選択します。 一番下の Create ボタンを押すと新しいキューブが作成されます。

新しく作成されたキューブ(上の画面の例では "myfedora"というキューブ)のターミナルやFirefoxを起動させて、Fcitx5が自動起動して日本語入力ができることを確認してください。

Debianテンプレートの日本語化

debian-12-xfce テンプレートのターミナルを起動します。

debian-12-xfce テンプレートのターミナルを起動
debian-12-xfce テンプレートのターミナルを起動

ロケールの設定

最初にロケールを変更します。

user@debian-12-xfce:~$ sudo dpkg-reconfigure locales

dpkg-reconfigureを用いてロケールを設定
dpkg-reconfigureを用いてロケールを設定

ロケールの変更画面が出てきたらPageDownまたは下向き矢印キーを押して左側欄の "ja_JP.UTF-8 UTF-8" のところをハイライトします。スペースキーを押すと[ ]内に*マークが付きます。タブキーを押して<Ok>に移ってエンターキーを押すと次の画面に移ります。

ロケールを日本語に設定する画面
ロケールを日本語に設定する画面

下向き矢印キーを2回押して "ja_JP.UTF-8" を選択します。タブキーを押して<Ok>を選んでからエンターキーを押すとロケールの設定が終わり、ターミナルの通常の画面に戻ります。

user@debian-12-xfce:~$ sudo dpkg-reconfigure locales
locales-all installed, skipping locales generation

Qubes OSの設定だと日本語ロケールを含めてすべてのロケールが入っているのでインストールの必要はないようです。 localectl statusロケールが適切に変わったことを確認します。

user@debian-12-xfce:~$ localectl status
System Locale: LANG=ja_JP.UTF-8
    VC Keymap: (unset)         
   X11 Layout: us
    X11 Model: pc105

キーボードの "X11 Layout" が "us" と間違っていますが、@マークなどを打っても日本語キーボードの設定になっているのでここは特に変えなくて大丈夫なようです。気になる場合は sudo localectl set-x11-keymap jp pc105 を実行するとキーボード設定が jp に変わります。

なお、sudo dpkg-reconfigure keyboard-configuration を実行するのがDebian流のキーボード設定なのですが、これをやると以下のようにエラーが出てしまいます。QubesではテンプレートのOSにはキーボードが付いていない設定なのと関係があるようです。

(以下を実行しないでください)

user@debian-12-xfce:~$ sudo dpkg-reconfigure keyboard-configuration
cat: '/sys/bus/usb/devices/*:*/bInterfaceClass': No such file or directory
cat: '/sys/bus/usb/devices/*:*/bInterfaceSubClass': No such file or directory
cat: '/sys/bus/usb/devices/*:*/bInterfaceProtocol': No such file or directory

dpkg-reconfigureでのキーボード設定は無理

フォントのインストール

続いてフォントをいくつかインストールします。

user@debian-12-xfce:~$ sudo apt install fonts-noto-cjk fonts-vlgothic fonts-noto-color-emoji fonts-takao fonts-takao-gothic fonts-takao-mincho

fcitx5-mozcのインストール

日本語入力は fcitx5-mozc を選択します。(fcitx5-mozcのインストールはこちらを参照)

user@debian-12-xfce:~$ sudo apt install --install-recommends fcitx5 fcitx5-mozc

Debianの場合 im-config というツールが Fcitx5の自動起動環境変数の設定などを「おまかせ」で全部やってくれます。上の "--install-recommends" の指定で im-configパッケージも一緒にインストールされています。debian-12-xfce に基づくキューブを新規に作成すると、im-configのおかげでその新キューブでもすぐに日本語入力が使えるようになります。またdebian-12-xfce テンプレート自身もこのあと再起動すると日本語入力が起動します。fedoraテンプレートではFcitx5の自動起動はオフにしたので、それに合わせて debianでもテンプレートでの Fcitx5の自動起動はオフにするつもりですが、その作業はいったん後回しにします。

deiban-12-xfce テンプレートを再起動させてください。debian-12-xfce テンプレートのターミナルを開くと、メニューが日本語で表示され日本語も入力できるようになりました。

debianテンプレートの日本語化に成功
debianテンプレートの日本語化に成功

Debianテンプレートで Fcitx5 と Mozc の設定

このあとは debianテンプレートで Fcitx5 と Mozc の設定を済ませて、その設定ファイルを /etc/skel/ ディレクトリにコピーすることで新規のキューブでの日本語入力の設定の手間を省きます。

まず fcitx5-configtoolを起動します。

user@debian-12-xfce:~$ fcitx5-configtool &

fcitx5-configtoolの設定画面 - 英語キーボードを日本語に直す必要がある
fcitx5-configtoolの設定画面 - 英語キーボードを日本語に直す必要がある

左側の欄の「Mozc」の一つ上が「キーボード - 英語 (US)」になっています。実際にキーを打ってみるとなぜか日本語キーボードの設定になっていて記号などが正常に打てますが、ここは「キーボード - 日本語」の設定に変えましょう。

左側の欄の 「キーボード - 英語 (US)」をクリックしてから、画面中央の削除ボタン(右矢印のアイコン)を押してこれを削除します。つぎに右側の一覧の下あたりにある「キーボード - 日本語」をクリックして、中央部分の追加ボタン(左矢印アイコン)を押します。

(Debianのマニュアルを見ると、実際に使っているキーボードが109キーボードであっても単なる105キーボードである「キーボード - 日本語」を選択したほうがよいとのことです。)

左側の欄に移った「キーボード - 日本語」をクリックして、上に移動のボタン(上向き矢印アイコン)を押します。

最終的に左側の欄では一番上に「キーボード - 日本語」がきて、その下に Mozcがあるのが正解です。

日本語キーボードの設定に直したところ
日本語キーボードの設定に直したところ

これでよければ適用ボタンを押します。すると次のメッセージが出るので Yes を押します。

キーボードの設定を変更するメッセージ
キーボードの設定を変更するメッセージ

グローバルオプションのタブを押して、「一時的に第1入力メソッドに切り替える」とそのすぐ下の「次の入力メソッドに切り替える」、「前の入力メソッドに切り替える」は削除したほうがよいでしょう(Shiftキーや Ctrl +ShiftキーでFcitx5がいちいち反応するのを防ぐためです)。ゴミ箱アイコンを押してそれらを削除してください。

グローバルオプションのタブを押して余計なキー設定を削除
グローバルオプションのタブを押して余計なキー設定を削除

つぎは Mozcの必要な設定を行います。「入力メソッド」タブをクリックして左側欄の「Mozc」をクリックしてから中央付近にある設定アイコンを押すとMozcの設定ウィンドウが現れます。

Mozcの設定を行うウィンドウ
Mozcの設定を行うウィンドウ

ここで Mozcの「設定ツール」などを開いて好みの状態に設定してください。

最後に fcitx5-configtoolの適用ボタンまたはOKボタンを押して設定を保存してください。fcitx5-configtoolを閉じます。

Debianテンプレートの/etc/skel/ に日本語入力設定ファイルをコピー

つぎはFcitx5とMozcの設定ファイルを /etc/skel/にコピーしていきます。~/.config/mozc の中で必要なのは config1.db です。

user@debian-12-xfce:~$ sudo mkdir /etc/skel/.config
user@debian-12-xfce:~$ sudo cp -R .config/fcitx5 /etc/skel/.config/
user@debian-12-xfce:~$ sudo mkdir /etc/skel/.config/mozc
user@debian-12-xfce:~$ sudo cp .config/mozc/config1.db /etc/skel/.config/mozc/

コピーされたものを確認します。

user@debian-12-xfce:~$ sudo ls -RaF /etc/skel/.config
/etc/skel/.config:
./  ../  fcitx5/  mozc/

/etc/skel/.config/fcitx5:
./  ../  conf/  config  profile

/etc/skel/.config/fcitx5/conf:
./  ../  cached_layouts  mozc.conf  notifications.conf

/etc/skel/.config/mozc:
./  ../  config1.db

DebianテンプレートのFcitx5自動起動をオフにする

テンプレートでは日本語はあまり使わないのでFcitx5の自動起動を切ることにします。これは im-configを使って設定します。im-configを起動します。

user@debian-12-xfce:~$ im-config &

以下の im-config画面が出ます。

im-configが起動して現在の設定を表示
im-configが起動して現在の設定を表示

現在の設定内容が表示されています。OKボタンを押します。

インプットメソッドの設定を変更するために 'はい' を選択
インプットメソッドの設定を変更するために 'はい' を選択

「明示的に ユーザー設定を選択しますか?」という質問が出ました。はいを選択すると、設定を更新することができます。はい ボタンを押してください。

Debianテンプレートのインプットメソッドをnoneに設定
Debianテンプレートのインプットメソッドをnoneに設定

インプットメソッドの選択画面に移ります。"none" を選択して、OKボタンを押します。これで debian-12-xfce テンプレートのFcitx5が自動起動しなくなります。

Debianテンプレートのインプットメソッドの設定結果
Debianテンプレートのインプットメソッドの設定結果

設定結果が表示されています。OKボタンを押して im-configを終了させます。

上で "none"を選んだ設定は debian-12-xfce テンプレートのホームディレクトリにある .xinputrc ファイルに書き込まれています。これはホームディレクトリに置いてある設定ですから、debianテンプレートに基づくappキューブには影響を与えないわけです。Appキューブでは日本語入力は自動起動します。

/etc/environment.d/ に環境変数を設定

Debianテンプレートで日本語入力を使いたくなったときにはターミナルから fcitx5 -d と入力します。しかしながら、このままではFcitx5はうまく機能してくれません。インプットメソッドに"none" を選んだ場合、必要な環境変数が im-configにより設定されていないからです。 Fedoraテンプレートと同様にしてFcitx5の環境変数を設定します。

user@debian-12-xfce:~$ sudo nano /etc/environment.d/50-fcitx5.conf

/etc/environment.d/50-fcitx5.conf に以下の内容を書き込みます。

XMODIFIERS=@im=fcitx
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx

これでdebianテンプレートでのFcitx5自動起動関連の設定作業は終わりです。最後にうまくいっているか確認します。

debian-12-xfce テンプレートに基づく新しいキューブを作成して、Fcitx5が自動起動して日本語入力がうまくできるか確かめましょう。

debian-12-xfce テンプレートを(再起動ではなく)シャットダウンしてください。

Alt + F3を押して createと入力してエンターキーを押すか、あるいは画面左上のマーク - Qubes Tools経由で Create New Qube を起動します。

debianテンプレートに基づく新しいappキューブを作成
debianテンプレートに基づく新しいappキューブを作成

新しいキューブの名称と色を決めて、Template の欄は debian-12-xfce を選択してOKを押します。

新キューブのターミナルを起動させてCtrl +スペースなどを押して日本語が入力できるか確認してください。

debianの新キューブで日本語入力に成功
debianの新キューブで日本語入力に成功

つぎに再び debian-12-xfce テンプレートを起動してターミナルを開いてください。

まず Ctrl +スペースや半角/全角キーを押しても日本語入力できないことを確認してください。日本語入力ができなければ自動起動オフに成功しています。つぎにターミナルから fcitx5 -drと打って Fcitx5が手動で起動するか確かめます。

user@debian-12-xfce:~$ fcitx5 -dr

起動したら Ctrl +スペースを押して何か日本語を入力できるか試してください。日本語が書けたら手動のFcitx5起動が成功したことになります。

その他日本語関連のインストール

以下はLinuxの日本語マニュアルとFirefoxの日本語化パッケージをインストールします。

user@debian-12-xfce:~$ sudo apt install firefox-esr-l10n-ja manpages-ja manpages-ja-dev

日本語のホームディレクトリ名を英語のホームディレクトリ名に変えたいときによく使うコマンドLANG=C xdg-user-dirs-gtk-update ですが、必要なパッケージがまだ入っていないので以下のようにしてインストールします。

user@debian-12-xfce:~$ sudo apt install xdg-user-dirs-gtk

Dom0 の日本語設定について

セキュリティに関する配慮事項

Qubes OS R4.2になってからは dom0 にすべての言語パッケージがあらかじめインストールされています(glibc-all-langpacksというパッケージが入っています)。このおかげで Qubes OS をインストールしたときに言語設定を日本語にしておけば、そのまま dom0 は日本語の設定になります。Noto CJKフォントが入っているので日本語の表示も問題なくできます。 しかし fcitx5-mozc などの日本語入力システムはインストールされていません。

さて dom0はQubes OSの司令塔です。ここに万が一脆弱性があって攻撃を受けてしまうとQubes OS全体が乗っ取られてしまいます。そのためdom0で実行されるプログラムはできるだけ少ないことが望ましいとされています。

(I)t is very important that as few programs as possible be run in dom0 in as restricted a manner as possible. (Dom0ではできる限り少ないプログラムが、できる限り制限された形で実行されることが極めて重要です)

Fedoraなどのテンプレートが日本語化していればわざわざ dom0に日本語入力ソフトをインストールしなくてもQubes OSは十分使えるので、dom0に日本語入力システムをインストールしないのがベストの選択肢ではないかと思います

日本語入力システムをインストールしない場合、ディレクトリ名が日本語のままだと非常に使いづらいので dom0 の Xfceターミナルから

[ft7777@dom0 ~]$ LANG=C xdg-user-dirs-gtk-update

を実行してホームディレクトリにある「ドキュメント」等のディレクトリ名を英語に変更することをおすすめします。

またQubes OSのスクリーンショットを取ると撮影されたファイル名が「スクリーンショット」で始まるので扱いにくいですが、dom0ターミナルから

[ft7777@dom0 ~]$ LANG=C xfce4-screenshooter

と入力すると英語設定でスクリーンショットが撮れます。あるいはdom0のホームディレクトリの binディレクトリに以下のような myshooter という簡単なスクリプトを書いておきます。

[ft7777@dom0 ~]$ cat ~/bin/myshooter 
#!/usr/bin/bash
LANG=C xfce4-screenshooter "$@"

chmod +x bin/myshooter によってこのファイルを実行可能ファイルにします。そしてDom0のキーボードの設定から下記のようにアプリケーションのショートカットを変更してキーボードの PrtScキーで /home/(ユーザー名)/bin/myshooter が起動するように設定すれば英語のファイル名でスクリーン撮影できます。

prt scキーから英語設定でスクリーンショットを撮れるようにする
prt scキーから英語設定でスクリーンショットを撮れるようにする

時刻表示の書式を修正

時刻表示の書式が奇妙なのでこれを直します。画面右上の時刻のところで右クリックして「プロパティ」を選び、「時刻のオプション」の表示形式を「カスタム」にします。「カスタム」の下のところを例えば %Y/%m/%d(%a) %R にすると 2022/10/08(土) 18:00 のような書式で時刻が表示されます。%Y, %aなどの時刻表示の書式については dateコマンドのmanページや解説サイトを参照してください。

Dom0 のロケールを C.UTF-8にするには

Dom0を日本語から英語の設定に直したい場合は、画面右上のユーザー名をクリックしてログアウトを選んで一旦ログアウトしてください。その後ログインでパスワードを入力する画面になったら画面右上の ja_JP.UTF-8 のところをクリックすると様々なロケールが選べるようになります。そこで一番上の C を選んでログインするとロケールが C.UTF-8に変更されます。うまく英語に切り替わらない場合はdom0のターミナルから localectl set-locale LANG=C.UTF-8 を実行してください。何度か再起動していくうちに英語設定に変更されると思います。

ウィンドウタイトルに日本語が表示されないのはワケがある

初期設定のままだとウィンドウタイトルバーの日本語表示がオフのままになってます。下記の workキューブのFirefoxのウィンドウでは、上部の青いタイトルバーに日本語で表示されるはずのタイトルがアンダースコアに置き換わっています。

ウィンドウタイトルで日本語が表示できない
ウィンドウタイトルで日本語が表示できない

workキューブのアプリケーションでウィンドウタイトルに日本語を表示させるには、以下のように設定します。まず、Alt + F3を同時に押して、アプリケーションファインダーから work settings と入力すると workキューブのSettingsが開きます。つぎに上のタブの Advancedを選びます。右側の Window optionsのところの Allow UTF-8 window titles のドロップダウンメニューを開き、allowをクリックして選択します。右下のOKを押してSettingsを閉じます。workキューブがすでに起動している場合は、再起動してください。

workキューブのSettingsからUTF-8表示設定
workキューブのSettingsからUTF-8表示設定

このあとworkキューブのFirefoxを立ち上げ同じYahooニュースを見ると、無事に日本語がタイトルバーに表示されるようになりました。

ウィンドウタイトルの日本語表示に成功
ウィンドウタイトルの日本語表示に成功

workキューブ以外のキューブも上記と同様の方法でタイトルバーの日本語表示をオンにできますが、実はUTF-8の表示にはセキュリティ上の懸念点があります。

ウィンドウタイトルに日本語を表示するとdom0が攻撃されるおそれがある

Qubes OSではタイトルバーなどの色付きの外枠の部分は dom0が描画しているそうです。上のworkキューブのFirefoxでいうと、左右上下の青枠のところはdom0が表示を処理し、青枠に囲まれた内側部分はworkキューブが描画処理を担当しています。

タイトル部分の文字情報が workキューブなどの appキューブから dom0側に送られ、dom0にインストールされたフォントを用いてウィンドウタイトルが表示される仕組みになっているようです。しかしフォントのバグを利用した攻撃もあり得るのでセキュリティ的にはdom0が攻撃を受けるリスクもありえます。このような未知の脆弱性が心配な人は、workキューブでやったようなUTF-8表示設定はオフのままにしたほうがよいと思います。

また、すべての仮想マシンでタイトルバーにUTF-8を表示できるようにするオプションもあります。画面左上 - 歯車アイコン - Qubes Tools - Qubes Global Config を選んで、Qubes Global Config ウィンドウの中のGeneral Settings のところに UTF-8 window titlesのドロップダウンメニューがあるのでそこを allow にすればシステムのデフォルトとしてUTF-8がタイトルバーに使用できるようになります。しかし、たとえば攻撃者から送付されたPDFファイルやメールのタイトルなども開くと同時に自動的にdom0に表示されてしまうので、セキュリティ的には好ましくありません。このグローバルなUTF-8の表示オプションはオフにするのが無難でしょう。


  1. Fcitx5の環境変数をどこに書いたらいいのかは環境依存だとFcitx5の公式サイトには書いてありますFedoraの公式レポジトリに fcitx5-autostart というFcitx5を自動起動させるツールがありますが、これをインストールしてもFcitx5の自動起動には成功するが fcitx5-mozc の日本語入力が機能しませんでした。fcitx5-autostartは /etc/profile.d/ 以下に環境変数を書くのですが、 /etc/profile.d/ディレクトリや /etc/profileファイル に環境変数を書き込んだ場合 Qubes OSではうまく機能してくれないようです。何回か実験してみたところ /etc/environment/に環境変数を書くか environment.d系のディレクトリに環境変数を設定するファイルを置くとQubes OSではうまくいくようです。なお、ここでいう「environment.d 系のディレクトリ」は environment.d のmanページに出てくるディレクトリのことです。
  2. 上で説明したやりかたとは逆に、テンプレートの/etc/xdg/autostart/org.fcitx.Fcitx5.desktopを置いて原則としてすべてのキューブで自動起動するようにしつつ、自動起動してほしくないキューブの /home/user/.config/autostart/に同名の自動起動ファイル org.fcitx.Fcitx5.desktopを置いてその中身を以下のように変えるとそのキューブではFcitx5が自動起動しなくなります。Hidden キーについてはこちらを参照してください。
    [Desktop Entry]
    Name=Fcitx 5
    Type=Application
    Hidden=true

  3. Qubes OS R4.1のリリースノートには、"sys-firewall and sys-usb are now disposables by default"と書いてあります。