#!/bin/bash
#260121 sfs
CONFIG_FILE="$HOME/.config/kanshi/config"


# Проверяем существование файла конфигурации
if [ ! -f "$CONFIG_FILE" ]; then
    touch "$CONFIG_FILE"
    echo "Error: Config file $CONFIG_FILE not found" >&2
    exit 1
fi

# Извлекаем активный профиль (первый, если их несколько)
ACTIVE_PROFILE=$(sed -n '/profile {/,/}/p' "$CONFIG_FILE" | grep -v '^[[:space:]]*#')
[ ! "$ACTIVE_PROFILE" ] && echo "ACTIVE_PROFILE empty" && exit 1
# Обрабатываем каждую строку с настройками выхода
echo "$ACTIVE_PROFILE" | grep -E '^[[:space:]]*output' | while read -r line; do
    # Удаляем лишние пробелы и разбираем строку
    cleaned_line=$(echo "$line" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
    
    # Извлекаем имя выхода
    output_name=$(echo "$cleaned_line" | awk '{print $2}')
    
    # Формируем базовую команду
    cmd="wlr-randr --output $output_name --on"
    
    # Добавляем параметры
    if [[ $cleaned_line == *"position"* ]]; then
        pos=$(echo "$cleaned_line" | grep -o 'position [^ ]*' | cut -d' ' -f2)
        cmd="$cmd --pos $pos"
    fi
    
    if [[ $cleaned_line == *"mode"* ]]; then
        mode=$(echo "$cleaned_line" | grep -o 'mode [^ ]*' | cut -d' ' -f2)
        # Удаляем .0000 из частоты обновления, если есть
        mode=$(echo "$mode" | sed 's/\.0000//')
        cmd="$cmd --custom-mode $mode"
    fi
    
    if [[ $cleaned_line == *"scale"* ]]; then
        scale=$(echo "$cleaned_line" | grep -o 'scale [^ ]*' | cut -d' ' -f2)
        cmd="$cmd --scale $scale"
    fi
    
    if [[ $cleaned_line == *"transform"* ]]; then
        transform=$(echo "$cleaned_line" | grep -o 'transform [^ ]*' | cut -d' ' -f2)
        cmd="$cmd --transform $transform"
    fi
    
    # Выполняем команду
    echo "Executing: $cmd"
    if ! eval "$cmd"; then
        echo "Error applying settings for output $output_name" >&2
    fi
done

echo "Configuration applied successfully"
