#!/bin/bash

# 要禁用的启动项列表（只写文件名，不带路径）
disable_list=(
    "at-spi-dbus-bus.desktop"
    "geoclue-demo-agent.desktop"
    "gnome-initial-setup-copy-worker.desktop"
    "gnome-initial-setup-first-login.desktop"
    "orca-autostart.desktop"
    "org.gnome.Evolution-alarm-notify.desktop"
    "org.gnome.SettingsDaemon.A11ySettings.desktop"
    "org.gnome.SettingsDaemon.DiskUtilityNotify.desktop"
    "org.gnome.SettingsDaemon.Housekeeping.desktop"
    "org.gnome.SettingsDaemon.PrintNotifications.desktop"
    "org.gnome.SettingsDaemon.Sharing.desktop"
    "org.gnome.SettingsDaemon.Smartcard.desktop"
    "org.gnome.SettingsDaemon.UsbProtection.desktop"
    "org.gnome.SettingsDaemon.Wacom.desktop"
    "org.gnome.SettingsDaemon.Wwan.desktop"
    "snap-userd-autostart.desktop"
    "solaar.desktop"
    "spice-vdagent.desktop"
    "tracker-miner-fs-3.desktop"
    "ubuntu-advantage-notification.desktop"
    "ubuntu-report-on-upgrade.desktop"
    "update-notifier.desktop"
    "xapp-sn-watcher.desktop"
)

# 源目录和目标目录
src_dir="/etc/xdg/autostart"
dst_dir="$HOME/.config/autostart"

# 确保目标目录存在
mkdir -p "$dst_dir"

# 遍历列表，处理每个文件
for file in "${disable_list[@]}"; do
    src_file="$src_dir/$file"
    dst_file="$dst_dir/$file"

    # 检查源文件是否存在
    if [ ! -f "$src_file" ]; then
        echo "警告：源文件 $src_file 不存在，跳过"
        continue
    fi

    # 复制文件到用户目录（如果目标文件已存在则覆盖，确保我们操作的是最新版本）
    cp "$src_file" "$dst_file"
    echo "已复制 $file 到 $dst_dir"

    # 检查目标文件中是否已经有 Hidden= 行
    if grep -q "^Hidden=" "$dst_file"; then
        # 如果存在，将其值改为 true（使用 sed 替换整行）
        sed -i 's/^Hidden=.*/Hidden=true/' "$dst_file"
        echo "已更新 $file 中的 Hidden=true"
    else
        # 如果不存在，在文件末尾添加
        echo "Hidden=true" >> "$dst_file"
        echo "已向 $file 添加 Hidden=true"
    fi
done

echo "所有指定启动项已禁用。请注销或重启后生效。"
