chromebook上のlinux開発環境に導入したVSCodeでのターミナルの日本語入力問題
2025年7月10日

chromebook上のlinux開発環境に導入したVSCodeでのターミナルの日本語入力問題

3,635文字(読了まで約10分)
headerimage

タイトルの事象にハマってしまいまして、解決に時間を要したため、対応策を書き留めておきます。 (claudeで生成したまとめです。アイキャッチ画像も生成してもらいましたが、なんか胡散臭い)

  • chromeOS バージョン 137.0.7151.123
  • linux開発環境 Debian GNU/Linux 12 (bookworm) カーネルバージョン 6.6.76-08024-gb30cb4a129c2
  • VSCode 1.87.1

  • ChromebookのLinux開発環境でVS Codeを使用時、統合ターミナルで日本語入力すると文字が2回繰り返し入力される
  • 例:「あ」と入力すると「ああ」と表示される
  • VS Codeのエディター部分や独立したターミナルアプリでは問題なし
  • VS Codeの統合ターミナルのみで発生

起動方法日本語入力の状態
ターミナルから code コマンド正常動作(Fcitx5起動済みの場合)
Chrome OSのアイコンから起動2重入力が発生
カスタムアイコン(修正版)正常動作

  1. Chrome OSとLinux環境の入力システムの競合

    • Chrome OS:システムレベルの日本語入力(ibus-mozcなど)
    • Linux環境:独立した入力メソッド(Fcitx5など)
    • VS Codeが両方のシステムからの入力を処理してしまう
  2. VS Code特有の問題

    • VS CodeはElectronベースで複雑な入力処理層を持つ
    • 統合ターミナルは追加の抽象化レイヤーを経由
    • 入力イベントが重複処理される
  3. 環境変数の違い

    • ターミナル起動:シェル設定(.bashrc)が読み込まれ、IME環境変数が設定される
    • アイコン起動:デスクトップ環境から直接起動し、シェル設定が読み込まれない

【正常な入力処理】
OS → Fcitx5 → VS Code → ターミナル → シェル
 
【問題のある入力処理】
Chrome OS入力システム → VS Code → ターミナル → シェル

                Fcitx5 → VS Code → ターミナル → シェル
                (重複処理)

1. 起動スクリプトの作成

cat > ~/start_vscode_jp.sh << 'EOF'
#!/bin/bash
 
echo "=== Chrome OS再起動後の完全初期化 ==="
 
# 既存のFcitx5プロセスを完全に終了(日本語入力が中途半端な状態になることがあるため)
pkill -f fcitx5 2>/dev/null
sleep 2
 
# D-Busキャッシュをクリア
rm -rf ~/.cache/fcitx5 2>/dev/null
 
# Fcitx5を完全に再起動
echo "Fcitx5を起動中..."
fcitx5 -d
sleep 5
 
# 入力メソッドの初期化を確認
echo "入力メソッドの確認中..."
fcitx5-remote -r 2>/dev/null || echo "リモート制御の初期化中..."
sleep 2
 
# プロセス確認
FCITX5_COUNT=$(pgrep fcitx5 | wc -l)
echo "Fcitx5プロセス数: $FCITX5_COUNT"
 
# 環境変数設定
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
 
# VS Code起動
echo "VS Code起動..."
code
EOF
 
chmod +x ~/start_vscode_jp.sh

2. カスタムデスクトップアイコンの作成

  • ~/.local/share/applications/xxxxx.desktopを作成すると、chromeosのアプリランチャに登録される。
  • VSCodeをインストールしたときに作成されるデフォルトの起動設定は、/usr/share/applications/code.desktopである。このとき~/.local/share/applications/code.desktopを作成すると、デフォルトの起動設定を上書きできる。
    • 上書きしない場合、起動アイコンが複数現れてしまうのと、実行中のアイコンがペンギンさんになってしまう問題が生じる
cat > ~/.local/share/applications/code.desktop << 'EOF'
[Desktop Entry]
Name=Visual Studio Code (Fixed)
Comment=Code Editing. Redefined. (with Japanese Input Fix)
GenericName=Text Editor
Exec=/home/ogrtks/start_vscode_with_fcitx5.sh
Icon=vscode
Type=Application
StartupNotify=true
StartupWMClass=Code
Categories=TextEditor;Development;IDE;
Keywords=vscode;
MimeType=text/plain;inode/directory;application/x-code-workspace;
Actions=new-empty-window;
EOF
 
# アプリケーションメニューの更新
update-desktop-database ~/.local/share/applications

3. 動作確認

  1. Chrome OSのランチャーから「Visual Studio Code (Fixed)」を選択
  2. VS Codeが起動し、統合ターミナルで日本語入力をテスト
  3. 文字の重複がないことを確認

✅ やること

  • カスタム起動スクリプトを使用する
  • Chrome OSのランチャーから修正版アイコンを使用する
  • pgrep fcitx5(-fオプションなし)でプロセス確認する

❌ やらないこと

  • 元のVS Codeアイコンは使用しない
  • pgrep -f fcitx5は使わない(スクリプト自体が検出される)
  • VS Codeの統合ターミナル設定での解決は期待しない

スクリプトが動作しない場合

# 実行権限の確認
ls -la ~/start_vscode_jp.sh
 
# 手動実行でテスト
~/start_vscode_jp.sh
 
# VS Codeのパス確認
which code

Fcitx5関連の問題

# Fcitx5の状態確認
fcitx5-diagnose
 
# 手動でFcitx5起動
fcitx5 -d
 
# プロセス確認
ps aux | grep fcitx

この問題はChrome OSのLinux環境とVS Codeの統合ターミナルの構造的な競合が原因です。解決には:

  1. 統一された入力システム(Fcitx5)を使用
  2. 適切な環境変数の設定
  3. カスタム起動スクリプトによる制御

が必要です。一度設定すれば、今後は修正版アイコンから起動するだけで問題なく日本語入力が使用できます。

- コメント -

    このサイトではcookieを利用して、サイト訪問者の識別に利用します。 cookieの利用に同意いただくことで、サイト訪問者は記事のいいね機能等をご利用いただけます。 なお、サイト運営者はアクセス統計としてcookieの情報を利用する場合があります。