#!/bin/bash

# =========================================================
# НАСТРОЙКА
# =========================================================
MY_USER="alt"
# =========================================================

if [ "$EUID" -ne 0 ]; then
    echo "Ошибка: Запусти через sudo!"
    exit 1
fi

# 1. Настройка Serial Console в GRUB[cite: 1]
echo "--- [1/3] Настройка GRUB (ttyS0) ---"
if ! grep -q "console=ttyS0" /etc/default/grub; then
    # Добавляем параметры консоли в конфиг[cite: 1]
    sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"/GRUB_CMDLINE_LINUX_DEFAULT="\1 console=tty0 console=ttyS0,115200"/' /etc/default/grub
    
    # Обновляем загрузчик в зависимости от дистрибутива[cite: 1]
    if command -v update-grub &> /dev/null; then
        update-grub
    elif [ -f /boot/grub2/grub.cfg ]; then
        grub2-mkconfig -o /boot/grub2/grub.cfg
    elif [ -f /boot/efi/EFI/fedora/grub.cfg ]; then
        grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    fi
fi

# 2. Настройка автологина через systemd[cite: 1]
echo "--- [2/3] Настройка автологина ($MY_USER) ---"
mkdir -p /etc/systemd/system/serial-getty@ttyS0.service.d
cat > /etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf <<GETTY
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin $MY_USER --keep-baud 115200,57600,38400,9600 %I \$TERM
GETTY

systemctl daemon-reload
systemctl enable --now serial-getty@ttyS0.service 2>/dev/null

# 3. Функция изменения размера (res) в .bashrc[cite: 1]
echo "--- [3/3] Внедрение функции res ---"
USER_HOME=$(eval echo "~$MY_USER")

for HOME_DIR in "$USER_HOME" "/root"; do
    [ ! -d "$HOME_DIR" ] && continue
    
    # Очистка старых маркеров, если они были[cite: 1]
    sed -i '/# --- SERIAL_CONFIG_START ---/,/# --- SERIAL_CONFIG_END ---/d' "$HOME_DIR/.bashrc"

    cat <<'BASHRC_BLOCK' >> "$HOME_DIR/.bashrc"
# --- SERIAL_CONFIG_START ---
# Установка типа терминала для поддержки 256 цветов[cite: 1]
export TERM=xterm-256color

# Функция для запроса размеров окна у терминала (xterm.js)[cite: 1]
res() {
    local old rows cols
    old=$(stty -g)
    stty raw -echo min 0 time 5
    printf '\0337\033[r\033[999;999H\033[6n\0338' > /dev/tty
    IFS='[;R' read -r _ rows cols _ < /dev/tty
    stty "$old"
    stty cols "$cols" rows "$rows"
}

# Автоматический вызов при подключении через Serial порт
[[ $(tty) == *ttyS0* ]] && res
# --- SERIAL_CONFIG_END ---
BASHRC_BLOCK

    # Исправление прав на файл[cite: 1]
    CURRENT_OWNER=$(basename "$HOME_DIR")
    if [ "$CURRENT_OWNER" == "root" ]; then
        chown root:root "$HOME_DIR/.bashrc"
    else
        chown "$MY_USER:$MY_USER" "$HOME_DIR/.bashrc"
    fi
done

echo ""
echo "✅ Всё готово. Перезагрузи систему для применения настроек GRUB."