You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
5.0 KiB
164 lines
5.0 KiB
#!/bin/bash
|
|
|
|
# 版本号
|
|
VERSION="1.0.1"
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
CYAN='\033[0;36m'
|
|
NC='\033[0m'
|
|
|
|
# 语言检测
|
|
detect_language() {
|
|
local lang=$(locale | grep "LANG=" | cut -d= -f2)
|
|
if [[ $lang == *"zh"* ]]; then
|
|
echo "cn"
|
|
else
|
|
echo "en"
|
|
fi
|
|
}
|
|
|
|
LANG=$(detect_language)
|
|
|
|
# 多语言文本
|
|
if [ "$LANG" == "cn" ]; then
|
|
SUCCESS_MSG="[√] 配置文件已成功更新!"
|
|
RESTART_MSG="[!] 请手动重启 Cursor 以使更新生效"
|
|
READING_CONFIG="正在读取配置文件..."
|
|
GENERATING_IDS="正在生成新的标识符..."
|
|
CHECKING_PROCESSES="正在检查运行中的 Cursor 实例..."
|
|
CLOSING_PROCESSES="正在关闭 Cursor 实例..."
|
|
PROCESSES_CLOSED="所有 Cursor 实例已关闭"
|
|
PLEASE_WAIT="请稍候..."
|
|
else
|
|
SUCCESS_MSG="[√] Configuration file updated successfully!"
|
|
RESTART_MSG="[!] Please restart Cursor manually for changes to take effect"
|
|
READING_CONFIG="Reading configuration file..."
|
|
GENERATING_IDS="Generating new identifiers..."
|
|
CHECKING_PROCESSES="Checking for running Cursor instances..."
|
|
CLOSING_PROCESSES="Closing Cursor instances..."
|
|
PROCESSES_CLOSED="All Cursor instances have been closed"
|
|
PLEASE_WAIT="Please wait..."
|
|
fi
|
|
|
|
# 生成随机ID
|
|
generate_machine_id() {
|
|
openssl rand -hex 32
|
|
}
|
|
|
|
generate_dev_device_id() {
|
|
printf '%04x%04x-%04x-%04x-%04x-%04x%04x%04x' \
|
|
$RANDOM $RANDOM \
|
|
$RANDOM \
|
|
$(($RANDOM & 0x0fff | 0x4000)) \
|
|
$(($RANDOM & 0x3fff | 0x8000)) \
|
|
$RANDOM $RANDOM $RANDOM
|
|
}
|
|
|
|
# 获取配置文件路径
|
|
get_config_path() {
|
|
local username=$1
|
|
case "$(uname)" in
|
|
"Darwin")
|
|
echo "/Users/$username/Library/Application Support/Cursor/User/globalStorage/storage.json"
|
|
;;
|
|
"Linux")
|
|
echo "/home/$username/.config/Cursor/User/globalStorage/storage.json"
|
|
;;
|
|
*)
|
|
echo "Unsupported operating system"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# 检查Cursor进程
|
|
check_cursor_running() {
|
|
pgrep -f "Cursor|AppRun" >/dev/null
|
|
}
|
|
|
|
# 关闭Cursor进程
|
|
kill_cursor_processes() {
|
|
echo -e "${CYAN}$CLOSING_PROCESSES${NC}"
|
|
pkill -f "Cursor|AppRun"
|
|
sleep 2
|
|
if check_cursor_running; then
|
|
pkill -9 -f "Cursor|AppRun"
|
|
fi
|
|
echo -e "${GREEN}$PROCESSES_CLOSED${NC}"
|
|
}
|
|
|
|
# 打印赛博朋克风格banner
|
|
print_banner() {
|
|
echo -e "${CYAN}"
|
|
echo ' ██████╗██╗ ██╗██████╗ ███████╗ ██████╗ ██████╗ '
|
|
echo ' ██╔════╝██║ ██║██╔══██╗██╔════╝██╔═══██╗██╔══██╗'
|
|
echo ' ██║ ██║ ██║██████╔╝███████╗██║ ██║██████╔╝'
|
|
echo ' ██║ ██║ ██║██╔══██╗╚════██║██║ ██║██╔══██╗'
|
|
echo ' ╚██████╗╚██████╔╝██║ ██║███████║╚██████╔╝██║ ██║'
|
|
echo ' ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝'
|
|
echo -e "${NC}"
|
|
echo -e "${YELLOW}\t\t>> Cursor ID Modifier v1.0 <<${NC}"
|
|
echo -e "${CYAN}\t\t [ By Pancake Fruit Rolled Shark Chili ]${NC}"
|
|
echo
|
|
}
|
|
|
|
# 主函数
|
|
main() {
|
|
# 检查root权限
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "Please run as root"
|
|
exit 1
|
|
fi
|
|
|
|
# 获取实际用户名
|
|
REAL_USER=${SUDO_USER:-$USER}
|
|
|
|
clear
|
|
print_banner
|
|
|
|
# 确保Cursor已关闭
|
|
if check_cursor_running; then
|
|
kill_cursor_processes
|
|
fi
|
|
|
|
CONFIG_PATH=$(get_config_path "$REAL_USER")
|
|
echo -e "${CYAN}$READING_CONFIG${NC}"
|
|
|
|
# 生成新配置
|
|
echo -e "${CYAN}$GENERATING_IDS${NC}"
|
|
NEW_CONFIG=$(cat <<EOF
|
|
{
|
|
"telemetry.macMachineId": "$(generate_machine_id)",
|
|
"telemetry.machineId": "$(generate_machine_id)",
|
|
"telemetry.devDeviceId": "$(generate_dev_device_id)",
|
|
"telemetry.sqmId": "$(generate_machine_id)",
|
|
"lastModified": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
|
|
"version": "$VERSION"
|
|
}
|
|
EOF
|
|
)
|
|
|
|
# 创建目录(如果不存在)
|
|
mkdir -p "$(dirname "$CONFIG_PATH")"
|
|
|
|
# 保存配置
|
|
echo "$NEW_CONFIG" > "$CONFIG_PATH"
|
|
chown "$REAL_USER" "$CONFIG_PATH"
|
|
chmod 644 "$CONFIG_PATH"
|
|
|
|
# 显示成功消息
|
|
echo -e "\n${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo -e "${GREEN}$SUCCESS_MSG${NC}"
|
|
echo -e "${YELLOW}$RESTART_MSG${NC}"
|
|
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
|
|
echo -e "\n���置文件位置/Config file location:"
|
|
echo -e "${CYAN}$CONFIG_PATH${NC}\n"
|
|
|
|
read -p "Press Enter to exit..."
|
|
}
|
|
|
|
main "$@"
|