#!/bin/bash

# 系统通知脚本
# 在银河麒麟系统下发送系统通知
# 支持通过命令行参数设置通知标题和内容

export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -u)/bus"
export DISPLAY=:0

# 显示使用帮助
show_help() {
    echo "使用方法: $0 [选项]"
    echo ""
    echo "选项:"
    echo "  -t, --title <标题>      设置通知标题"
    echo "  -m, --message <内容>    设置通知内容"
    echo "  -h, --help              显示帮助信息"
    echo ""
    echo "示例:"
    echo "  $0 --title "提醒" --message "会议开始了""
}

# 解析命令行参数
parse_args() {
    while [[ $# -gt 0 ]]; do
        case $1 in
            -t|--title)
                NOTIFICATION_TITLE="$2"
                shift 2
                ;;
            -m|--message)
                NOTIFICATION_MESSAGE="$2"
                shift 2
                ;;
            -h|--help)
                show_help
                exit 0
                ;;
            *)
                echo "未知参数: $1"
                show_help
                exit 1
                ;;
        esac
    done
}

# 验证参数
validate_args() {
    if [ -z "$NOTIFICATION_TITLE" ]; then
        echo "错误: 必须设置通知标题"
        show_help
        exit 1
    fi
    
    if [ -z "$NOTIFICATION_MESSAGE" ]; then
        echo "错误: 必须设置通知内容"
        show_help
        exit 1
    fi
}

# 发送系统通知
send_notification() {
    echo "发送系统通知:"
    echo "  标题: $NOTIFICATION_TITLE"
    echo "  内容: $NOTIFICATION_MESSAGE"
    
    # 尝试使用notify-send发送通知
    notify-send "$NOTIFICATION_TITLE" "$NOTIFICATION_MESSAGE" --app-name="kbot"
    
    if [ $? -eq 0 ]; then
        echo "系统通知发送成功"
    else
        echo "系统通知发送失败，尝试使用dbus-send方法"
        
        # 尝试使用dbus-send方法发送通知
        dbus-send --session --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.Notify string:"kbot" uint32:0 string:"" string:"$NOTIFICATION_TITLE" string:"$NOTIFICATION_MESSAGE" array:string:"" dict:string:uint32:""
        
        if [ $? -eq 0 ]; then
            echo "系统通知发送成功"
        else
            echo "系统通知发送失败"
            exit 1
        fi
    fi
}

# 主函数
main() {
    # 解析参数
    parse_args "$@"
    
    # 验证参数
    validate_args
    
    # 发送通知
    send_notification
}

# 执行主函数
if [ "$0" = "$BASH_SOURCE" ]; then
    main "$@"
fi