From a1ac41780fbd93b11d76d3d6fe8d2473698a4310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=85=8E=E9=A5=BC=E6=9E=9C=E5=AD=90=E5=8D=B7=E9=B2=A8?= =?UTF-8?q?=E9=B1=BC=E8=BE=A3=E6=A4=92?= Date: Thu, 15 Jan 2026 17:45:28 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(cursor=5Flinux=5Fid=5Fmodifier):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20TTY=20UI=20=E6=8E=A7=E5=88=B6=E5=92=8C?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=85=BC=E5=AE=B9=E6=80=A7=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 CURSOR_NO_TTY_UI 环境变量支持,显式禁用花哨的 TTY UI, 避免部分环境下出现乱码/花屏问题 - 实现 NO_COLOR 标准兼容,支持 CURSOR_NO_COLOR 环境变量禁用颜色输出 - 修复下载逻辑:当 curl 或 wget 不支持进度条参数时自动降级到基础参数 - 在终端窗口调整、清屏和 Logo 显示功能中添加 TTY UI 开关检查 ``` --- scripts/run/cursor_linux_id_modifier.sh | 103 +++++++++++++++++------- 1 file changed, 74 insertions(+), 29 deletions(-) diff --git a/scripts/run/cursor_linux_id_modifier.sh b/scripts/run/cursor_linux_id_modifier.sh index 151d76a..d7f03aa 100755 --- a/scripts/run/cursor_linux_id_modifier.sh +++ b/scripts/run/cursor_linux_id_modifier.sh @@ -19,11 +19,30 @@ YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color +# 显式禁用时,关闭 TTY UI(resize/clear/Logo),避免部分环境乱码/花屏 +if [ -n "${CURSOR_NO_TTY_UI:-}" ]; then + CURSOR_NO_TTY_UI=1 +fi + +# UI/颜色开关:遵循 NO_COLOR 标准,并支持 CURSOR_NO_TTY_UI(禁用花哨 TTY UI) +if [ -n "${NO_COLOR:-}" ] || [ -n "${CURSOR_NO_COLOR:-}" ] || [ -n "${CURSOR_NO_TTY_UI:-}" ]; then + RED='' + GREEN='' + YELLOW='' + BLUE='' + NC='' +fi + # 启动时尝试调整终端窗口大小为 120x40(列x行);不支持/失败时静默忽略,避免影响脚本主流程 try_resize_terminal_window() { local target_cols=120 local target_rows=40 + # 可通过 CURSOR_NO_TTY_UI 显式禁用所有终端控制输出(避免部分环境乱码/花屏) + if [ -n "${CURSOR_NO_TTY_UI:-}" ]; then + return 0 + fi + # 仅在交互终端中尝试,避免输出被重定向时出现乱码 if [ ! -t 1 ]; then return 0 @@ -1317,30 +1336,52 @@ EOF for url in "${hook_download_urls[@]}"; do index=$((index + 1)) log_info "⏳ [Hook] ($index/$total_urls) 当前下载节点: $url" + + # 兼容修复:部分 curl 版本可能不支持 --progress-bar,失败时回退为基础参数 if curl -fL --progress-bar "$url" -o "$hook_target_path"; then chown "$CURRENT_USER":"$CURRENT_GROUP" "$hook_target_path" 2>/dev/null || true log_info "✅ [Hook] 外置 Hook 已在线下载: $hook_target_path" hook_downloaded=true break - else - rm -f "$hook_target_path" - log_warn "⚠️ [Hook] 外置 Hook 下载失败: $url" fi + + rm -f "$hook_target_path" + log_warn "⚠️ [Hook] curl 下载失败,尝试回退参数重试: $url" + if curl -fL "$url" -o "$hook_target_path"; then + chown "$CURRENT_USER":"$CURRENT_GROUP" "$hook_target_path" 2>/dev/null || true + log_info "✅ [Hook] 外置 Hook 已在线下载: $hook_target_path" + hook_downloaded=true + break + fi + + rm -f "$hook_target_path" + log_warn "⚠️ [Hook] 外置 Hook 下载失败: $url" done elif command -v wget >/dev/null 2>&1; then local index=0 for url in "${hook_download_urls[@]}"; do index=$((index + 1)) log_info "⏳ [Hook] ($index/$total_urls) 当前下载节点: $url" + + # 兼容修复:BusyBox/精简版 wget 可能不支持 --progress=bar:force,失败时回退为基础参数 if wget --progress=bar:force -O "$hook_target_path" "$url"; then chown "$CURRENT_USER":"$CURRENT_GROUP" "$hook_target_path" 2>/dev/null || true log_info "✅ [Hook] 外置 Hook 已在线下载: $hook_target_path" hook_downloaded=true break - else - rm -f "$hook_target_path" - log_warn "⚠️ [Hook] 外置 Hook 下载失败: $url" fi + + rm -f "$hook_target_path" + log_warn "⚠️ [Hook] wget 下载失败,尝试回退参数重试: $url" + if wget -O "$hook_target_path" "$url"; then + chown "$CURRENT_USER":"$CURRENT_GROUP" "$hook_target_path" 2>/dev/null || true + log_info "✅ [Hook] 外置 Hook 已在线下载: $hook_target_path" + hook_downloaded=true + break + fi + + rm -f "$hook_target_path" + log_warn "⚠️ [Hook] 外置 Hook 下载失败: $url" done else log_warn "⚠️ [Hook] 未检测到 curl/wget,无法在线下载 Hook" @@ -2016,7 +2057,9 @@ cursor_initialize_cleanup() { # 主函数 main() { # 在显示菜单/流程说明前调整终端窗口大小;不支持则静默忽略 - try_resize_terminal_window + if [ -z "${CURSOR_NO_TTY_UI:-}" ]; then + try_resize_terminal_window + fi # 初始化日志文件 initialize_log @@ -2030,28 +2073,30 @@ main() { log_info "系统信息: $(uname -a)" log_cmd_output "lsb_release -a 2>/dev/null || cat /etc/*release 2>/dev/null || cat /etc/issue" "系统版本信息" - clear - # 显示 Logo - echo -e " - ██████╗██╗ ██╗██████╗ ███████╗ ██████╗ ██████╗ - ██╔════╝██║ ██║██╔══██╗██╔════╝██╔═══██╗██╔══██╗ - ██║ ██║ ██║██████╔╝███████╗██║ ██║██████╔╝ - ██║ ██║ ██║██╔══██╗╚════██║██║ ██║██╔══██╗ - ╚██████╗╚██████╔╝██║ ██║███████║╚██████╔╝██║ ██║ - ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝ - " - echo -e "${BLUE}=====================================================${NC}" - echo -e "${GREEN} Cursor Linux 启动与修改工具(免费) ${NC}" - echo -e "${YELLOW} 关注公众号【煎饼果子卷AI】 ${NC}" - echo -e "${YELLOW} 一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) ${NC}" - echo -e "${BLUE}=====================================================${NC}" - echo - echo -e "${YELLOW}⚡ [小小广告] Cursor官网正规成品号:Pro¥65 | Pro+¥265 | Ultra¥888 独享账号| ¥688 Team绝版次数号1000次+20刀额度 | 全部7天质保 | ,WeChat:JavaRookie666 ${NC}" - echo - echo -e "${YELLOW}[提示]${NC} 本工具旨在修改 Cursor 以解决可能的启动问题或设备限制。" - echo -e "${YELLOW}[提示]${NC} 它将优先修改 JS 文件,并可选择重置设备ID和禁用自动更新。" - echo -e "${YELLOW}[提示]${NC} 如果未找到 Cursor,将尝试从 '$APPIMAGE_SEARCH_DIR' 目录安装。" - echo + if [ -z "${CURSOR_NO_TTY_UI:-}" ]; then + clear + # 显示 Logo + echo -e " + ██████╗██╗ ██╗██████╗ ███████╗ ██████╗ ██████╗ + ██╔════╝██║ ██║██╔══██╗██╔════╝██╔═══██╗██╔══██╗ + ██║ ██║ ██║██████╔╝███████╗██║ ██║██████╔╝ + ██║ ██║ ██║██╔══██╗╚════██║██║ ██║██╔══██╗ + ╚██████╗╚██████╔╝██║ ██║███████║╚██████╔╝██║ ██║ + ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝ + " + echo -e "${BLUE}=====================================================${NC}" + echo -e "${GREEN} Cursor Linux 启动与修改工具(免费) ${NC}" + echo -e "${YELLOW} 关注公众号【煎饼果子卷AI】 ${NC}" + echo -e "${YELLOW} 一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) ${NC}" + echo -e "${BLUE}=====================================================${NC}" + echo + echo -e "${YELLOW}⚡ [小小广告] Cursor官网正规成品号:Pro¥65 | Pro+¥265 | Ultra¥888 独享账号| ¥688 Team绝版次数号1000次+20刀额度 | 全部7天质保 | ,WeChat:JavaRookie666 ${NC}" + echo + echo -e "${YELLOW}[提示]${NC} 本工具旨在修改 Cursor 以解决可能的启动问题或设备限制。" + echo -e "${YELLOW}[提示]${NC} 它将优先修改 JS 文件,并可选择重置设备ID和禁用自动更新。" + echo -e "${YELLOW}[提示]${NC} 如果未找到 Cursor,将尝试从 '$APPIMAGE_SEARCH_DIR' 目录安装。" + echo + fi # 查找 Cursor 路径 if ! find_cursor_path; then