_portprotonqt_completions() {
    local cur prev opts long_opts flags
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    # All available options
    opts="--fullscreen --resolution --debug-level --add-steam-compat-tool --reinstall-steam-compat-tool --remove-steam-compat-tool --clear-cache --reset-settings --ppqtos --silent --restore-prefix --create-backup --help -h"
    long_opts="--fullscreen --resolution --debug-level --add-steam-compat-tool --reinstall-steam-compat-tool --remove-steam-compat-tool --clear-cache --reset-settings --ppqtos --silent --restore-prefix --create-backup --help"
    
    # Values for options with arguments
    local debug_levels="ALL DEBUG INFO WARNING ERROR CRITICAL"
    local resolutions="1920x1080 1280x720 2560x1440 3840x2160"

    # Handle option arguments
    case "${prev}" in
        --debug-level)
            COMPREPLY=( $(compgen -W "${debug_levels}" -- "${cur}") )
            return 0
            ;;
        --resolution)
            COMPREPLY=( $(compgen -W "${resolutions}" -- "${cur}") )
            return 0
            ;;
        --restore-prefix)
            COMPREPLY=( $(compgen -f -X '!*.ppack' -- "${cur}") )
            return 0
            ;;
    esac

    # At command start, complete only long options to allow "--" prefix completion
    if [[ -z "${cur}" ]]; then
        COMPREPLY=( $(compgen -W "${long_opts}" -- "${cur}") )
        return 0
    fi

    # Complete flags when option prefix is used
    if [[ "${cur}" == -* ]]; then
        COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
        return 0
    fi

    return 0
}

complete -F _portprotonqt_completions portprotonqt
