#!/bin/bash

# Linux Mint 日本語環境 自動設定スクリプト (Fcitx5 + Mozc)
#
# ■ 概要:
# Linux Mintのインストール後に、日本語環境（ロケール、フォント、入力メソッド）を
# 自動でセットアップします。Fcitx5へのMozcの登録と自動起動設定も行います。
#
# ■ 使い方:
# 1. スクリプトに実行権限を付与します: chmod +x setup-mint-jp.sh
# 2. 管理者権限でスクリプトを実行します: sudo ./setup-mint-jp.sh

# --- 色付き出力用の設定 ---
C_RED='\033[0;31m'
C_GREEN='\033[0;32m'
C_YELLOW='\033[0;33m'
C_BLUE='\033[0;34m'
C_NC='\033[0m' # No Color

# --- スクリプト本体 ---

# rootユーザーで実行されているかチェック
if [ "$(id -u)" -ne 0 ]; then
  echo -e "${C_RED}エラー: このスクリプトは管理者権限（sudo）で実行する必要があります。${C_NC}"
  echo "コマンド例: sudo ./setup-mint-jp.sh"
  exit 1
fi

# sudoを実行した元のユーザーとそのホームディレクトリを取得
if [ -z "$SUDO_USER" ]; then
    echo -e "${C_RED}エラー: このスクリリプトは 'sudo ./script.sh' のように実行してください。${C_NC}"
    echo "rootで直接ログインした状態では実行できません。"
    exit 1
fi
TARGET_USER="$SUDO_USER"
USER_HOME=$(getent passwd "$TARGET_USER" | cut -d: -f6)

# ユーザー情報が取得できなかった場合のエラー処理
if [ -z "$USER_HOME" ]; then
    echo -e "${C_RED}エラー: ユーザー '$TARGET_USER' のホームディレクトリを取得できませんでした。${C_NC}"
    exit 1
fi

echo -e "${C_BLUE}--- Linux Mint 日本語環境セットアップを開始します (対象ユーザー: $TARGET_USER) ---${C_NC}"

# 1. システムのアップデート
echo -e "\n${C_YELLOW}[1/6] システムを最新の状態に更新します...${C_NC}"
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get full-upgrade -y

# 2. ロケールの設定
echo -e "\n${C_YELLOW}[2/6] 日本語ロケールを設定します...${C_NC}"
sed -i -e 's/^# \(ja_JP.UTF-8\)/\1/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
echo "ロケールの設定が完了しました。"

# 3. 日本語関連パッケージのインストール
echo -e "\n${C_YELLOW}[3/6] 日本語フォントと入力メソッド (Fcitx5+Mozc) をインストールします...${C_NC}"
apt-get install -y \
  fonts-noto-cjk \
  fcitx5 \
  fcitx5-mozc \
  fcitx5-configtool \
  im-config

# 4. Fcitx5をデフォルトに設定（システム全体）
echo -e "\n${C_YELLOW}[4/6] Fcitx5 を有効にするためのシステム設定を行います...${C_NC}"
im-config -n fcitx5
echo "デフォルトの入力メソッドを Fcitx5 に設定しました。"
ENV_FILE="/etc/environment"
CONFIG_LINES=(
  "GTK_IM_MODULE=fcitx"
  "QT_IM_MODULE=fcitx"
  "XMODIFIERS=@im=fcitx"
)
for line in "${CONFIG_LINES[@]}"; do
  grep -qxF "$line" "$ENV_FILE" || echo "$line" >> "$ENV_FILE"
done
echo "/etc/environment に環境変数を設定しました。"

# 5. Fcitx5の入力メソッドにMozcを追加（ユーザー設定）
echo -e "\n${C_YELLOW}[5/6] Fcitx5の入力メソッドにMozcを追加します (ユーザー: $TARGET_USER)...${C_NC}"

# 実行中のFcitx5が設定を上書きするのを防ぐため、一時的にプロセスを停止
echo "既存のFcitx5プロセスを停止します..."
sudo -u "$TARGET_USER" killall fcitx5 2>/dev/null || true

CONFIG_DIR="$USER_HOME/.config/fcitx5"
PROFILE_FILE="$CONFIG_DIR/profile"

# Fcitx5の設定ディレクトリをユーザー権限で作成
sudo -u "$TARGET_USER" mkdir -p "$CONFIG_DIR"

# Fcitx5のプロファイルファイルを、Mozcを含む正しい設定で作成/上書きする
sudo -u "$TARGET_USER" tee "$PROFILE_FILE" > /dev/null << EOF
[Groups/0]
# Group Name
Name=デフォルト
# Layout
Default Layout=jp
# Default Input Method
DefaultIM=mozc

[Groups/0/Items/0]
# Name
Name=keyboard-jp
# Layout
Layout=

[Groups/0/Items/1]
# Name
Name=mozc
# Layout
Layout=

[GroupOrder]
0=デフォルト
EOF

echo "Fcitx5のプロファイル設定が完了しました。"


# 6. Fcitx5の自動起動を設定（デスクトップ環境汎用版）
echo -e "\n${C_YELLOW}[6/6] Fcitx5の自動起動を設定します...${C_NC}"
AUTOSTART_DIR="$USER_HOME/.config/autostart"
AUTOSTART_FILE="$AUTOSTART_DIR/fcitx5-autostart.desktop"

# ディレクトリをユーザー権限で作成
sudo -u "$TARGET_USER" mkdir -p "$AUTOSTART_DIR"

echo "自動起動設定ファイルを作成します: $AUTOSTART_FILE"
# 自動起動設定ファイルを tee を使ってユーザー権限で作成
sudo -u "$TARGET_USER" tee "$AUTOSTART_FILE" > /dev/null << EOF
[Desktop Entry]
Name=Fcitx 5
Comment=Start Fcitx 5 input method framework
Icon=fcitx
Exec=fcitx5 -d
Type=Application
StartupNotify=false
Categories=System;Utility;
X-GNOME-Autostart-enabled=true
EOF

# ファイルのパーミッションを設定
sudo -u "$TARGET_USER" chmod 644 "$AUTOSTART_FILE"
echo "Fcitx5の自動起動設定が完了しました。"

# --- 完了メッセージ ---
echo -e "\n${C_GREEN}=====================================================${C_NC}"
echo -e "${C_GREEN}      日本語環境のセットアップが完了しました！       ${C_NC}"
echo -e "${C_GREEN}=====================================================${C_NC}"
echo -e "\n設定を完全に有効にするために、${C_YELLOW}必ずシステムを再起動してください。${C_NC}"
echo -e "\n再起動後、テキストエディタなどを開いて、${C_YELLOW}「半角/全角」キー${C_NC}を押し、"
echo "日本語入力ができるかお試しください。"

exit 0