mirror of
https://github.com/nad4-su/setup_mac.git
synced 2026-08-12 23:13:24 +09:00
Add VSCode, Claude Code CLI auto-install and fix bugs
- Add VSCode (brew cask), Node.js, Claude Code CLI (npm) installation - Add VSCode Claude extension auto-install with code CLI fallback - Fix save_configs.sh missing RECTANGLE_SETTINGS_DIR variable - Fix Rectangle config: support both plist and JSON (RectangleConfig.json) - Fix ZSH plugin paths for Intel Mac using $(brew --prefix) - Fix iTerm2 Dynamic Profile JSON assembly (safe wrapping) - Fix GUID extraction regex for flexible whitespace - Fix set -e compatibility for plutil failure handling - Add mkdir -p for Stats settings dir in save_configs.sh - Add vim swap file patterns to .gitignore - Update README.md with Claude Code docs, checklist, troubleshooting - Simplify iTerm2 launch logic Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
443d65d912
commit
51cde642d9
@@ -14,6 +14,9 @@
|
|||||||
# Editor
|
# Editor
|
||||||
.vscode/
|
.vscode/
|
||||||
.idea/
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
||||||
# Personal configs (if needed)
|
# Personal configs (if needed)
|
||||||
# personal-settings/
|
# personal-settings/
|
||||||
|
|||||||
@@ -4,19 +4,21 @@ Mac 개발 환경을 자동으로 설정하는 스크립트입니다.
|
|||||||
|
|
||||||
## 📦 설치 항목
|
## 📦 설치 항목
|
||||||
|
|
||||||
|
### 개발 도구
|
||||||
|
- Homebrew
|
||||||
|
- Node.js
|
||||||
|
- iTerm2
|
||||||
|
- Oh My Zsh (agnoster 멀티라인 테마)
|
||||||
|
- zsh-syntax-highlighting / zsh-autosuggestions
|
||||||
|
- **VSCode** + Claude 확장
|
||||||
|
- **Claude Code CLI**
|
||||||
|
- Cursor (에디터)
|
||||||
|
|
||||||
### 유틸리티
|
### 유틸리티
|
||||||
- **Stats**: 시스템 모니터 (CPU, Memory, Network 등)
|
- **Stats**: 시스템 모니터 (CPU, Memory, Network 등)
|
||||||
- **Rectangle**: 윈도우 관리 (무료 Magnet 대안)
|
- **Rectangle**: 윈도우 관리 (무료 Magnet 대안)
|
||||||
- **AppCleaner**: 앱 완전 삭제 도구
|
- **AppCleaner**: 앱 완전 삭제 도구
|
||||||
|
|
||||||
### 개발 도구
|
|
||||||
- Homebrew
|
|
||||||
- iTerm2
|
|
||||||
- Oh My Zsh
|
|
||||||
- zsh-syntax-highlighting
|
|
||||||
- zsh-autosuggestions
|
|
||||||
- Cursor (에디터)
|
|
||||||
|
|
||||||
### 폰트
|
### 폰트
|
||||||
- D2Coding
|
- D2Coding
|
||||||
- D2Coding Nerd Font
|
- D2Coding Nerd Font
|
||||||
@@ -62,13 +64,14 @@ chmod +x setup_mac.sh
|
|||||||
setup_mac/
|
setup_mac/
|
||||||
├── setup_mac.sh # 메인 설치 스크립트
|
├── setup_mac.sh # 메인 설치 스크립트
|
||||||
├── save_configs.sh # 설정 저장 스크립트
|
├── save_configs.sh # 설정 저장 스크립트
|
||||||
|
├── .gitignore
|
||||||
├── iterm2-settings/
|
├── iterm2-settings/
|
||||||
│ └── profile.json # iTerm2 프로파일
|
│ └── profile.json # iTerm2 프로파일
|
||||||
├── stats-settings/
|
├── stats-settings/
|
||||||
│ └── Stats.plist # Stats 설정
|
│ └── Stats.plist # Stats 설정
|
||||||
├── rectangle-settings/
|
├── rectangle-settings/
|
||||||
│ └── com.knollsoft.Rectangle.plist
|
│ └── RectangleConfig.json # Rectangle 설정
|
||||||
└── README.md # 이 파일
|
└── README.md
|
||||||
```
|
```
|
||||||
|
|
||||||
## ⚙️ 설정 내용
|
## ⚙️ 설정 내용
|
||||||
@@ -84,6 +87,11 @@ setup_mac/
|
|||||||
- **테마**: agnoster (멀티라인)
|
- **테마**: agnoster (멀티라인)
|
||||||
- **플러그인**: syntax-highlighting, autosuggestions
|
- **플러그인**: syntax-highlighting, autosuggestions
|
||||||
|
|
||||||
|
### Claude Code
|
||||||
|
- **CLI**: `npm install -g @anthropic-ai/claude-code` 로 자동 설치
|
||||||
|
- **VSCode 확장**: `code --install-extension` 으로 자동 설치
|
||||||
|
- 최초 실행 시 Anthropic API 키 설정 필요
|
||||||
|
|
||||||
### Stats 설정
|
### Stats 설정
|
||||||
- 자동으로 사용자 정의 설정 적용
|
- 자동으로 사용자 정의 설정 적용
|
||||||
- 메뉴바 위젯 자동 구성
|
- 메뉴바 위젯 자동 구성
|
||||||
@@ -154,6 +162,11 @@ git push
|
|||||||
- [ ] Syntax highlighting 작동 확인
|
- [ ] Syntax highlighting 작동 확인
|
||||||
- [ ] Autosuggestions 작동 확인
|
- [ ] Autosuggestions 작동 확인
|
||||||
|
|
||||||
|
### Claude Code 확인
|
||||||
|
- [ ] `claude --version` → 버전 출력 확인
|
||||||
|
- [ ] `claude` → 최초 실행 시 API 키 설정
|
||||||
|
- [ ] VSCode Extensions (⌘⇧X) → Claude 확장 설치 확인
|
||||||
|
|
||||||
## 🛠️ 문제 해결
|
## 🛠️ 문제 해결
|
||||||
|
|
||||||
### iTerm2 프로파일이 적용되지 않는 경우
|
### iTerm2 프로파일이 적용되지 않는 경우
|
||||||
@@ -186,6 +199,27 @@ cp ~/.zshrc.backup_YYYYMMDD_HHMMSS ~/.zshrc
|
|||||||
exec zsh
|
exec zsh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Claude Code CLI가 동작하지 않는 경우
|
||||||
|
```bash
|
||||||
|
# Node.js 확인
|
||||||
|
node --version
|
||||||
|
|
||||||
|
# Claude Code 재설치
|
||||||
|
npm install -g @anthropic-ai/claude-code
|
||||||
|
|
||||||
|
# API 키 재설정
|
||||||
|
claude config
|
||||||
|
```
|
||||||
|
|
||||||
|
### VSCode Claude 확장이 설치되지 않는 경우
|
||||||
|
```bash
|
||||||
|
# code 명령 설치 (VSCode 실행 후)
|
||||||
|
# ⌘⇧P → 'Shell Command: Install code command in PATH'
|
||||||
|
|
||||||
|
# 확장 수동 설치
|
||||||
|
code --install-extension anthropic.claude-code
|
||||||
|
```
|
||||||
|
|
||||||
### 폰트가 표시되지 않는 경우
|
### 폰트가 표시되지 않는 경우
|
||||||
```bash
|
```bash
|
||||||
# 폰트 재설치
|
# 폰트 재설치
|
||||||
@@ -220,7 +254,10 @@ git pull
|
|||||||
- [Homebrew](https://brew.sh/)
|
- [Homebrew](https://brew.sh/)
|
||||||
- [iTerm2](https://iterm2.com/)
|
- [iTerm2](https://iterm2.com/)
|
||||||
- [Oh My Zsh](https://ohmyz.sh/)
|
- [Oh My Zsh](https://ohmyz.sh/)
|
||||||
|
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code)
|
||||||
|
- [VSCode](https://code.visualstudio.com/)
|
||||||
- [Stats](https://github.com/exelban/stats)
|
- [Stats](https://github.com/exelban/stats)
|
||||||
|
- [Rectangle](https://rectangleapp.com/)
|
||||||
- [D2Coding Font](https://github.com/naver/d2codingfont)
|
- [D2Coding Font](https://github.com/naver/d2codingfont)
|
||||||
|
|
||||||
## 💡 팁
|
## 💡 팁
|
||||||
@@ -239,11 +276,9 @@ chmod +x setup_mac.sh
|
|||||||
|
|
||||||
### 정기적인 설정 백업
|
### 정기적인 설정 백업
|
||||||
```bash
|
```bash
|
||||||
# crontab으로 자동 백업 (선택사항)
|
# 매주 일요일 오후 6시에 설정 백업 (선택사항)
|
||||||
crontab -e
|
# crontab -e 후 아래 줄 추가:
|
||||||
|
0 18 * * 0 cd ~/workspace/nad4/setup_mac && ./save_configs.sh --auto
|
||||||
# 매주 일요일 오후 6시에 설정 백업
|
|
||||||
0 18 * * 0 cd ~/workspace/nad4/setup_mac && cp ~/Library/Preferences/eu.exelban.Stats.plist stats-settings/Stats.plist && git add . && git commit -m "Auto backup: $(date)" && git push
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📝 라이선스
|
## 📝 라이선스
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
ITERM_SETTINGS_DIR="$SCRIPT_DIR/iterm2-settings"
|
ITERM_SETTINGS_DIR="$SCRIPT_DIR/iterm2-settings"
|
||||||
STATS_SETTINGS_DIR="$SCRIPT_DIR/stats-settings"
|
STATS_SETTINGS_DIR="$SCRIPT_DIR/stats-settings"
|
||||||
|
RECTANGLE_SETTINGS_DIR="$SCRIPT_DIR/rectangle-settings"
|
||||||
|
|
||||||
echo "📦 현재 설정을 저장합니다..."
|
echo "📦 현재 설정을 저장합니다..."
|
||||||
echo ""
|
echo ""
|
||||||
@@ -34,6 +35,7 @@ echo ""
|
|||||||
# Stats 설정 저장
|
# Stats 설정 저장
|
||||||
if [ -f "$HOME/Library/Preferences/eu.exelban.Stats.plist" ]; then
|
if [ -f "$HOME/Library/Preferences/eu.exelban.Stats.plist" ]; then
|
||||||
echo "📊 Stats 설정 저장 중..."
|
echo "📊 Stats 설정 저장 중..."
|
||||||
|
mkdir -p "$STATS_SETTINGS_DIR"
|
||||||
cp "$HOME/Library/Preferences/eu.exelban.Stats.plist" \
|
cp "$HOME/Library/Preferences/eu.exelban.Stats.plist" \
|
||||||
"$STATS_SETTINGS_DIR/Stats.plist"
|
"$STATS_SETTINGS_DIR/Stats.plist"
|
||||||
echo "✅ Stats 설정 저장 완료"
|
echo "✅ Stats 설정 저장 완료"
|
||||||
|
|||||||
+106
-52
@@ -3,7 +3,7 @@
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
# Mac 초기 개발 환경 설정 스크립트
|
# Mac 초기 개발 환경 설정 스크립트
|
||||||
# 작성자: NAD4
|
# 작성자: NAD4
|
||||||
# 설명: Homebrew, iTerm2, Oh My Zsh, 필수 앱 자동 설치 및 설정
|
# 설명: Homebrew, iTerm2, Oh My Zsh, Claude Code, VSCode, 필수 앱 자동 설치 및 설정
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
set -e # 에러 발생 시 스크립트 중단
|
set -e # 에러 발생 시 스크립트 중단
|
||||||
@@ -16,6 +16,7 @@ RECTANGLE_SETTINGS_DIR="$SCRIPT_DIR/rectangle-settings"
|
|||||||
ITERM_PROFILE_FILE="$ITERM_SETTINGS_DIR/profile.json"
|
ITERM_PROFILE_FILE="$ITERM_SETTINGS_DIR/profile.json"
|
||||||
STATS_PLIST_FILE="$STATS_SETTINGS_DIR/Stats.plist"
|
STATS_PLIST_FILE="$STATS_SETTINGS_DIR/Stats.plist"
|
||||||
RECTANGLE_PLIST_FILE="$RECTANGLE_SETTINGS_DIR/com.knollsoft.Rectangle.plist"
|
RECTANGLE_PLIST_FILE="$RECTANGLE_SETTINGS_DIR/com.knollsoft.Rectangle.plist"
|
||||||
|
RECTANGLE_JSON_FILE="$RECTANGLE_SETTINGS_DIR/RectangleConfig.json"
|
||||||
|
|
||||||
echo "🚀 Mac 초기 개발 환경 설정을 시작합니다..."
|
echo "🚀 Mac 초기 개발 환경 설정을 시작합니다..."
|
||||||
echo "📂 스크립트 위치: $SCRIPT_DIR"
|
echo "📂 스크립트 위치: $SCRIPT_DIR"
|
||||||
@@ -122,6 +123,7 @@ echo "🖥️ GUI 애플리케이션 설치 중..."
|
|||||||
# 설치할 앱 목록
|
# 설치할 앱 목록
|
||||||
APPS=(
|
APPS=(
|
||||||
"tunnelblick"
|
"tunnelblick"
|
||||||
|
"visual-studio-code"
|
||||||
"cursor"
|
"cursor"
|
||||||
"notion"
|
"notion"
|
||||||
"discord"
|
"discord"
|
||||||
@@ -146,7 +148,59 @@ done
|
|||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# 7. .zshrc 설정
|
# 7. Node.js & Claude Code CLI 설치
|
||||||
|
# =============================================================================
|
||||||
|
echo "🤖 Node.js & Claude Code 설치 중..."
|
||||||
|
|
||||||
|
# Node.js
|
||||||
|
if brew list node &> /dev/null; then
|
||||||
|
echo "✅ Node.js 이미 설치됨"
|
||||||
|
else
|
||||||
|
brew install node
|
||||||
|
echo "✅ Node.js 설치 완료"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Claude Code CLI
|
||||||
|
if command -v claude &> /dev/null; then
|
||||||
|
echo "✅ Claude Code CLI 이미 설치됨"
|
||||||
|
else
|
||||||
|
npm install -g @anthropic-ai/claude-code
|
||||||
|
echo "✅ Claude Code CLI 설치 완료"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 8. VSCode 확장 설치
|
||||||
|
# =============================================================================
|
||||||
|
echo "🔌 VSCode 확장 설치 중..."
|
||||||
|
|
||||||
|
# VSCode code CLI 경로 확인
|
||||||
|
CODE_CMD=""
|
||||||
|
if command -v code &> /dev/null; then
|
||||||
|
CODE_CMD="code"
|
||||||
|
elif [ -f "/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code" ]; then
|
||||||
|
CODE_CMD="/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$CODE_CMD" ]; then
|
||||||
|
# Claude for VSCode 확장 설치
|
||||||
|
if "$CODE_CMD" --install-extension anthropic.claude-code 2>/dev/null; then
|
||||||
|
echo "✅ Claude for VSCode 확장 설치 완료"
|
||||||
|
else
|
||||||
|
echo "⚠️ Claude 확장 자동 설치 실패"
|
||||||
|
echo " VSCode에서 수동 설치: Extensions (⌘⇧X) → 'Claude' 검색"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "⚠️ VSCode code 명령을 찾을 수 없습니다."
|
||||||
|
echo " VSCode 실행 후: ⌘⇧P → 'Shell Command: Install code command in PATH'"
|
||||||
|
echo " 이후 Extensions에서 'Claude' 확장을 수동 설치해주세요."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 9. .zshrc 설정
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
echo "🎨 ZSH 설정 파일 구성 중..."
|
echo "🎨 ZSH 설정 파일 구성 중..."
|
||||||
|
|
||||||
@@ -231,14 +285,16 @@ build_prompt() {
|
|||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# ZSH 플러그인 source 추가 (중복 체크)
|
# ZSH 플러그인 source 추가 (중복 체크, Apple Silicon/Intel 자동 감지)
|
||||||
SYNTAX_LINE='source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh'
|
BREW_PREFIX="$(brew --prefix)"
|
||||||
if ! grep -qxF "$SYNTAX_LINE" ~/.zshrc; then
|
|
||||||
|
SYNTAX_LINE="source $BREW_PREFIX/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
|
||||||
|
if ! grep -q "zsh-syntax-highlighting.zsh" ~/.zshrc; then
|
||||||
echo "$SYNTAX_LINE" >> ~/.zshrc
|
echo "$SYNTAX_LINE" >> ~/.zshrc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
SUGGEST_LINE='source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh'
|
SUGGEST_LINE="source $BREW_PREFIX/share/zsh-autosuggestions/zsh-autosuggestions.zsh"
|
||||||
if ! grep -qxF "$SUGGEST_LINE" ~/.zshrc; then
|
if ! grep -q "zsh-autosuggestions.zsh" ~/.zshrc; then
|
||||||
echo "$SUGGEST_LINE" >> ~/.zshrc
|
echo "$SUGGEST_LINE" >> ~/.zshrc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -246,7 +302,7 @@ echo "✅ .zshrc 설정 완료"
|
|||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# 8. iTerm2 프로파일 설정
|
# 10. iTerm2 프로파일 설정
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
echo "⚙️ iTerm2 프로파일 설정 중..."
|
echo "⚙️ iTerm2 프로파일 설정 중..."
|
||||||
|
|
||||||
@@ -265,27 +321,18 @@ mkdir -p "$ITERM_DYNAMIC_DIR"
|
|||||||
if [ -f "$ITERM_PROFILE_FILE" ]; then
|
if [ -f "$ITERM_PROFILE_FILE" ]; then
|
||||||
echo "✅ profile.json 발견"
|
echo "✅ profile.json 발견"
|
||||||
|
|
||||||
# DynamicProfile 형식으로 변환하여 복사
|
# DynamicProfile 형식으로 변환하여 복사 (profile.json을 Profiles 배열로 래핑)
|
||||||
cat > "$ITERM_DYNAMIC_DIR/NAD4Profile.json" << 'DYNAMIC_WRAPPER'
|
|
||||||
{
|
{
|
||||||
"Profiles": [
|
echo '{"Profiles": ['
|
||||||
DYNAMIC_WRAPPER
|
cat "$ITERM_PROFILE_FILE"
|
||||||
|
echo ']}'
|
||||||
# 기존 프로파일 내용 추가 (마지막 } 제거)
|
} > "$ITERM_DYNAMIC_DIR/NAD4Profile.json"
|
||||||
cat "$ITERM_PROFILE_FILE" | sed '$ d' >> "$ITERM_DYNAMIC_DIR/NAD4Profile.json"
|
|
||||||
|
|
||||||
# 래퍼 종료
|
|
||||||
cat >> "$ITERM_DYNAMIC_DIR/NAD4Profile.json" << 'DYNAMIC_WRAPPER'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
DYNAMIC_WRAPPER
|
|
||||||
|
|
||||||
echo "✅ iTerm2 Dynamic Profile 생성 완료"
|
echo "✅ iTerm2 Dynamic Profile 생성 완료"
|
||||||
echo " 위치: $ITERM_DYNAMIC_DIR/NAD4Profile.json"
|
echo " 위치: $ITERM_DYNAMIC_DIR/NAD4Profile.json"
|
||||||
|
|
||||||
# profile.json에서 GUID 추출
|
# profile.json에서 GUID 추출 (공백 유무 무관)
|
||||||
PROFILE_GUID=$(grep -o '"Guid" : "[^"]*"' "$ITERM_PROFILE_FILE" | sed 's/"Guid" : "\(.*\)"/\1/')
|
PROFILE_GUID=$(grep -o '"Guid"[[:space:]]*:[[:space:]]*"[^"]*"' "$ITERM_PROFILE_FILE" | head -1 | sed 's/.*:.*"\([^"]*\)"/\1/')
|
||||||
|
|
||||||
if [ -n "$PROFILE_GUID" ]; then
|
if [ -n "$PROFILE_GUID" ]; then
|
||||||
echo "✅ 프로파일 GUID: $PROFILE_GUID"
|
echo "✅ 프로파일 GUID: $PROFILE_GUID"
|
||||||
@@ -302,18 +349,11 @@ else
|
|||||||
echo "⚠️ $ITERM_PROFILE_FILE 파일을 찾을 수 없습니다."
|
echo "⚠️ $ITERM_PROFILE_FILE 파일을 찾을 수 없습니다."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# iTerm2 재시작 (번들 ID 사용)
|
# iTerm2 재시작
|
||||||
echo "🔄 iTerm2 시작 중..."
|
echo "🔄 iTerm2 시작 중..."
|
||||||
sleep 1
|
sleep 1
|
||||||
|
if open -a iTerm 2>/dev/null; then
|
||||||
# iTerm2 실행 (여러 방법 시도)
|
|
||||||
if [ -d "/Applications/iTerm.app" ]; then
|
|
||||||
open -a /Applications/iTerm.app
|
|
||||||
echo "✅ iTerm2 시작 완료"
|
echo "✅ iTerm2 시작 완료"
|
||||||
elif command -v open &> /dev/null; then
|
|
||||||
open -b com.googlecode.iterm2 2>/dev/null || \
|
|
||||||
open /Applications/iTerm.app 2>/dev/null || \
|
|
||||||
echo "⚠️ iTerm2를 수동으로 실행해주세요"
|
|
||||||
else
|
else
|
||||||
echo "⚠️ iTerm2를 수동으로 실행해주세요"
|
echo "⚠️ iTerm2를 수동으로 실행해주세요"
|
||||||
fi
|
fi
|
||||||
@@ -321,7 +361,7 @@ fi
|
|||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# 9. Stats 앱 설정
|
# 11. Stats 앱 설정
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
echo "📊 Stats 앱 설정 중..."
|
echo "📊 Stats 앱 설정 중..."
|
||||||
|
|
||||||
@@ -373,7 +413,7 @@ fi
|
|||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# 10. Rectangle 앱 설정
|
# 12. Rectangle 앱 설정
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
echo "📐 Rectangle 앱 설정 중..."
|
echo "📐 Rectangle 앱 설정 중..."
|
||||||
|
|
||||||
@@ -388,24 +428,34 @@ if [ -d "/Applications/Rectangle.app" ]; then
|
|||||||
sleep 2
|
sleep 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Rectangle 설정 파일 확인
|
# Rectangle 설정 파일 확인 (plist 우선, JSON 폴백)
|
||||||
if [ -f "$RECTANGLE_PLIST_FILE" ]; then
|
|
||||||
echo "✅ Rectangle.plist 발견"
|
|
||||||
|
|
||||||
# Rectangle 설정 파일 백업
|
|
||||||
RECTANGLE_PREF_FILE="$HOME/Library/Preferences/com.knollsoft.Rectangle.plist"
|
RECTANGLE_PREF_FILE="$HOME/Library/Preferences/com.knollsoft.Rectangle.plist"
|
||||||
|
|
||||||
|
if [ -f "$RECTANGLE_PLIST_FILE" ] || [ -f "$RECTANGLE_JSON_FILE" ]; then
|
||||||
|
# 기존 설정 백업
|
||||||
if [ -f "$RECTANGLE_PREF_FILE" ]; then
|
if [ -f "$RECTANGLE_PREF_FILE" ]; then
|
||||||
RECTANGLE_BACKUP="$RECTANGLE_PREF_FILE.backup_$(date +%Y%m%d_%H%M%S)"
|
RECTANGLE_BACKUP="$RECTANGLE_PREF_FILE.backup_$(date +%Y%m%d_%H%M%S)"
|
||||||
cp "$RECTANGLE_PREF_FILE" "$RECTANGLE_BACKUP"
|
cp "$RECTANGLE_PREF_FILE" "$RECTANGLE_BACKUP"
|
||||||
echo "✅ 기존 Rectangle 설정 백업: $RECTANGLE_BACKUP"
|
echo "✅ 기존 Rectangle 설정 백업: $RECTANGLE_BACKUP"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 새 설정 적용
|
if [ -f "$RECTANGLE_PLIST_FILE" ]; then
|
||||||
|
# plist 파일이 있으면 직접 복사
|
||||||
|
echo "✅ Rectangle.plist 발견"
|
||||||
cp "$RECTANGLE_PLIST_FILE" "$RECTANGLE_PREF_FILE"
|
cp "$RECTANGLE_PLIST_FILE" "$RECTANGLE_PREF_FILE"
|
||||||
echo "✅ Rectangle 설정 적용 완료"
|
|
||||||
|
|
||||||
# 설정 파일 권한 설정
|
|
||||||
chmod 644 "$RECTANGLE_PREF_FILE"
|
chmod 644 "$RECTANGLE_PREF_FILE"
|
||||||
|
echo "✅ Rectangle 설정 적용 완료 (plist)"
|
||||||
|
elif [ -f "$RECTANGLE_JSON_FILE" ]; then
|
||||||
|
# JSON 파일만 있으면 plutil로 변환 후 적용
|
||||||
|
echo "✅ RectangleConfig.json 발견"
|
||||||
|
if plutil -convert binary1 -o "$RECTANGLE_PREF_FILE" "$RECTANGLE_JSON_FILE" 2>/dev/null; then
|
||||||
|
chmod 644 "$RECTANGLE_PREF_FILE"
|
||||||
|
echo "✅ Rectangle 설정 적용 완료 (JSON → plist 변환)"
|
||||||
|
else
|
||||||
|
echo "⚠️ JSON 변환 실패. Rectangle을 실행 후 수동으로 설정을 import 해주세요."
|
||||||
|
echo " Rectangle > Preferences > Import (${RECTANGLE_JSON_FILE})"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Rectangle 재시작
|
# Rectangle 재시작
|
||||||
echo "🔄 Rectangle 재시작 중..."
|
echo "🔄 Rectangle 재시작 중..."
|
||||||
@@ -414,17 +464,11 @@ if [ -d "/Applications/Rectangle.app" ]; then
|
|||||||
echo "✅ Rectangle 시작 완료"
|
echo "✅ Rectangle 시작 완료"
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "⚠️ $RECTANGLE_PLIST_FILE 파일을 찾을 수 없습니다."
|
echo "⚠️ Rectangle 설정 파일을 찾을 수 없습니다."
|
||||||
echo " Rectangle을 실행하고 설정을 구성해주세요."
|
echo " Rectangle을 실행하고 설정을 구성해주세요."
|
||||||
echo ""
|
|
||||||
echo " Rectangle 기본 설정 생성 중..."
|
|
||||||
|
|
||||||
# Rectangle 실행 (초기 설정 생성)
|
|
||||||
open -a Rectangle
|
open -a Rectangle
|
||||||
sleep 3
|
sleep 3
|
||||||
|
|
||||||
echo "✅ Rectangle 초기 실행 완료"
|
echo "✅ Rectangle 초기 실행 완료"
|
||||||
echo " Preferences에서 키보드 단축키를 설정하세요."
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
@@ -477,13 +521,23 @@ echo " ⌃⌥→ : 오른쪽 절반 ⌃⌥← : 왼쪽 절반"
|
|||||||
echo " ⌃⌥↑ : 최대화 ⌃⌥↓ : 하단 정렬"
|
echo " ⌃⌥↑ : 최대화 ⌃⌥↓ : 하단 정렬"
|
||||||
echo " ⌃⌥F : 전체 화면 ⌃⌥C : 가운데"
|
echo " ⌃⌥F : 전체 화면 ⌃⌥C : 가운데"
|
||||||
echo ""
|
echo ""
|
||||||
echo " 7️⃣ AppCleaner 사용법:"
|
echo " 7️⃣ Claude Code 확인:"
|
||||||
|
echo " claude --version # → 버전 확인"
|
||||||
|
echo " claude # → Claude Code 실행"
|
||||||
|
echo " ※ 최초 실행 시 API 키 설정 필요"
|
||||||
|
echo ""
|
||||||
|
echo " 8️⃣ VSCode Claude 확장 확인:"
|
||||||
|
echo " VSCode 실행 → Extensions (⌘⇧X) → 'Claude' 설치 확인"
|
||||||
|
echo ""
|
||||||
|
echo " 9️⃣ AppCleaner 사용법:"
|
||||||
echo " - Applications 폴더에서 AppCleaner 실행"
|
echo " - Applications 폴더에서 AppCleaner 실행"
|
||||||
echo " - 앱 삭제 시 관련 파일까지 자동 정리"
|
echo " - 앱 삭제 시 관련 파일까지 자동 정리"
|
||||||
echo " - 추천: Dock에 추가하여 사용"
|
echo " - 추천: Dock에 추가하여 사용"
|
||||||
echo ""
|
echo ""
|
||||||
echo "💡 설치된 앱 목록:"
|
echo "💡 설치된 앱 목록:"
|
||||||
echo " ✅ iTerm2 (터미널)"
|
echo " ✅ iTerm2 (터미널)"
|
||||||
|
echo " ✅ VSCode + Claude 확장"
|
||||||
|
echo " ✅ Claude Code CLI"
|
||||||
echo " ✅ Stats (시스템 모니터)"
|
echo " ✅ Stats (시스템 모니터)"
|
||||||
echo " ✅ Rectangle (윈도우 관리)"
|
echo " ✅ Rectangle (윈도우 관리)"
|
||||||
echo " ✅ AppCleaner (앱 제거 도구)"
|
echo " ✅ AppCleaner (앱 제거 도구)"
|
||||||
|
|||||||
Reference in New Issue
Block a user