Browse Source
feat: Add alternative script installation methods for Linux/macOS and Windows
feat: Add alternative script installation methods for Linux/macOS and Windows
- Introduced platform-specific scripts (`cursor_modifier.sh` for Linux/macOS and `cursor_modifier.bat` for Windows) to streamline the installation process. - Scripts automate system language detection, close running Cursor instances, generate new IDs, and update configuration files with a user-friendly interface. - Updated README.md to include detailed instructions for using the new scripts, enhancing user experience and accessibility. These changes improve the installation process by providing users with flexible options for setup across different operating systems.pull/30/head
3 changed files with 357 additions and 0 deletions
-
52README.md
-
141cursor_modifier.bat
-
164cursor_modifier.sh
@ -0,0 +1,141 @@ |
|||
@echo off |
|||
chcp 65001 >nul |
|||
setlocal EnableDelayedExpansion |
|||
|
|||
:: ็ๆฌๅท |
|||
set "VERSION=1.0.1" |
|||
|
|||
:: ๆฃๆต่ฏญ่จ |
|||
for /f "tokens=2 delims==" %%a in ('wmic os get OSLanguage /value') do set OSLanguage=%%a |
|||
if "%OSLanguage%"=="2052" ( |
|||
set "LANG=cn" |
|||
) else ( |
|||
set "LANG=en" |
|||
) |
|||
|
|||
:: ๅค่ฏญ่จๆๆฌ |
|||
if "%LANG%"=="cn" ( |
|||
set "SUCCESS_MSG=[โ] ้
็ฝฎๆไปถๅทฒๆๅๆดๆฐ๏ผ" |
|||
set "RESTART_MSG=[!] ่ฏทๆๅจ้ๅฏ Cursor ไปฅไฝฟๆดๆฐ็ๆ" |
|||
set "READING_CONFIG=ๆญฃๅจ่ฏปๅ้
็ฝฎๆไปถ..." |
|||
set "GENERATING_IDS=ๆญฃๅจ็ๆๆฐ็ๆ ่ฏ็ฌฆ..." |
|||
set "CHECKING_PROCESSES=ๆญฃๅจๆฃๆฅ่ฟ่กไธญ็ Cursor ๅฎไพ..." |
|||
set "CLOSING_PROCESSES=ๆญฃๅจๅ
ณ้ญ Cursor ๅฎไพ..." |
|||
set "PROCESSES_CLOSED=ๆๆ Cursor ๅฎไพๅทฒๅ
ณ้ญ" |
|||
set "PLEASE_WAIT=่ฏท็จๅ..." |
|||
) else ( |
|||
set "SUCCESS_MSG=[โ] Configuration file updated successfully!" |
|||
set "RESTART_MSG=[!] Please restart Cursor manually for changes to take effect" |
|||
set "READING_CONFIG=Reading configuration file..." |
|||
set "GENERATING_IDS=Generating new identifiers..." |
|||
set "CHECKING_PROCESSES=Checking for running Cursor instances..." |
|||
set "CLOSING_PROCESSES=Closing Cursor instances..." |
|||
set "PROCESSES_CLOSED=All Cursor instances have been closed" |
|||
set "PLEASE_WAIT=Please wait..." |
|||
) |
|||
|
|||
:: ๆฃๆฅ็ฎก็ๅๆ้ |
|||
net session >nul 2>&1 |
|||
if %errorLevel% neq 0 ( |
|||
echo ่ฏทไปฅ็ฎก็ๅ่บซไปฝ่ฟ่กๆญค่ๆฌ |
|||
echo Please run this script as administrator |
|||
pause |
|||
exit /b 1 |
|||
) |
|||
|
|||
:: ็ๆ้ๆบID |
|||
:generateId |
|||
set "id=" |
|||
for /L %%i in (1,1,32) do ( |
|||
set /a "r=!random! %% 16" |
|||
set "hex=0123456789abcdef" |
|||
for %%j in (!r!) do set "id=!id!!hex:~%%j,1!" |
|||
) |
|||
exit /b |
|||
|
|||
:: ็ๆUUID |
|||
:generateUUID |
|||
set "uuid=" |
|||
for /L %%i in (1,1,32) do ( |
|||
set /a "r=!random! %% 16" |
|||
set "hex=0123456789abcdef" |
|||
for %%j in (!r!) do set "uuid=!uuid!!hex:~%%j,1!" |
|||
if %%i==8 set "uuid=!uuid!-" |
|||
if %%i==12 set "uuid=!uuid!-" |
|||
if %%i==16 set "uuid=!uuid!-" |
|||
if %%i==20 set "uuid=!uuid!-" |
|||
) |
|||
exit /b |
|||
|
|||
:: ไธป็จๅบ |
|||
:main |
|||
cls |
|||
call :printBanner |
|||
|
|||
echo %CHECKING_PROCESSES% |
|||
tasklist | find /i "Cursor.exe" >nul |
|||
if %errorLevel% equ 0 ( |
|||
echo %CLOSING_PROCESSES% |
|||
taskkill /F /IM "Cursor.exe" >nul 2>&1 |
|||
timeout /t 2 >nul |
|||
echo %PROCESSES_CLOSED% |
|||
) |
|||
|
|||
set "CONFIG_PATH=%APPDATA%\Cursor\User\globalStorage\storage.json" |
|||
echo %READING_CONFIG% |
|||
|
|||
echo %GENERATING_IDS% |
|||
call :generateId |
|||
set "machineId=!id!" |
|||
call :generateId |
|||
set "macMachineId=!id!" |
|||
call :generateUUID |
|||
set "devDeviceId=!uuid!" |
|||
call :generateId |
|||
set "sqmId=!id!" |
|||
|
|||
:: ๅๅปบ้
็ฝฎ็ฎๅฝ |
|||
if not exist "%APPDATA%\Cursor\User\globalStorage" ( |
|||
mkdir "%APPDATA%\Cursor\User\globalStorage" |
|||
) |
|||
|
|||
:: ็ๆ้
็ฝฎๆไปถ |
|||
( |
|||
echo { |
|||
echo "telemetry.macMachineId": "%macMachineId%", |
|||
echo "telemetry.machineId": "%machineId%", |
|||
echo "telemetry.devDeviceId": "%devDeviceId%", |
|||
echo "telemetry.sqmId": "%sqmId%", |
|||
echo "lastModified": "%date:~10,4%-%date:~4,2%-%date:~7,2%T%time:~0,2%:%time:~3,2%:%time:~6,2%Z", |
|||
echo "version": "%VERSION%" |
|||
echo } |
|||
) > "%CONFIG_PATH%" |
|||
|
|||
echo. |
|||
echo โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
|||
echo %SUCCESS_MSG% |
|||
echo %RESTART_MSG% |
|||
echo โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
|||
echo. |
|||
echo Config file location: |
|||
echo %CONFIG_PATH% |
|||
echo. |
|||
pause |
|||
exit /b |
|||
|
|||
:: ๆๅฐbanner |
|||
:printBanner |
|||
echo. |
|||
echo โโโโโโโโโโ โโโโโโโโโโ โโโโโโโโ โโโโโโโ โโโโโโโ |
|||
echo โโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโ |
|||
echo โโโ โโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโ |
|||
echo โโโ โโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโ |
|||
echo โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โโโ |
|||
echo โโโโโโโ โโโโโโโ โโโ โโโโโโโโโโโ โโโโโโโ โโโ โโโ |
|||
echo. |
|||
echo ^>^> Cursor ID Modifier v1.0 ^<^< |
|||
echo [ By Pancake Fruit Rolled Shark Chili ] |
|||
echo. |
|||
exit /b |
|||
|
|||
endlocal |
@ -0,0 +1,164 @@ |
|||
#!/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 "$@" |
Write
Preview
Loadingโฆ
Cancel
Save
Reference in new issue