#!/bin/bash

detect_session_protocol() {
    # 获取当前用户
    local current_user=$(who | awk '{print $1}' | sort -u | head -n1)

    # 方法1: 使用loginctl
    if command -v loginctl >/dev/null 2>&1; then
        local session_info=$(loginctl list-sessions --no-legend | grep "$current_user")
        local session_id=$(echo "$session_info" | awk '{print $1}')
        if [ -n "$session_id" ]; then
            local session_type=$(loginctl show-session "$session_id" -p Type --value 2>/dev/null)
            case "$session_type" in
                wayland) echo "Wayland" && return ;;
                x11) echo "X11" && return ;;
            esac
        fi
    fi

    # 方法2: 检查XDG_SESSION_TYPE
    if [ -n "$XDG_SESSION_TYPE" ]; then
        case "$XDG_SESSION_TYPE" in
            wayland) echo "Wayland" && return ;;
            x11) echo "X11" && return ;;
        esac
    fi

    # 方法3: 检查进程
    if pgrep -x "wayland" >/dev/null || pgrep -f "wayland" >/dev/null; then
        echo "Wayland" && return
    fi

    echo "Unknown"
}

detect_session_protocol
